From 2b3eee46468fca17d69a5b905f0ef8876cbf2c16 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 25 Jan 2010 08:47:32 -0500 Subject: Avoid PathScale cmd-line bug in TryCompile test The PathScale compiler silently accepts unknown options that start in more than one '-': $ touch foo.c $ pathcc -c foo.c --junk $ echo $? 0 $ pathcc -c foo.c ---junk $ echo $? 0 $ pathcc -c foo.c -junk pathcc ERROR parsing -junk: unknown flag $ echo $? 2 We teach the TryCompile to pass a bogus flag with only one '-' instead of three '-'s for this compiler. --- Tests/TryCompile/CMakeLists.txt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Tests/TryCompile/CMakeLists.txt b/Tests/TryCompile/CMakeLists.txt index 62bed87..a57498f 100644 --- a/Tests/TryCompile/CMakeLists.txt +++ b/Tests/TryCompile/CMakeLists.txt @@ -211,12 +211,18 @@ TEST_ASSERT(CXX_BUILD_SHOULD_WORK "CHECK_CXX_SOURCE_COMPILES() failed") TEST_FAIL(CXX_RUN_SHOULD_FAIL "CHECK_CXX_SOURCE_RUNS() succeeded, but should have failed") TEST_ASSERT(CXX_RUN_SHOULD_WORK "CHECK_CXX_SOURCE_RUNS() failed") +FOREACH(lang C CXX) + IF(NOT "${CMAKE_${lang}_COMPILER_ID}" MATCHES "^(PathScale)$") + SET(${lang}_DD --) + ENDIF() +ENDFOREACH() + UNSET(C_BOGUS_FLAG CACHE) INCLUDE(CheckCCompilerFlag) -CHECK_C_COMPILER_FLAG(---_this_is_not_a_flag_ C_BOGUS_FLAG) +CHECK_C_COMPILER_FLAG(${C_DD}-_this_is_not_a_flag_ C_BOGUS_FLAG) TEST_FAIL(C_BOGUS_FLAG "CHECK_C_COMPILER_FLAG() succeeded, but should have failed") UNSET(CXX_BOGUS_FLAG CACHE) INCLUDE(CheckCXXCompilerFlag) -CHECK_CXX_COMPILER_FLAG(---_this_is_not_a_flag_ CXX_BOGUS_FLAG) +CHECK_CXX_COMPILER_FLAG(${CXX_DD}-_this_is_not_a_flag_ CXX_BOGUS_FLAG) TEST_FAIL(CXX_BOGUS_FLAG "CHECK_CXX_COMPILER_FLAG() succeeded, but should have failed") -- cgit v0.12