parameters: os: 'Linux' fuzzer: 'NoFuzz' lagom_lints: false allow_test_failures: false jobs: - job: 'Lagom_${{ parameters.os }}_${{ parameters.fuzzer }}' 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-10.15 - 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_unicode_caches: false ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: with_unicode_caches: true - script: | mkdir -p Meta/Lagom/Build displayName: 'Create Build Directory' - ${{ if eq(parameters.fuzzer, 'Fuzz') }}: - script: | cmake -GNinja \ -DBUILD_LAGOM=ON \ -DENABLE_LAGOM_CCACHE=ON \ -DENABLE_FUZZER_SANITIZER=ON \ -DENABLE_ADDRESS_SANITIZER=ON \ -DENABLE_PCI_IDS_DOWNLOAD=OFF \ -DENABLE_USB_IDS_DOWNLOAD=OFF \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ .. displayName: 'Create Build Environment' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build env: CCACHE_DIR: '$(SERENITY_CCACHE_DIR)' - ${{ if eq(parameters.fuzzer, 'NoFuzz') }}: - script: | cmake -GNinja \ -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 \ -DENABLE_PCI_IDS_DOWNLOAD=OFF \ -DENABLE_USB_IDS_DOWNLOAD=OFF \ -DCMAKE_C_COMPILER=gcc-10 \ -DCMAKE_CXX_COMPILER=g++-10 \ .. displayName: 'Create Build Environment' workingDirectory: $(Build.SourcesDirectory)/Meta/Lagom/Build 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 || ${{ parameters.allow_test_failures }} 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: | ./Meta/check-markdown.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 # 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'