include(RunCMake) # Isolate test cases from the caller's environment. if(DEFINED ENV{CFLAGS}) string(REGEX REPLACE "-Werror[^ ]*" "" cflags "$ENV{CFLAGS}") set(ENV{CFLAGS} "${cflags}") endif() if(DEFINED ENV{LDFLAGS}) string(REGEX REPLACE "-Wl,--fatal-warnings[^ ]*" "" ldflags "$ENV{LDFLAGS}") set(ENV{LDFLAGS} "${ldflags}") endif() run_cmake(BadValue) function(run_link_warn test) set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build) set(RunCMake_TEST_OUTPUT_MERGE 1) run_cmake_with_options(${test} ${ARGN}) set(RunCMake_TEST_NO_CLEAN 1) if(ARGN MATCHES "--link-no-warning-as-error") # Cause the build system to re-run CMake to verify that this option is preserved. run_cmake_command(${test}-Touch ${CMAKE_COMMAND} -E touch_nocreate CMakeCache.txt) endif() run_cmake_command(${test}-Build ${CMAKE_COMMAND} --build . --verbose) endfunction() run_link_warn(WarnErrorOn1) run_link_warn(WarnErrorOn2) run_link_warn(WarnErrorOn3) run_link_warn(WarnErrorOn4) run_link_warn(WarnErrorOff1) run_link_warn(WarnErrorOff2) run_link_warn(WarnErrorOnIgnore "--link-no-warning-as-error")