extern template fmt::vfprintf<char> #528
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CMake | |
on: [push, pull_request] | |
jobs: | |
Ubuntu: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- { os: ubuntu-20.04, toolchain: gcc.cmake, pkgs: "libwxgtk3.0-gtk3-dev libvtk7-dev", args: "-DUSE_BUNDLED_CATCH2=ON" } | |
- { os: ubuntu-22.04, toolchain: clang-sanitizers.cmake, pkgs: "catch2 libwxgtk3.0-gtk3-dev libvtk9-dev", args: "" } | |
- { os: ubuntu-22.04, toolchain: gcc.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: "-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.toolchain == 'clang-sanitizers.cmake' | |
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.toolchain == 'clang-sanitizers.cmake' | |
run: cmake --build build -t samples-verify-crc | |
- uses: actions/upload-artifact@v4 | |
if: matrix.toolchain == 'clang-sanitizers.cmake' && 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-12, macos-13, macos-14] | |
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 | |
- 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-build | |
- 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: MINGW64, arch: x86_64, args: "-DCMAKE_C_FLAGS=-Werror -DCMAKE_CXX_FLAGS=-Werror" } | |
- { 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 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" -DBUILD_THBOOK=OFF ${{ matrix.config.args }} .. | |
- run: cmake --build build -t therion loch utest -- -j 4 | |
- name: Build samples | |
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 | |
cmake --build build -t samples-build -- -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 |