name: 'MinedMap' on: ['push', 'pull_request', 'workflow_dispatch'] jobs: build: name: 'Build MinedMap (${{ matrix.host }})' runs-on: 'ubuntu-20.04' strategy: fail-fast: false matrix: host: - 'x86_64-linux-gnu' - 'x86_64-w64-mingw32' include: - host: 'x86_64-linux-gnu' label: 'x86_64-linux-gnu' packages: ['g++', 'libpng-dev'] prefix: '/usr' build_libpng: false - host: 'x86_64-w64-mingw32' label: 'Win64' packages: ['g++-mingw-w64-x86-64', 'libz-mingw-w64-dev'] prefix: '/usr/x86_64-w64-mingw32' build_libpng: true - host: 'i686-w64-mingw32' label: 'Win32' packages: ['g++-mingw-w64-i686', 'libz-mingw-w64-dev'] prefix: '/usr/i686-w64-mingw32' build_libpng: true env: CMAKE_TOOLCHAIN_FILE: '${{ github.workspace }}/.github/toolchains/${{ matrix.host }}.cmake' steps: - name: 'Checkout' uses: 'actions/checkout@v3' - name: 'Get version' id: 'tag' run: | set -o pipefail git fetch --prune --unshallow --tags -f echo "tag=$(git describe --abbrev=7 --match='v*' | sed 's/^v//')" >> $GITHUB_OUTPUT - name: 'Dependencies (apt)' run: | sudo apt-get -y update sudo apt-get -y install ninja-build ${{ join(matrix.packages, ' ') }} sudo apt-get -y clean - name: 'Dependencies (libpng)' if: '${{ matrix.build_libpng }}' run: | pkgver=1.6.37 pkghash=505e70834d35383537b6491e7ae8641f1a4bed1876dbfe361201fc80868d88ca mkdir -p build/libpng cd build/libpng wget http://downloads.sourceforge.net/sourceforge/libpng/libpng-$pkgver.tar.xz echo "$pkghash libpng-$pkgver.tar.xz" | sha256sum -c - tar xf libpng-$pkgver.tar.xz cd libpng-$pkgver ./configure \ --prefix=${{ matrix.prefix }} \ --host=${{ matrix.host }} \ --disable-shared make -j$(nproc) sudo make install sudo rm ${{ matrix.prefix }}/lib/libpng*.la - name: 'Build' uses: lukka/run-cmake@v10 with: configurePreset: 'ninja' buildPreset: 'ninja-release' - name: 'Install' run: | export DESTDIR="$(pwd)/build/install" ninja -C builds/ninja -f build-RelWithDebInfo.ninja install/strip pkgdir='build/pkg/MinedMap-${{ steps.tag.outputs.tag }}-${{ matrix.label }}' mkdir -p "$pkgdir" cp "$DESTDIR/usr/local/bin"/* "$pkgdir"/ - name: 'Archive' uses: 'actions/upload-artifact@v3' with: name: 'MinedMap-${{ steps.tag.outputs.tag }}-${{ matrix.label }}' path: 'build/pkg' viewer: name: 'Package viewer' runs-on: 'ubuntu-20.04' steps: - name: 'Checkout' uses: 'actions/checkout@v3' - name: 'Get version' id: 'tag' run: | set -o pipefail git fetch --prune --unshallow --tags -f echo "tag=$(git describe --abbrev=7 --match='v*' | sed 's/^v//')" >> $GITHUB_OUTPUT - name: 'Install' run: | pkgdir='build/pkg/MinedMap-${{ steps.tag.outputs.tag }}-viewer' mkdir -p "$pkgdir" cp -r viewer/* "$pkgdir"/ - name: 'Archive' uses: 'actions/upload-artifact@v3' with: name: 'MinedMap-${{ steps.tag.outputs.tag }}-viewer' path: 'build/pkg'