diff options
-rw-r--r-- | Source/cmLocalVisualStudio6Generator.cxx | 6 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 6 | ||||
-rw-r--r-- | Source/cmSourceFile.cxx | 2 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 2 | ||||
-rw-r--r-- | Tests/Preprocess/CMakeLists.txt | 63 | ||||
-rw-r--r-- | Tests/Preprocess/preprocess.c | 2 | ||||
-rw-r--r-- | Tests/Preprocess/preprocess.cxx | 2 |
7 files changed, 42 insertions, 41 deletions
diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index 3493719..8ecfa0d 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -1712,11 +1712,11 @@ cmLocalVisualStudio6Generator } // Now do the VS6-specific check. - if(define.find_first_of("=") != define.npos) + if(define.find_first_of(" ") != define.npos) { cmOStringStream e; - e << "WARNING: The VS6 IDE does not support preprocessor definitions " - << "with values.\n" + e << "WARNING: The VS6 IDE does not support preprocessor definition " + << "values with spaces.\n" << "CMake is dropping a preprocessor definition: " << define << "\n" << "Consider defining the macro in a (configured) header file.\n"; cmSystemTools::Message(e.str().c_str()); diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 69d58ba..a0b536b 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1216,10 +1216,10 @@ bool cmMakefile::ParseDefineFlag(std::string const& def, bool remove) return false; } - // VS6 IDE does not support definitions with values. + // VS6 IDE does not support definition values with spaces. if((strcmp(this->LocalGenerator->GetGlobalGenerator()->GetName(), "Visual Studio 6") == 0) && - (def.find("=") != def.npos)) + (def.find(" ") != def.npos)) { return false; } @@ -3475,7 +3475,7 @@ void cmMakefile::DefineProperties(cmake *cm) "in the directory's parent.\n" "CMake will automatically drop some definitions that " "are not supported by the native build tool. " - "The VS6 IDE does not support definitions with values " + "The VS6 IDE does not support definition values with spaces " "(but NMake does).\n" "Dislaimer: Most native build tools have poor support for escaping " "certain values. CMake has work-arounds for many cases but some " diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 8603d98..cb7777c 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -405,7 +405,7 @@ void cmSourceFile::DefineProperties(cmake *cm) "(ex. \"COMPILE_DEFINITIONS_DEBUG\").\n" "CMake will automatically drop some definitions that " "are not supported by the native build tool. " - "The VS6 IDE does not support definitions with values " + "The VS6 IDE does not support definition values with spaces " "(but NMake does). Xcode does not support per-configuration " "definitions on source files.\n" "Dislaimer: Most native build tools have poor support for escaping " diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 6b6635d..a640b0d 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -108,7 +108,7 @@ void cmTarget::DefineProperties(cmake *cm) "(ex. \"COMPILE_DEFINITIONS_DEBUG\").\n" "CMake will automatically drop some definitions that " "are not supported by the native build tool. " - "The VS6 IDE does not support definitions with values " + "The VS6 IDE does not support definition values with spaces " "(but NMake does).\n" "Dislaimer: Most native build tools have poor support for escaping " "certain values. CMake has work-arounds for many cases but some " diff --git a/Tests/Preprocess/CMakeLists.txt b/Tests/Preprocess/CMakeLists.txt index fa9a109..bb33907 100644 --- a/Tests/Preprocess/CMakeLists.txt +++ b/Tests/Preprocess/CMakeLists.txt @@ -65,14 +65,20 @@ if(NOT BORLAND AND NOT PP_VS70) set(SEMICOLON "\;") endif(NOT BORLAND AND NOT PP_VS70) -if(NOT PP_BORLAND AND NOT PP_WATCOM) - # Borland, WMake: multiple spaces - # The make tool seems to remove extra whitespace from inside - # quoted strings when passing to the compiler. It does not have - # trouble passing to other tools, and the compiler may be directly - # invoked from the command line. - set(STRING_EXTRA "${STRING_EXTRA} ") -endif(NOT PP_BORLAND AND NOT PP_WATCOM) +if(NOT PP_VS6) + # VS 6 IDE: spaces + # The project parser unconditionally separates arguments at spaces. + set(STRING_EXTRA "${STRING_EXTRA} ") + + if(NOT PP_BORLAND AND NOT PP_WATCOM) + # Borland, WMake: multiple spaces + # The make tool seems to remove extra whitespace from inside + # quoted strings when passing to the compiler. It does not have + # trouble passing to other tools, and the compiler may be directly + # invoked from the command line. + set(STRING_EXTRA "${STRING_EXTRA} ") + endif(NOT PP_BORLAND AND NOT PP_WATCOM) +endif(NOT PP_VS6) if(NOT PP_VS) # VS: , @@ -152,7 +158,7 @@ endif(PP_NMAKE OR PP_UMAKE) # support it and it is not an operator it is not worthwhile. # Compose the final test string. -set(STRING_VALUE "hello `~!@$*)(_+-=}{][:'.?/ ${STRING_EXTRA}world") +set(STRING_VALUE "hello`~!@$*)(_+-=}{][:'.?/${STRING_EXTRA}world") #----------------------------------------------------------------------------- # Function-style macro command-line support: @@ -194,11 +200,7 @@ endif(PP_VS6) add_definitions(-DOLD_DEF -DOLD_EXPR=2) # Make sure old-style definitions are converted to directory property. -if(PREPROCESS_VS6) - set(OLD_DEFS_EXPECTED "OLD_DEF") -else(PREPROCESS_VS6) - set(OLD_DEFS_EXPECTED "OLD_DEF;OLD_EXPR=2") -endif(PREPROCESS_VS6) +set(OLD_DEFS_EXPECTED "OLD_DEF;OLD_EXPR=2") get_property(OLD_DEFS DIRECTORY PROPERTY COMPILE_DEFINITIONS) if(NOT "${OLD_DEFS}" STREQUAL "${OLD_DEFS_EXPECTED}") message(SEND_ERROR "add_definitions not converted to directory property!") @@ -225,23 +227,26 @@ foreach(c "" "_DEBUG" "_RELEASE") ) endforeach(c) -# Add definitions with values. VS6 does not support this. +# Add definitions with values. if(NOT PREPROCESS_VS6) - set_property( - TARGET Preprocess - APPEND PROPERTY COMPILE_DEFINITIONS - "TARGET_STRING=\"${STRING_VALUE}${SEMICOLON}\"" - "TARGET_EXPR=${EXPR}" - "TARGET_PATH=\"${TARGET_PATH}\"" - ) - set_property( - SOURCE preprocess.c preprocess${VS6}.cxx - APPEND PROPERTY COMPILE_DEFINITIONS - "FILE_STRING=\"${STRING_VALUE}${SEMICOLON}\"" - "FILE_EXPR=${EXPR}" - "FILE_PATH=\"${FILE_PATH}\"" - ) + # The path might have spaces, which VS6 does not support. + set(DEF_TARGET_PATH "TARGET_PATH=\"${TARGET_PATH}\"") + set(DEF_FILE_PATH "FILE_PATH=\"${FILE_PATH}\"") endif(NOT PREPROCESS_VS6) +set_property( + TARGET Preprocess + APPEND PROPERTY COMPILE_DEFINITIONS + "TARGET_STRING=\"${STRING_VALUE}${SEMICOLON}\"" + "TARGET_EXPR=${EXPR}" + ${DEF_TARGET_PATH} + ) +set_property( + SOURCE preprocess.c preprocess${VS6}.cxx + APPEND PROPERTY COMPILE_DEFINITIONS + "FILE_STRING=\"${STRING_VALUE}${SEMICOLON}\"" + "FILE_EXPR=${EXPR}" + ${DEF_FILE_PATH} + ) # Helper target for running test manually in build tree. add_custom_target(drive COMMAND Preprocess) diff --git a/Tests/Preprocess/preprocess.c b/Tests/Preprocess/preprocess.c index 5dd9003..16209ac 100644 --- a/Tests/Preprocess/preprocess.c +++ b/Tests/Preprocess/preprocess.c @@ -9,7 +9,6 @@ int check_defines_C(void) { int result = 1; -#ifndef PREPROCESS_VS6 if(strcmp(FILE_STRING, STRING_VALUE) != 0) { fprintf(stderr, @@ -38,7 +37,6 @@ int check_defines_C(void) result = 0; } } -#endif #ifdef NDEBUG # ifdef FILE_DEF_DEBUG { diff --git a/Tests/Preprocess/preprocess.cxx b/Tests/Preprocess/preprocess.cxx index 628521f..27b6ac8 100644 --- a/Tests/Preprocess/preprocess.cxx +++ b/Tests/Preprocess/preprocess.cxx @@ -11,7 +11,6 @@ extern "C" int check_defines_C(void); int check_defines_CXX() { int result = 1; -#ifndef PREPROCESS_VS6 if(strcmp(FILE_STRING, STRING_VALUE) != 0) { fprintf(stderr, @@ -40,7 +39,6 @@ int check_defines_CXX() result = 0; } } -#endif #ifdef NDEBUG # ifdef FILE_DEF_DEBUG { |