diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 22325dc..8b1201e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,14 +7,14 @@ env: BUILD_TYPE: Release jobs: - build: + windows: name: ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [windows-2019, windows-2022, macos-12, macos-14, ubuntu-latest] - # arch: [x86, x64] + os: [windows-2019, windows-2022] + arch: [x86, x64] steps: - name: Checkout repository @@ -31,4 +31,71 @@ jobs: - name: Test working-directory: ${{github.workspace}}/build - run: ctest -C RELEASE -V \ No newline at end of file + run: ctest -C RELEASE -V + + mac: + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [macos-13, macos-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + run: ctest -C RELEASE -V + + linux: + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ ubuntu-24.04] + arch: [x86_64, aarch64] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx for Multi-arch Builds + uses: docker/setup-buildx-action@v2 + + - name: Install QEMU for Multi-arch Emulation + uses: docker/setup-qemu-action@v2 + with: + platforms: all + + - name: Set up Docker Image + run: | + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build --platform=linux/${{ matrix.arch }} -t my-cpp-build-env:$GITHUB_SHA -f Dockerfile.${{ matrix.os }} . + + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Run CMake Build and Test + run: | + docker run --platform=linux/${{ matrix.arch }} my-cpp-build-env:$GITHUB_SHA /bin/bash -c " + mkdir build && + cd build && + cmake .. && + cmake --config ${{env.BUILD_TYPE}} --build . && + ctest -C RELEASE -V + " \ No newline at end of file