parameters: os: 'Linux' fuzzer: 'NoFuzz' lagom_lints: false jobs: - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}' timeoutInMinutes: 0 # Setting to 0 means the maximum allowed timeout is used. variables: - name: SERENITY_CCACHE_DIR value: $(Build.SourcesDirectory)/.ccache - name: job_pool ${{ if eq(parameters.os, 'Linux') }}: value: ubuntu-20.04 ${{ if eq(parameters.os, 'macOS') }}: value: macos-11 - name: toolchain ${{ if eq(parameters.fuzzer, 'Fuzz') }}: value: clang ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: value: gcc pool: vmImage: $(job_pool) steps: - template: Setup.yml parameters: os: '${{ parameters.os }}' - template: Caches.yml parameters: os: '${{ parameters.os }}' arch: 'Lagom' toolchain: '$(toolchain)' build_directory: 'Meta/Lagom/Build' serenity_ccache_path: '$(SERENITY_CCACHE_DIR)' ${{ if eq(parameters.fuzzer, 'Fuzz') }}: with_remote_data_caches: false ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: with_remote_data_caches: true - ${{ if eq(parameters.fuzzer, 'Fuzz') }}: - script: | cmake -GNinja -B tools-build \ -DBUILD_LAGOM=OFF \ -DENABLE_LAGOM_CCACHE=ON \ -DCMAKE_INSTALL_PREFIX=tool-install ninja -C tools-build install cmake -GNinja -B Build \ -DBUILD_LAGOM=ON \ -DENABLE_LAGOM_CCACHE=ON \ -DENABLE_FUZZERS_LIBFUZZER=ON \ -DENABLE_ADDRESS_SANITIZER=ON \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_PREFIX_PATH=tool-install displayName: 'Create Build Environment' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom env: CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: - script: | cmake -GNinja -B Build \ -DBUILD_LAGOM=ON \ -DENABLE_LAGOM_CCACHE=ON \ -DINCLUDE_WASM_SPEC_TESTS=ON \ -DWASM_SPEC_TEST_SKIP_FORMATTING=ON \ -DENABLE_UNDEFINED_SANITIZER=ON \ -DENABLE_ADDRESS_SANITIZER=ON \ -DCMAKE_C_COMPILER=gcc-11 \ -DCMAKE_CXX_COMPILER=g++-11 displayName: 'Create Build Environment' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom env: PATH: '$(PATH):$(Build.SourcesDirectory)/wabt-1.0.23/bin' CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - script: | cmake --build . displayName: 'Build' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build env: CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: - script: | ninja test displayName: 'Test' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build env: SERENITY_SOURCE_DIR: '$(Build.SourcesDirectory)' CTEST_OUTPUT_ON_FAILURE: 1 # FIXME: enable detect_stack_use_after_return=1 #7420 ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1' UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1' - ${{ if eq(parameters.lagom_lints, true) }}: - script: | set -e ./Meta/check-markdown.sh ./Meta/lint-gml-format.sh git ls-files '*.ipc' | xargs ./Meta/Lagom/Build/Tools/IPCMagicLinter/IPCMagicLinter displayName: 'Run lints that require Lagom' workingDirectory: $(Build.SourcesDirectory)/ env: MARKDOWN_CHECK_BINARY: ./Meta/Lagom/Build/markdown-check GML_FORMAT: ./Meta/Lagom/Build/gml-format # FIXME: enable detect_stack_use_after_return=1 #7420 ASAN_OPTIONS: 'strict_string_checks=1:check_initialization_order=1:strict_init_order=1' UBSAN_OPTIONS: 'print_stacktrace=1:print_summary=1:halt_on_error=1' - script: | CCACHE_DIR='$(SERENITY_CCACHE_DIR)' ccache -s displayName: 'Cache Stats'