forked from therion/therion
-
Notifications
You must be signed in to change notification settings - Fork 0
166 lines (163 loc) · 8.81 KB
/
cmake.yml
File metadata and controls
166 lines (163 loc) · 8.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
name: CMake
on: [push, pull_request]
jobs:
Ubuntu:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- { os: ubuntu-22.04, toolchain: gcc.cmake, pkgs: "libwxgtk3.0-gtk3-dev libvtk9-dev", args: "-DUSE_BUNDLED_CATCH2=ON" }
- { os: ubuntu-22.04, toolchain: clang.cmake, pkgs: "catch2 libwxgtk3.0-gtk3-dev libvtk9-dev", args: "" }
- { os: ubuntu-24.04, toolchain: gcc.cmake, pkgs: "catch2 libwxgtk3.2-dev libvtk9-dev", args: "" }
- { os: ubuntu-24.04, toolchain: clang-sanitizers.cmake, pkgs: "catch2 libwxgtk3.2-dev libvtk9-dev", args: "" }
- { os: ubuntu-24.04, toolchain: clang.cmake, pkgs: "catch2 libwxgtk3.2-dev libvtk9-dev", args: "-DENABLE_CLANG_TIDY=ON -DCMAKE_BUILD_TYPE=Debug" }
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: |
sudo apt -qq update
sudo apt install -y ${{ matrix.pkgs }} texlive-binaries texlive-metapost libproj-dev libshp-dev survex imagemagick ghostscript ninja-build clang-tidy gettext libfmt-dev
- name: install additional texlive languages
if: matrix.os == 'ubuntu-24.04'
run: sudo apt install -y texlive-lang-czechslovak texlive-lang-cyrillic
- name: Configure CMake
run: |
mkdir build && cd build && \
cmake -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/${{ matrix.toolchain }} \
-DCMAKE_C_FLAGS="-Werror" \
-DCMAKE_CXX_FLAGS="-Werror" \
-DUSE_BUNDLED_SHAPELIB=OFF \
${{ matrix.args }} ..
- run: cmake --build build
- run: cmake --build build -t test
- name: Run samples
if: matrix.os == 'ubuntu-24.04'
run: cmake --build build -t samples-verify-crc -- -j 4
- run: cmake --build build -t samples-verify-ref -- -j 4
- uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-24.04' && always()
with:
name: samples-${{ matrix.os }}-${{ matrix.toolchain }}
path: build/samples/
- name: Install
run: sudo cmake --build build -t install
macOS:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-14, macos-15]
steps:
- uses: actions/checkout@v4
- name: install dependencies
run: |
find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete -print
brew unlink python && brew link --overwrite python
brew update # try to comment out in case of package problems
brew install wxwidgets vtk proj xquartz ninja basictex fmt catch2 imagemagick
- name: Configure CMake
run: |
mkdir build && cd build && cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/sanitizers.cmake -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror" -DOPENGL_gl_LIBRARY:FILEPATH=/opt/X11/lib/libGL.dylib -DOPENGL_glu_LIBRARY:FILEPATH=/opt/X11/lib/libGLU.dylib -DBUILD_THBOOK=OFF ..
- run: cmake --build build -t therion loch utest
- run: cmake --build build -t test
- name: Run samples
run: |
eval "$(/usr/libexec/path_helper)"
sudo tlmgr update --self
sudo tlmgr install collection-langcyrillic
sudo tlmgr install collection-langczechslovak
cmake --build build -t samples-verify-crc -- -j 4
cmake --build build -t samples-verify-ref -- -j 4
- uses: actions/upload-artifact@v4
if: always()
with:
name: samples-${{ matrix.os }}
path: build/samples/
- name: Install
run: sudo cmake --build build -t install
Windows:
runs-on: windows-latest
strategy:
matrix:
config:
- { msystem: UCRT64, arch: ucrt-x86_64, args: "" }
- { msystem: CLANG64, arch: clang-x86_64, args: "-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/sanitizers.cmake -DENABLE_PROJ_CMAKE=ON" }
defaults:
run:
shell: msys2 {0}
env:
THDIR: d:/a/therion
PROJ_LIB: d:/a/therion/proj-lib
steps:
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.config.msystem }}
update: true
install: >
make
git
python
diffutils
mingw-w64-${{ matrix.config.arch }}-freetype
mingw-w64-${{ matrix.config.arch }}-cmake
mingw-w64-${{ matrix.config.arch }}-proj
mingw-w64-${{ matrix.config.arch }}-shapelib
mingw-w64-${{ matrix.config.arch }}-vtk
mingw-w64-${{ matrix.config.arch }}-wxWidgets3.2
mingw-w64-${{ matrix.config.arch }}-gcc
mingw-w64-${{ matrix.config.arch }}-make
mingw-w64-${{ matrix.config.arch }}-bwidget
mingw-w64-${{ matrix.config.arch }}-fmt
mingw-w64-${{ matrix.config.arch }}-catch
- run: mkdir build && cd build && cmake -G "MSYS Makefiles" -DCMAKE_CXX_FLAGS="-Werror" -DBUILD_THBOOK=OFF ${{ matrix.config.args }} ..
- run: cmake --build build -t therion loch utest -- -j 4
- name: Set up the batteries
run: |
mkdir -p $HOME/.therion
echo -e "mpost-path ${THDIR}/therion-batteries/bin/windows/mpost.exe\npdftex-path ${THDIR}/therion-batteries/bin/windows/pdftex.exe\nidentify-path ${THDIR}/therion-batteries/bin/identify.exe\nconvert-path ${THDIR}/therion-batteries/bin/convert.exe\n" > $HOME/.therion/therion.ini
wget -qO - https://github.com/therion/therion-batteries/archive/master.tar.gz | tar -xzf - && mv therion-batteries-master ../therion-batteries
mkdir -p ../proj-lib && cp -r ../therion-batteries/_proj/{proj-$(awk -F "=" '/version/{print $2}' build/innosetup.ini),proj-datumgrid}/. ../proj-lib
- run: cmake --build build -t test
- run: cmake --build build -t samples-verify-crc -- -j 4
- run: cmake --build build -t samples-verify-ref -- -j 4
- uses: actions/upload-artifact@v4
if: always()
with:
name: samples-windows-${{ matrix.config.msystem }}
path: build/samples/
- run: cmake --build build -t deploy -- -j 4
# MXE:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# include:
# - { os: ubuntu-20.04, osname: focal, pkg: i686, cmd: i686, wine-pkg: wine32, wine: wine }
# - { os: ubuntu-20.04, osname: focal, pkg: x86-64, cmd: x86_64, wine-pkg: wine64, wine: wine64-stable }
# steps:
# - uses: actions/checkout@v4
# - name: install dependencies
# run: |
# sudo dpkg --add-architecture i386
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 86B72ED9
# sudo add-apt-repository 'deb [arch=amd64] https://mirror.mxe.cc/repos/apt ${{ matrix.osname }} main'
# sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
# sudo apt -qq update
# sudo apt install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
# sudo apt purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
# sudo apt install -y ${{ matrix.wine-pkg }}
# sudo apt install -y ninja-build
# sudo apt install -y mxe-${{ matrix.pkg }}-w64-mingw32.static-binutils mxe-${{ matrix.pkg }}-w64-mingw32.static-bzip2 mxe-${{ matrix.pkg }}-w64-mingw32.static-expat mxe-${{ matrix.pkg }}-w64-mingw32.static-freetype-bootstrap mxe-${{ matrix.pkg }}-w64-mingw32.static-gcc mxe-${{ matrix.pkg }}-w64-mingw32.static-gettext mxe-${{ matrix.pkg }}-w64-mingw32.static-glib mxe-${{ matrix.pkg }}-w64-mingw32.static-harfbuzz mxe-${{ matrix.pkg }}-w64-mingw32.static-jpeg \
# mxe-${{ matrix.pkg }}-w64-mingw32.static-libiconv mxe-${{ matrix.pkg }}-w64-mingw32.static-libpng mxe-${{ matrix.pkg }}-w64-mingw32.static-tiff mxe-${{ matrix.pkg }}-w64-mingw32.static-vtk mxe-${{ matrix.pkg }}-w64-mingw32.static-wxwidgets mxe-${{ matrix.pkg }}-w64-mingw32.static-xz mxe-${{ matrix.pkg }}-w64-mingw32.static-zlib mxe-${{ matrix.pkg }}-w64-mingw32.static-proj
# - name: run build
# run: |
# export PATH=/usr/lib/mxe/usr/bin:$PATH
# mkdir build && cd build
# ${{ matrix.cmd }}-w64-mingw32.static-cmake -G Ninja \
# -DMXE_USE_CCACHE=OFF \
# -DCMAKE_CROSSCOMPILING_EMULATOR=${{ matrix.wine }} \
# -DCMAKE_C_FLAGS="-Werror" \
# -DCMAKE_CXX_FLAGS="-Werror" \
# -DBUILD_SHARED_LIBS=OFF \
# -DBUILD_THBOOK=OFF ..
# ninja