diff --git a/.travis.sh b/.travis.sh index acbe37ac..8d3cd193 100755 --- a/.travis.sh +++ b/.travis.sh @@ -53,7 +53,7 @@ elif [[ ${MODE} = cmake-oos ]]; then mkdir build cd build cmake ${CMAKE_ARGS} .. - make all test + make VERBOSE=1 all test make DESTDIR="${PWD}"/ROOT install find ROOT -printf "%P\n" | sort elif [[ ${MODE} = cppcheck ]]; then diff --git a/.travis.yml b/.travis.yml index 0a1e23a2..3defccee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ matrix: - os: linux env: MODE=clang-format - os: linux - env: MODE=cmake-oos CMAKE_ARGS=-DXML_ATTR_INFO=ON + env: MODE=cmake-oos CMAKE_ARGS="-DXML_ATTR_INFO=ON -DBUILD_fuzzers=ON -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" - os: linux env: MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CONFIGURE_ARGS=--enable-xml-attr-info - os: linux diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt index 546be104..98979aed 100644 --- a/expat/CMakeLists.txt +++ b/expat/CMakeLists.txt @@ -326,10 +326,11 @@ if(BUILD_tests) endif(BUILD_tests) if(BUILD_fuzzers) - if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") message(SEND_ERROR - "Building fuzz targets without clang is not supported. Please set " - "-DCMAKE_C_COMPILER=clang.") + "Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) " + "is not supported. Please set " + "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++.") endif() string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "-fsanitize" sanitizer_present) @@ -338,6 +339,7 @@ if(BUILD_fuzzers) "There was no sanitizer present when building the fuzz targets. " "This is likely in error - consider adding " "-DCMAKE_C_FLAGS='-fsanitize=' and " + "-DCMAKE_CXX_FLAGS='-fsanitize=' and " "-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=' to your cmake " "execution.") endif() @@ -352,7 +354,8 @@ if(BUILD_fuzzers) target_compile_definitions(${target_name} PRIVATE ENCODING_FOR_FUZZING=${encoding_type}) target_compile_options(${target_name} PRIVATE -fsanitize=fuzzer-no-link) - target_link_options(${target_name} PRIVATE -fsanitize=fuzzer) + # NOTE: Avoiding target_link_options here only because it needs CMake >=3.13 + set_target_properties(${target_name} PROPERTIES LINK_FLAGS -fsanitize=fuzzer) set_property( TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz) endforeach() @@ -388,6 +391,7 @@ endif() message(STATUS "") message(STATUS " Build documentation ........ ${BUILD_doc}") message(STATUS " Build examples ............. ${BUILD_examples}") +message(STATUS " Build fuzzers .............. ${BUILD_fuzzers}") message(STATUS " Build tests ................ ${BUILD_tests}") message(STATUS " Build tools (xmlwf) ........ ${BUILD_tools}") message(STATUS " Install files .............. ${INSTALL}") diff --git a/expat/Changes b/expat/Changes index 74b4806e..afc16e05 100644 --- a/expat/Changes +++ b/expat/Changes @@ -29,6 +29,7 @@ Release x.x.x xxx xxx xx xxxx Old: expat[d].lib New: expat[w][d].lib CMake: Migrate files from Windows to Unix line endings + #308 CMake: Integrate OSS-Fuzz fuzzers #299 #302 Windows: Replace LoadLibrary hack to access unofficial API function SystemFunction036 (RtlGenRandom) by using official API function rand_s (needs WinXP+) @@ -45,6 +46,7 @@ Release x.x.x xxx xxx xx xxxx Khajapasha Mohammed Kishore Kunche Marco Maggi + Mitch Phillips Rolf Ade xantares