diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9330a08bdb3..014d62b0f4f 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -105,3 +105,31 @@ jobs: ${{ toJSON(github.event) }} ] EOF + build_lagom_with_fuzzers: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + + # === OS SETUP === + + - name: Check versions + run: set +e; clang --version; clang++ --version + + # === PREPARE FOR BUILDING === + + # TODO: ccache + # https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/ + # https://github.com/cristianadam/HelloWorld/blob/master/.github/workflows/build_cmake.yml + - name: Create build environment + working-directory: ${{ github.workspace }}/Meta/Lagom + run: | + mkdir -p Build + cd Build + cmake -DBUILD_LAGOM=ON -DENABLE_FUZZER_SANITIZER=ON -DENABLE_ADDRESS_SANITIZER=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. + + # === ACTUALLY BUILD === + + - name: Build Lagom with Fuzzers + working-directory: ${{ github.workspace }}/Meta/Lagom/Build + run: cmake --build . -j2 diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index 5eb301a53d5..0e6fcea8ee7 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -82,7 +82,7 @@ add_library(LagomCore ${LAGOM_CORE_SOURCES}) if (BUILD_LAGOM) add_library(Lagom $ ${LAGOM_MORE_SOURCES}) - if (NOT ENABLE_OSS_FUZZ) + if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER) add_executable(TestApp TestApp.cpp) target_link_libraries(TestApp Lagom) target_link_libraries(TestApp stdc++) diff --git a/Meta/Lagom/Fuzzers/CMakeLists.txt b/Meta/Lagom/Fuzzers/CMakeLists.txt index c872ecb44a4..2c689d16170 100644 --- a/Meta/Lagom/Fuzzers/CMakeLists.txt +++ b/Meta/Lagom/Fuzzers/CMakeLists.txt @@ -31,8 +31,10 @@ add_simple_fuzzer(FuzzRegexECMA262) add_simple_fuzzer(FuzzRegexPosixExtended) add_simple_fuzzer(FuzzShell) -if (NOT ENABLE_OSS_FUZZ) +if (NOT ENABLE_OSS_FUZZ AND NOT ENABLE_FUZZER_SANITIZER) add_executable(FuzzilliJs FuzzilliJs.cpp) +# FIXME: For some reason, these option overrides are ignored and FuzzilliJs gets treated +# as a regular fuzzer. Once fixed, please remove the "AND NOT ENABLE_FUZZER_SANITIZER" above. target_compile_options(FuzzilliJs PRIVATE $<$:-g -O1 -fsanitize-coverage=trace-pc-guard> )