image: lowkey42/build-env:latest stages: - build variables: GIT_SUBMODULE_STRATEGY: recursive .cache-paths-spec: &cache-paths - build .linux-cache-spec: &linux-cache-spec cache: key: ${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME} paths: *cache-paths .windows-cache-spec: &windows-cache-spec cache: paths: *cache-paths key: "%CI_COMMIT_REF_SLUG%-%CI_JOB_NAME%-%CI_RUNNER_ID%" .windows-task: &windows-task tags: - windows only: variables: - $WINDOWS_CI .artifact-spec: &artifact-spec artifacts: name: "phase_shifter" paths: - phase_shifter expire_in: 1 day .build-ninja-linux: &build-ninja-linux stage: build script: - cmake -E make_directory build - cd build - cmake -E remove_directory src - cmake -G Ninja -DCMAKE_INSTALL_PREFIX:PATH=../../phase_shifter -DCMAKE_BUILD_TYPE=Release -DMIRRAGE_EXPORT_EXECUTABLE=ON -DMIRRAGE_ENABLE_COTIRE=OFF .. - cmake --build . - cmake --build . --target src/install - cmake --build . --target test <<: *linux-cache-spec <<: *artifact-spec build-gcc: image: lowkey42/gdw-build-gcc variables: CC: "gcc" CXX: "g++" <<: *build-ninja-linux build-clang: image: lowkey42/gdw-build-clang variables: CC: "clang" CXX: "clang++" <<: *build-ninja-linux build-scanbuild: image: lowkey42/gdw-build-clang stage: build script: - export CC=clang - export CXX=clang++ - export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc --all) - echo "Build parallelism:" ${CMAKE_BUILD_PARALLEL_LEVEL} - mkdir -p build - cd build - scan-build --use-c++=clang++ --use-cc=clang cmake -DMIRRAGE_FORCE_LIBCPP=ON -DMIRRAGE_ENABLE_COTIRE=OFF -G "Unix Makefiles" .. - scan-build -o result --use-c++=clang++ --use-cc=clang -enable-checker deadcode.DeadStores -enable-checker security.insecureAPI.UncheckedReturn --status-bugs -v cmake --build . || true artifacts: paths: - build/result expire_in: 1 week when: always only: variables: - $SCANBUILD_CI build-mingw: stage: build script: - cmake -E make_directory build - cd build - cmake -E remove_directory src - cmake -G Ninja -DCMAKE_INSTALL_PREFIX:PATH=../../phase_shifter -DCMAKE_BUILD_TYPE=Release -DMIRRAGE_ENABLE_COTIRE=OFF -DMIRRAGE_EXPORT_EXECUTABLE=ON .. - cmake --build . - cmake --build . --target src/install - cmake --build . --target test variables: CC: "gcc" CXX: "g++" <<: *windows-task <<: *windows-cache-spec <<: *artifact-spec build-msvc: stage: build script: - cmake -E make_directory build - cd build - cmake -E remove_directory src - cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:PATH=../../phase_shifter -DMIRRAGE_ENABLE_COTIRE=OFF -DMIRRAGE_EXPORT_EXECUTABLE=ON -DMIRRAGE_ENABLE_BACKWARD=OFF .. - cmake --build . --config Release -- /m - cmake --build . --config Release --target src/install - cmake --build . --config Release --target RUN_TESTS <<: *windows-task <<: *windows-cache-spec <<: *artifact-spec