diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 00000000..9c74fe16 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,54 @@ +# Documentation: https://wiki.unvanquished.net/wiki/Continuous_integration + +skip_branch_with_pr: true + +only_commits: + files: + - .appveyor.yml + - example1/ + - example2/ + - example3/ + # The rest of this list should stay in sync with azure-pipelines.yml + - crunch/ + - crnlib/ + - inc/ + - cmake/ + - CMakeLists.txt + +environment: + matrix: + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + generator: Visual Studio 16 2019 + platform: x64 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + generator: Visual Studio 16 2019 + platform: win32 + +build: + parallel: true + +build_script: + # simple line break: space + # double line break: line break + + # The CFLAGS/CXXFLAGS env vars *prepend* to CMAKE__FLAGS rather than overwriting. + # /Wv pins warnings to a specific compiler version so that new ones + # don't make the build error after Appveyor updates the compiler. + - cmd: > + echo %NUMBER_OF_PROCESSORS% + + set CMAKE_BUILD_PARALLEL_LEVEL=%NUMBER_OF_PROCESSORS% + + cmake --version + + set CFLAGS=/Wv:19.29.30037 + + set CXXFLAGS=/Wv:19.29.30037 + + cmake + -Wdev -Wdeprecated + -G"%generator%" -A"%platform%" + -DBUILD_CRUNCH=ON -DBUILD_SHARED_LIBCRN=ON -DBUILD_EXAMPLES=ON + -S. -Bbuild + + cmake --build build --config Release diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 292a604b..223fcea0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -69,10 +69,11 @@ jobs: - if: matrix.build-mode == 'manual' shell: bash run: | - set -x + set -xe sudo apt-get update sudo apt-get -y -q --no-install-recommends install ninja-build export CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)" + echo "${CMAKE_BUILD_PARALLEL_LEVEL}" cmake -S. -Bbuild -GNinja -DBUILD_CRUNCH=ON -DBUILD_SHARED_LIBCRN=ON cmake --build build @@ -80,4 +81,3 @@ jobs: uses: github/codeql-action/analyze@v3 with: category: "/language:${{matrix.language}}" - diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 00000000..5c7e2fd2 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,85 @@ +# Documentation: https://wiki.unvanquished.net/wiki/Continuous_integration + +trigger: + branches: + include: + - master + +pr: + branches: + include: + - '*' + paths: + include: + - azure-pipelines.yml + # The rest of this list should stay in sync with .appveyor.yml + - crunch/ + - crnlib/ + - inc/ + - cmake/ + - CMakeLists.txt + +strategy: + matrix: + Linux GCC: + VM_IMAGE: 'ubuntu-20.04' + CMAKE_GENERATOR: Ninja + C_COMPILER: gcc-8 + CXX_COMPILER: g++-8 + APT_PACKAGES: ninja-build gcc-8 g++-8 + NPROC_TOOL: nproc + Linux Clang: + VM_IMAGE: 'ubuntu-20.04' + CMAKE_GENERATOR: Ninja + C_COMPILER: clang + CXX_COMPILER: clang++ + APT_PACKAGES: ninja-build gcc-8 g++-8 + NPROC_TOOL: nproc + MinGW amd64: + VM_IMAGE: 'ubuntu-20.04' + CMAKE_GENERATOR: Ninja + C_COMPILER: x86_64-w64-mingw32-gcc + CXX_COMPILER: x86_64-w64-mingw32-g++ + TOOLCHAIN_FILE: cmake/cross-toolchain-mingw64.cmake + INSTALL_TOOL: apt + APT_PACKAGES: ninja-build gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-x86-64-dev + SETUP_COMMANDS: sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix ; sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix + NPROC_TOOL: nproc + MinGW i686: + VM_IMAGE: 'ubuntu-20.04' + CMAKE_GENERATOR: Ninja + C_COMPILER: i686-w64-mingw32-gcc + CXX_COMPILER: i686-w64-mingw32-g++ + TOOLCHAIN_FILE: cmake/cross-toolchain-mingw64.cmake + INSTALL_TOOL: apt + APT_PACKAGES: ninja-build gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-i686-dev + SETUP_COMMANDS: sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix ; sudo update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix + NPROC_TOOL: nproc + Mac: + VM_IMAGE: 'macOS-12' + CMAKE_GENERATOR: Unix Makefile + C_COMPILER: clang + CXX_COMPILER: clang++ + NPROC_TOOL: sysctl -n hw.logicalcpu + +pool: + vmImage: $(VM_IMAGE) + +steps: +- bash: | + set -xe + [ -n "${APT_PACKAGES:-}" ] && sudo apt-get update \ + && sudo apt-get -y -q --no-install-recommends install ${APT_PACKAGES} + [ -n "${SETUP_COMMANDS:-}" ] && ${SETUP_COMMANDS} + displayName: 'Setup' +- bash: | + set -xe + export CMAKE_BUILD_PARALLEL_LEVEL="$(${NPROC_TOOL})" + echo "${CMAKE_BUILD_PARALLEL_LEVEL}" + cmake -S. -Bbuild \ + -G${CMAKE_GENERATOR} \ + -DCMAKE_C_COMPILER=${C_COMPILER} -DCMAKE_CXX_COMPILER=${CXX_COMPILER} \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ + -DBUILD_CRUNCH=ON -DBUILD_SHARED_LIBCRN=ON -DBUILD_EXAMPLES=OFF + cmake --build build --config Release -- -k 0 + displayName: 'Build'