jobs: - job: Linux displayName: Ubuntu-18.04 pool: vmImage: ubuntu-18.04 strategy: matrix: Debug-64-llvm-8-libc++: BuildType: Debug Flags: -m64 StdLib: libc++ LLVM: -8 Release-64-llvm-8-libc++: BuildType: Release Flags: -m64 StdLib: libc++ LLVM: -8 Debug-32-llvm-8-libc++: BuildType: Debug Flags: -m32 StdLib: libc++ LLVM: -8 Release-32-llvm-8-libc++: BuildType: Release Flags: -m32 StdLib: libc++ LLVM: -8 Debug-64-llvm-12-libc++: BuildType: Debug Flags: -m64 StdLib: libc++ LLVM: Release-64-llvm-12-libc++: BuildType: Release Flags: -m64 StdLib: libc++ LLVM: Debug-32-llvm-12-libc++: BuildType: Debug Flags: -m32 StdLib: libc++ LLVM: Release-32-llvm-12-libc++: BuildType: Release Flags: -m32 StdLib: libc++ LLVM: Debug-64-llvm-8-libstdc++: BuildType: Debug Flags: -m64 StdLib: libstdc++ LLVM: -8 Release-64-llvm-8-libstdc++: BuildType: Release Flags: -m64 StdLib: libstdc++ LLVM: -8 Debug-32-llvm-8-libstdc++: BuildType: Debug Flags: -m32 StdLib: libstdc++ LLVM: -8 Release-32-llvm-8-libstdc++: BuildType: Release Flags: -m32 StdLib: libstdc++ LLVM: -8 Debug-64-llvm-12-libstdc++: BuildType: Debug Flags: -m64 StdLib: libstdc++ LLVM: Release-64-llvm-12-libstdc++: BuildType: Release Flags: -m64 StdLib: libstdc++ LLVM: Debug-32-llvm-12-libstdc++: BuildType: Debug Flags: -m32 StdLib: libstdc++ LLVM: Release-32-llvm-12-libstdc++: BuildType: Release Flags: -m32 StdLib: libstdc++ LLVM: steps: - checkout: self submodules: true - script: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - sudo add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic$(LLVM) main" sudo apt-get update sudo apt-get install -y ninja-build sudo apt-get install -y -t llvm-toolchain-bionic$(LLVM) clang$(LLVM) if [ "$(StdLib)" = "libc++" ]; then sudo apt-get install -y -t llvm-toolchain-bionic$(LLVM) libc++$(LLVM)-dev libc++abi$(LLVM)-dev fi displayName: Install Dependencies - task: CMake@1 displayName: Generate Build Scripts inputs: cmakeArgs: '.. -GNinja -DCMAKE_BUILD_TYPE=$(BuildType) -DTESTS=ON -DCMAKE_CXX_COMPILER=clang++$(LLVM) -DCMAKE_C_COMPILER=clang$(LLVM) -DCMAKE_CXX_FLAGS="-stdlib=$(StdLib)"' - script: | ninja workingDirectory: build failOnStderr: true displayName: 'Compile' - script: | ctest -j 4 --output-on-failure -T test displayName: 'Test' workingDirectory: build failOnStderr: false - task: PublishTestResults@2 inputs: testResultsFormat: cTest testResultsFiles: build/Testing/*/Test.xml - job: Windows displayName: Windows-2022 pool: vmImage: windows-2022 strategy: matrix: Debug-32: BuildType: Debug Arch: x64_x86 Flags: -m32 Release-32: BuildType: Release Arch: x64_x86 Flags: -m32 Debug-64: BuildType: Debug Arch: x64 Flags: -m64 Release-64: BuildType: Release Arch: x64 Flags: -m64 steps: - checkout: self submodules: true - script: | choco.exe install ninja choco.exe install llvm - script: | echo Creating build directory... mkdir build cd build echo Importing visual studio environment variables... call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" $(Arch) echo Checking that we're calling the correct link.exe where link.exe set CFLAGS=$(Flags) set CXXFLAGS=$(Flags) echo Running cmake... cmake .. -G Ninja -DTESTS=ON -DCMAKE_C_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_CXX_COMPILER="c:/Program Files/LLVM/bin/clang-cl.exe" -DCMAKE_BUILD_TYPE=$(BuildType) echo CMake completed. failOnStderr: false displayName: 'CMake' - script: | cd build echo Importing visual studio environment variables... call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" $(Arch) set CCC_OVERRIDE_OPTIONS=x-TC x-TP x/TC x/TP echo Running ninja... ninja echo Ninja completed. failOnStderr: false displayName: 'Compile' - script: | cd build echo Copying objc.dll into Test directory... copy /y objc.dll Test ctest -j 4 --output-on-failure -T test failOnStderr: false displayName: 'Test' - task: PublishTestResults@2 inputs: testResultsFormat: cTest testResultsFiles: build/Testing/*/Test.xml