diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index a234824..30f279b 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -4,8 +4,17 @@ name: Build jobs: build: - name: Build + name: Build (${{ matrix.target }}) runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - target: linux + pack_ext: tar.gz + - target: windows + pack_ext: zip + steps: - name: Checkout uses: actions/checkout@v5 @@ -23,59 +32,96 @@ jobs: - name: Apt update run: sudo apt update - - name: Installing build chain + - name: Installing build chain (Linux) + if: matrix.target == 'linux' run: sudo apt-get install pigz ninja-build g++ clang pkg-config cmake libtbb-dev - g++-mingw-w64-x86-64 -y; + -y + + - name: Installing build chain (Windows Cross-Compile) + if: matrix.target == 'windows' + run: sudo apt-get install pigz ninja-build g++-mingw-w64-x86-64 cmake -y - name: Cache CPM uses: actions/cache@v5 with: path: "~/.cache/CPM/" - key: ${{ runner.os }}-CPM + key: ${{ runner.os }}-${{ matrix.target }}-CPM - name: Configure debug - run: mkdir -p build; mkdir -p build/debug; cd build/debug; - CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja - -DCMAKE_BUILD_TYPE=Debug; + run: | + mkdir -p build/debug + cd build/debug + if [ "${{ matrix.target }}" = "windows" ]; then + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc + else + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=Debug + fi - name: Configure Release - run: mkdir -p build; mkdir -p build/release; cd build/release; - CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja - -DCMAKE_BUILD_TYPE=Release; + run: | + mkdir -p build/release + cd build/release + if [ "${{ matrix.target }}" = "windows" ]; then + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc + fi + if [ "${{ matrix.target }}" = "linux" ]; then + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=Release + fi - name: Configure MinSizeRel - run: mkdir -p build; mkdir -p build/minsizerel; cd build/minsizerel; - CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja - -DCMAKE_BUILD_TYPE=MinSizeRel; + run: | + mkdir -p build/minsizerel + cd build/minsizerel + if [ "${{ matrix.target }}" = "windows" ]; then + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc + else + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=MinSizeRel + fi - name: Configure RelWithDeb - run: mkdir -p build; mkdir -p build/relwithdeb; cd build/relwithdeb; - CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja - -DCMAKE_BUILD_TYPE=RelWithDeb; + run: | + mkdir -p build/relwithdeb + cd build/relwithdeb + if [ "${{ matrix.target }}" = "windows" ]; then + CPM_SOURCE_CACHE="~/.cache/CPM/" cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=RelWithDeb -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc + else + CPM_SOURCE_CACHE="~/.cache/CPM/"cmake ../../ -G Ninja -DCMAKE_BUILD_TYPE=RelWithDeb + fi - name: Build debug - run: cd build/debug; ninja; + run: cd build/debug && ninja - name: Build Release - run: cd build/release; ninja; + run: cd build/release && ninja - name: Build RelWithDeb - run: cd build/relwithdeb; ninja; + run: cd build/relwithdeb && ninja - name: Build MinSizeRel - run: cd build/minsizerel; ninja; + run: cd build/minsizerel && ninja - - name: Packaging - run: |- - tar -I 'pigz -9' -cf buildscript-debug-amd64.tar.gz --transform 's,^,build-script/,' build/debug LICENSE; - tar -I 'pigz -9' -cf buildscript-release-amd64.tar.gz --transform 's,^,build-script/,' build/release LICENSE; - tar -I 'pigz -9' -cf buildscript-relwithdeb-amd64.tar.gz --transform 's,^,build-script/,' build/relwithdeb LICENSE; - tar -I 'pigz -9' -cf buildscript-minsizerel-amd64.tar.gz --transform 's,^,build-script/,' build/minsizerel LICENSE; + - name: Packaging Linux + if: matrix.target == 'linux' + run: | + tar -I 'pigz -9' -cf buildscript-debug-amd64.tar.gz --transform 's,^,build-script/,' build/debug LICENSE + tar -I 'pigz -9' -cf buildscript-release-amd64.tar.gz --transform 's,^,build-script/,' build/release LICENSE + tar -I 'pigz -9' -cf buildscript-relwithdeb-amd64.tar.gz --transform 's,^,build-script/,' build/relwithdeb LICENSE + tar -I 'pigz -9' -cf buildscript-minsizerel-amd64.tar.gz --transform 's,^,build-script/,' build/minsizerel LICENSE - - uses: akkuman/gitea-release-action@v1 + - name: Packaging Windows + if: matrix.target == 'windows' + run: | + sudo apt-get install zip -y + zip -r9 buildscript-debug-x64.zip build/debug LICENSE + zip -r9 buildscript-release-x64.zip build/release LICENSE + zip -r9 buildscript-relwithdeb-x64.zip build/relwithdeb LICENSE + zip -r9 buildscript-minsizerel-x64.zip build/minsizerel LICENSE + + - name: Upload Release Assets + uses: akkuman/gitea-release-action@v1 with: files: |- - buildscript-debug-amd64.tar.gz - buildscript-release-amd64.tar.gz - buildscript-relwithdeb-amd64.tar.gz - buildscript-minsizerel-amd64.tar.gz + buildscript-debug-*.${{ matrix.pack_ext }} + buildscript-release-*.${{ matrix.pack_ext }} + buildscript-relwithdeb-*.${{ matrix.pack_ext }} + buildscript-minsizerel-*.${{ matrix.pack_ext }}