diff options
-rw-r--r-- | CMakeLists.txt | 67 | ||||
-rw-r--r-- | Modules/CheckCSourceCompiles.cmake | 4 | ||||
-rw-r--r-- | Modules/CheckCXXSourceCompiles.cmake | 4 | ||||
-rw-r--r-- | Modules/CheckFunctionExists.cmake | 14 | ||||
-rw-r--r-- | Modules/CheckSymbolExists.cmake | 19 | ||||
-rw-r--r-- | Modules/FindPythonLibs.cmake | 1 | ||||
-rw-r--r-- | Source/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Source/cmDocumentCompileDefinitions.h | 34 | ||||
-rw-r--r-- | Source/cmGetCMakePropertyCommand.h | 11 | ||||
-rw-r--r-- | Source/cmGetDirectoryPropertyCommand.h | 3 | ||||
-rw-r--r-- | Source/cmGetSourceFilePropertyCommand.h | 4 | ||||
-rw-r--r-- | Source/cmGetTargetPropertyCommand.h | 4 | ||||
-rw-r--r-- | Source/cmGetTestPropertyCommand.h | 12 | ||||
-rw-r--r-- | Source/cmIfCommand.h | 89 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 10 | ||||
-rw-r--r-- | Source/cmSourceFile.cxx | 20 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 10 | ||||
-rw-r--r-- | Source/cmTryCompileCommand.h | 41 | ||||
-rw-r--r-- | Source/kwsys/kwsysDateStamp.cmake | 2 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/MissingSourceFile/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Utilities/Release/v20n250_aix_release.cmake | 6 | ||||
-rwxr-xr-x | bootstrap | 50 |
23 files changed, 245 insertions, 165 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4508e33..37e0edc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,12 @@ IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) +IF(CMAKE_BOOTSTRAP) + # Running from bootstrap script. Set local variable and remove from cache. + SET(CMAKE_BOOTSTRAP 1) + UNSET(CMAKE_BOOTSTRAP CACHE) +ENDIF() + MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY) # Allow empty endif() and such with CMake 2.4. @@ -53,42 +59,47 @@ MACRO(CMAKE_HANDLE_SYSTEM_LIBRARIES) OPTION(CTEST_USE_XMLRPC "Enable xmlrpc submission method in CTest." OFF) MARK_AS_ADVANCED(CTEST_USE_XMLRPC) - # Allow the user to enable/disable all system utility library options - # by setting CMAKE_USE_SYSTEM_LIBRARIES on the command line. - IF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES_USER 1) - ENDIF(DEFINED CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES ON) - ELSE(CMAKE_USE_SYSTEM_LIBRARIES) - SET(CMAKE_USE_SYSTEM_LIBRARIES OFF) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES) - IF(CMAKE_USE_SYSTEM_LIBRARIES_USER) - SET(CMAKE_USE_SYSTEM_CURL "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed curl" FORCE) - SET(CMAKE_USE_SYSTEM_EXPAT "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed expat" FORCE) - SET(CMAKE_USE_SYSTEM_ZLIB "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed zlib" FORCE) - SET(CMAKE_USE_SYSTEM_BZIP2 "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed bzip2" FORCE) - SET(CMAKE_USE_SYSTEM_LIBARCHIVE "${CMAKE_USE_SYSTEM_LIBRARIES}" - CACHE BOOL "Use system-installed libarchive" FORCE) - ENDIF(CMAKE_USE_SYSTEM_LIBRARIES_USER) + # Allow the user to enable/disable all system utility library options by + # defining CMAKE_USE_SYSTEM_LIBRARIES or CMAKE_USE_SYSTEM_LIBRARY_${util}. + SET(UTILITIES BZIP2 CURL EXPAT LIBARCHIVE ZLIB) + FOREACH(util ${UTILITIES}) + IF(NOT DEFINED CMAKE_USE_SYSTEM_LIBRARY_${util} + AND DEFINED CMAKE_USE_SYSTEM_LIBRARIES) + SET(CMAKE_USE_SYSTEM_LIBRARY_${util} "${CMAKE_USE_SYSTEM_LIBRARIES}") + ENDIF() + IF(DEFINED CMAKE_USE_SYSTEM_LIBRARY_${util}) + IF(CMAKE_USE_SYSTEM_LIBRARY_${util}) + SET(CMAKE_USE_SYSTEM_LIBRARY_${util} ON) + ELSE() + SET(CMAKE_USE_SYSTEM_LIBRARY_${util} OFF) + ENDIF() + IF(CMAKE_BOOTSTRAP) + UNSET(CMAKE_USE_SYSTEM_LIBRARY_${util} CACHE) + ENDIF() + STRING(TOLOWER "${util}" lutil) + SET(CMAKE_USE_SYSTEM_${util} "${CMAKE_USE_SYSTEM_LIBRARY_${util}}" + CACHE BOOL "Use system-installed ${lutil}" FORCE) + ELSE() + SET(CMAKE_USE_SYSTEM_LIBRARY_${util} OFF) + ENDIF() + ENDFOREACH(util) + IF(CMAKE_BOOTSTRAP) + UNSET(CMAKE_USE_SYSTEM_LIBRARIES CACHE) + ENDIF() # Optionally use system utility libraries. - OPTION(CMAKE_USE_SYSTEM_LIBARCHIVE "Use system-installed libarchive" ${CMAKE_USE_SYSTEM_LIBRARIES}) + OPTION(CMAKE_USE_SYSTEM_LIBARCHIVE "Use system-installed libarchive" "${CMAKE_USE_SYSTEM_LIBRARY_LIBARCHIVE}") CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_CURL "Use system-installed curl" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CTEST_USE_XMLRPC" ON) + "${CMAKE_USE_SYSTEM_LIBRARY_CURL}" "NOT CTEST_USE_XMLRPC" ON) CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_EXPAT "Use system-installed expat" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CTEST_USE_XMLRPC" ON) + "${CMAKE_USE_SYSTEM_LIBRARY_EXPAT}" "NOT CTEST_USE_XMLRPC" ON) CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_ZLIB "Use system-installed zlib" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_LIBARCHIVE;NOT CMAKE_USE_SYSTEM_CURL" ON) + "${CMAKE_USE_SYSTEM_LIBRARY_ZLIB}" "NOT CMAKE_USE_SYSTEM_LIBARCHIVE;NOT CMAKE_USE_SYSTEM_CURL" ON) CMAKE_DEPENDENT_OPTION(CMAKE_USE_SYSTEM_BZIP2 "Use system-installed bzip2" - ${CMAKE_USE_SYSTEM_LIBRARIES} "NOT CMAKE_USE_SYSTEM_LIBARCHIVE" ON) + "${CMAKE_USE_SYSTEM_LIBRARY_BZIP2}" "NOT CMAKE_USE_SYSTEM_LIBARCHIVE" ON) # Mention to the user what system libraries are being used. - FOREACH(util BZIP2 CURL EXPAT LIBARCHIVE ZLIB) + FOREACH(util ${UTILITIES}) IF(CMAKE_USE_SYSTEM_${util}) MESSAGE(STATUS "Using system-installed ${util}") ENDIF(CMAKE_USE_SYSTEM_${util}) diff --git a/Modules/CheckCSourceCompiles.cmake b/Modules/CheckCSourceCompiles.cmake index e8bfc0c..d59fe55 100644 --- a/Modules/CheckCSourceCompiles.cmake +++ b/Modules/CheckCSourceCompiles.cmake @@ -1,6 +1,6 @@ -# - Check if the given C source code compiles. +# - Check if given C source compiles and links into an executable # CHECK_C_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>]) -# <code> - source code to try to compile +# <code> - source code to try to compile, must define 'main' # <var> - variable to store whether the source code compiled # <fail-regex> - fail if test output matches this regex # The following variables may be set before calling this macro to diff --git a/Modules/CheckCXXSourceCompiles.cmake b/Modules/CheckCXXSourceCompiles.cmake index 4502c6b..0491b37 100644 --- a/Modules/CheckCXXSourceCompiles.cmake +++ b/Modules/CheckCXXSourceCompiles.cmake @@ -1,6 +1,6 @@ -# - Check if the given C++ source code compiles. +# - Check if given C++ source compiles and links into an executable # CHECK_CXX_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>]) -# <code> - source code to try to compile +# <code> - source code to try to compile, must define 'main' # <var> - variable to store whether the source code compiled # <fail-regex> - fail if test output matches this regex # The following variables may be set before calling this macro to diff --git a/Modules/CheckFunctionExists.cmake b/Modules/CheckFunctionExists.cmake index e1a1777..0ba36d9 100644 --- a/Modules/CheckFunctionExists.cmake +++ b/Modules/CheckFunctionExists.cmake @@ -1,8 +1,10 @@ -# - Check if the function exists. -# CHECK_FUNCTION_EXISTS(FUNCTION VARIABLE) -# - macro which checks if the function exists -# FUNCTION - the name of the function -# VARIABLE - variable to store the result +# - Check if a C function can be linked +# CHECK_FUNCTION_EXISTS(<function> <variable>) +# +# Check that the <function> is provided by libraries on the system and +# store the result in a <variable>. This does not verify that any +# system header file declares the function, only that it can be found +# at link time (considure using CheckSymbolExists). # # The following variables may be set before calling this macro to # modify the way the check is run: @@ -13,7 +15,7 @@ # CMAKE_REQUIRED_LIBRARIES = list of libraries to link #============================================================================= -# Copyright 2002-2009 Kitware, Inc. +# Copyright 2002-2011 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. diff --git a/Modules/CheckSymbolExists.cmake b/Modules/CheckSymbolExists.cmake index 40910f2..e86604b 100644 --- a/Modules/CheckSymbolExists.cmake +++ b/Modules/CheckSymbolExists.cmake @@ -1,9 +1,16 @@ -# - Check if the symbol exists in include files -# CHECK_SYMBOL_EXISTS(SYMBOL FILES VARIABLE) +# - Check if a symbol exists as a function, variable, or macro +# CHECK_SYMBOL_EXISTS(<symbol> <files> <variable>) # -# SYMBOL - symbol -# FILES - include files to check -# VARIABLE - variable to return result +# Check that the <symbol> is available after including given header +# <files> and store the result in a <variable>. Specify the list +# of files in one argument as a semicolon-separated list. +# +# If the header files define the symbol as a macro it is considered +# available and assumed to work. If the header files declare the +# symbol as a function or variable then the symbol must also be +# available for linking. If the symbol is a type or enum value +# it will not be recognized (consider using CheckTypeSize or +# CheckCSourceCompiles). # # The following variables may be set before calling this macro to # modify the way the check is run: @@ -14,7 +21,7 @@ # CMAKE_REQUIRED_LIBRARIES = list of libraries to link #============================================================================= -# Copyright 2003-2009 Kitware, Inc. +# Copyright 2003-2011 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. diff --git a/Modules/FindPythonLibs.cmake b/Modules/FindPythonLibs.cmake index 780ffc2..333e075 100644 --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -151,6 +151,7 @@ FUNCTION(PYTHON_WRITE_MODULES_HEADER _filename) GET_FILENAME_COMPONENT(_name "${_filename}" NAME) STRING(REPLACE "." "_" _name "${_name}") STRING(TOUPPER ${_name} _nameUpper) + SET(_filename ${CMAKE_CURRENT_BINARY_DIR}/${_filename}) SET(_filenameTmp "${_filename}.in") FILE(WRITE ${_filenameTmp} "/*Created by cmake, do not edit, changes will be lost*/\n") diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index f183eb4..7722c19 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -158,6 +158,7 @@ SET(SRCS cmDocumentationFormatterText.cxx cmDocumentationFormatterUsage.cxx cmDocumentationSection.cxx + cmDocumentCompileDefinitions.h cmDocumentGeneratorExpressions.h cmDocumentVariables.cxx cmDynamicLoader.cxx diff --git a/Source/cmDocumentCompileDefinitions.h b/Source/cmDocumentCompileDefinitions.h new file mode 100644 index 0000000..ef3b3e7 --- /dev/null +++ b/Source/cmDocumentCompileDefinitions.h @@ -0,0 +1,34 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2011 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmDocumentCompileDefinitions_h +#define cmDocumentCompileDefinitions_h + +#define CM_DOCUMENT_COMPILE_DEFINITIONS_DISCLAIMER \ + "Disclaimer: Most native build tools have poor support for escaping " \ + "certain values. CMake has work-arounds for many cases but some " \ + "values may just not be possible to pass correctly. If a value " \ + "does not seem to be escaped correctly, do not attempt to " \ + "work-around the problem by adding escape sequences to the value. " \ + "Your work-around may break in a future version of CMake that " \ + "has improved escape support. Instead consider defining the macro " \ + "in a (configured) header file. Then report the limitation. " \ + "Known limitations include:\n" \ + " # - broken almost everywhere\n" \ + " ; - broken in VS IDE and Borland Makefiles\n" \ + " , - broken in VS IDE\n" \ + " % - broken in some cases in NMake\n" \ + " & | - broken in some cases on MinGW\n" \ + " ^ < > \\\" - broken in most Make tools on Windows\n" \ + "CMake does not reject these values outright because they do work " \ + "in some cases. Use with caution. " + +#endif diff --git a/Source/cmGetCMakePropertyCommand.h b/Source/cmGetCMakePropertyCommand.h index c78671e..d82be70 100644 --- a/Source/cmGetCMakePropertyCommand.h +++ b/Source/cmGetCMakePropertyCommand.h @@ -54,11 +54,14 @@ public: { return " get_cmake_property(VAR property)\n" - "Get a property from the CMake instance. The value of the " - "property is stored in the variable VAR. If the property is " - "not found, CMake will report an error. Some supported properties " + "Get a property from the CMake instance. " + "The value of the property is stored in the variable VAR. " + "If the property is not found, VAR will be set to \"NOTFOUND\". " + "Some supported properties " "include: VARIABLES, CACHE_VARIABLES, COMMANDS, MACROS, and " - "COMPONENTS."; + "COMPONENTS." + "\n" + "See also the more general get_property() command."; } cmTypeMacro(cmGetCMakePropertyCommand, cmCommand); diff --git a/Source/cmGetDirectoryPropertyCommand.h b/Source/cmGetDirectoryPropertyCommand.h index c3a23a3..b7a5f71 100644 --- a/Source/cmGetDirectoryPropertyCommand.h +++ b/Source/cmGetDirectoryPropertyCommand.h @@ -66,7 +66,8 @@ public: "Get a variable definition from a directory. " "This form is useful to get a variable definition from another " "directory." - ; + "\n" + "See also the more general get_property() command."; } cmTypeMacro(cmGetDirectoryPropertyCommand, cmCommand); diff --git a/Source/cmGetSourceFilePropertyCommand.h b/Source/cmGetSourceFilePropertyCommand.h index c1d5e11..56469f8 100644 --- a/Source/cmGetSourceFilePropertyCommand.h +++ b/Source/cmGetSourceFilePropertyCommand.h @@ -53,7 +53,9 @@ public: "stored in the variable VAR. If the property is not found, VAR " "will be set to \"NOTFOUND\". Use set_source_files_properties to set " "property values. Source file properties usually control how the " - "file is built. One property that is always there is LOCATION"; + "file is built. One property that is always there is LOCATION" + "\n" + "See also the more general get_property() command."; } cmTypeMacro(cmGetSourceFilePropertyCommand, cmCommand); diff --git a/Source/cmGetTargetPropertyCommand.h b/Source/cmGetTargetPropertyCommand.h index e1984c3..71c75ef 100644 --- a/Source/cmGetTargetPropertyCommand.h +++ b/Source/cmGetTargetPropertyCommand.h @@ -55,7 +55,9 @@ public: "property values. Properties are usually used to control how " "a target is built, but some query the target instead. " "This command can get properties for any target so far created. " - "The targets do not need to be in the current CMakeLists.txt file."; + "The targets do not need to be in the current CMakeLists.txt file." + "\n" + "See also the more general get_property() command."; } cmTypeMacro(cmGetTargetPropertyCommand, cmCommand); diff --git a/Source/cmGetTestPropertyCommand.h b/Source/cmGetTestPropertyCommand.h index 956cf55..d9f5d9b 100644 --- a/Source/cmGetTestPropertyCommand.h +++ b/Source/cmGetTestPropertyCommand.h @@ -48,11 +48,13 @@ public: virtual const char* GetFullDocumentation() { return - " get_test_property(test VAR property)\n" - "Get a property from the Test. The value of the property is " - "stored in the variable VAR. If the property is not found, " - "CMake will report an error. For a list of standard properties " - "you can type cmake --help-property-list"; + " get_test_property(test property VAR)\n" + "Get a property from the Test. The value of the property is " + "stored in the variable VAR. If the property is not found, VAR " + "will be set to \"NOTFOUND\". For a list of standard properties " + "you can type cmake --help-property-list" + "\n" + "See also the more general get_property() command."; } cmTypeMacro(cmGetTestPropertyCommand, cmCommand); diff --git a/Source/cmIfCommand.h b/Source/cmIfCommand.h index 107a892..4996bc4 100644 --- a/Source/cmIfCommand.h +++ b/Source/cmIfCommand.h @@ -125,10 +125,13 @@ public: "True if the constant is 1, ON, YES, TRUE, Y, or a non-zero number. " "False if the constant is 0, OFF, NO, FALSE, N, IGNORE, \"\", " "or ends in the suffix '-NOTFOUND'. " - "Named boolean constants are case-insensitive." + "Named boolean constants are case-insensitive. " + "If the argument is not one of these constants, " + "it is treated as a variable:" "\n" " if(<variable>)\n" - "True if the variable's value is not a false constant." + "True if the variable is defined to a value that is not a false " + "constant. False otherwise. " "\n" " if(NOT <expression>)\n" "True if the expression is not true." @@ -163,32 +166,25 @@ public: "Behavior is well-defined only for full paths.\n" " if(IS_ABSOLUTE path)\n" "True if the given path is an absolute path.\n" - " if(variable MATCHES regex)\n" - " if(string MATCHES regex)\n" + " if(<variable|string> MATCHES regex)\n" "True if the given string or variable's value matches the given " "regular expression.\n" - " if(variable LESS number)\n" - " if(string LESS number)\n" - " if(variable GREATER number)\n" - " if(string GREATER number)\n" - " if(variable EQUAL number)\n" - " if(string EQUAL number)\n" + " if(<variable|string> LESS <variable|string>)\n" + " if(<variable|string> GREATER <variable|string>)\n" + " if(<variable|string> EQUAL <variable|string>)\n" "True if the given string or variable's value is a valid number and " "the inequality or equality is true.\n" - " if(variable STRLESS string)\n" - " if(string STRLESS string)\n" - " if(variable STRGREATER string)\n" - " if(string STRGREATER string)\n" - " if(variable STREQUAL string)\n" - " if(string STREQUAL string)\n" + " if(<variable|string> STRLESS <variable|string>)\n" + " if(<variable|string> STRGREATER <variable|string>)\n" + " if(<variable|string> STREQUAL <variable|string>)\n" "True if the given string or variable's value is lexicographically " "less (or greater, or equal) than the string or variable on the right.\n" - " if(version1 VERSION_LESS version2)\n" - " if(version1 VERSION_EQUAL version2)\n" - " if(version1 VERSION_GREATER version2)\n" + " if(<variable|string> VERSION_LESS <variable|string>)\n" + " if(<variable|string> VERSION_EQUAL <variable|string>)\n" + " if(<variable|string> VERSION_GREATER <variable|string>)\n" "Component-wise integer version number comparison (version format is " "major[.minor[.patch[.tweak]]]).\n" - " if(DEFINED variable)\n" + " if(DEFINED <variable>)\n" "True if the given variable is defined. It does not matter if the " "variable is true or false just if it has been set.\n" " if((expression) AND (expression OR (expression)))\n" @@ -199,38 +195,27 @@ public: "that contains them." "\n" - "The if statement was written fairly early in CMake's history " - "and it has some convenience features that are worth covering. " - "The if statement reduces operations until there is " - "a single remaining value, at that point if the case " - "insensitive value is: ON, 1, YES, TRUE, Y it returns true, if " - "it is OFF, 0, NO, FALSE, N, NOTFOUND, *-NOTFOUND, IGNORE it " - "will return false. \n" - - "This is fairly reasonable. The convenience feature that sometimes " - "throws new authors is how CMake handles values that do not " - "match the true or false list. Those values are treated as " - "variables and are dereferenced even though they do not have " - "the required ${} syntax. This means that if you write\n" - - " if (boobah)\n" - - "CMake will treat it as if you wrote \n" - - " if (${boobah})\n" - - "likewise if you write \n" - - " if (fubar AND sol)\n" - - "CMake will conveniently treat it as \n" - - " if (\"${fubar}\" AND \"${sol}\")\n" - - "The later is really the correct way to write it, but the " - "former will work as well. Only some operations in the if " - "statement have this special handling of arguments. The " - "specific details follow: \n" + "The if command was written very early in CMake's history, predating " + "the ${} variable evaluation syntax, and for convenience evaluates " + "variables named by its arguments as shown in the above signatures. " + "Note that normal variable evaluation with ${} applies before the " + "if command even receives the arguments. " + "Therefore code like\n" + " set(var1 OFF)\n" + " set(var2 \"var1\")\n" + " if(${var2})\n" + "appears to the if command as\n" + " if(var1)\n" + "and is evaluated according to the if(<variable>) case " + "documented above. " + "The result is OFF which is false. " + "However, if we remove the ${} from the example then the command sees\n" + " if(var2)\n" + "which is true because var2 is defined to \"var1\" which is not " + "a false constant." + "\n" + "Automatic evaluation applies in the other cases whenever the " + "above-documented signature accepts <variable|string>:\n" "1) The left hand argument to MATCHES is first checked to see " "if it is a defined variable, if so the variable's value is " diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 53f4c3c..41d36dc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -22,6 +22,7 @@ #include "cmFunctionBlocker.h" #include "cmListFileCache.h" #include "cmCommandArgumentParserHelper.h" +#include "cmDocumentCompileDefinitions.h" #include "cmTest.h" #ifdef CMAKE_BUILD_WITH_CMAKE # include "cmVariableWatch.h" @@ -3492,14 +3493,7 @@ void cmMakefile::DefineProperties(cmake *cm) "are not supported by the native build tool. " "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 " - "values may just not be possible to pass correctly. If a value " - "does not seem to be escaped correctly, do not attempt to " - "work-around the problem by adding escape sequences to the value. " - "Your work-around may break in a future version of CMake that " - "has improved escape support. Instead consider defining the macro " - "in a (configured) header file. Then report the limitation."); + CM_DOCUMENT_COMPILE_DEFINITIONS_DISCLAIMER); cm->DefineProperty ("COMPILE_DEFINITIONS_<CONFIG>", cmProperty::DIRECTORY, diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 26328cf..ed1da7b 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -16,6 +16,7 @@ #include "cmMakefile.h" #include "cmSystemTools.h" #include "cmake.h" +#include "cmDocumentCompileDefinitions.h" //---------------------------------------------------------------------------- cmSourceFile::cmSourceFile(cmMakefile* mf, const char* name): @@ -187,8 +188,13 @@ bool cmSourceFile::FindFullPath(std::string* error) } cmOStringStream e; - e << "Cannot find source file \"" << this->Location.GetName() << "\""; - e << ". Tried extensions"; + std::string missing = this->Location.GetDirectory(); + if(!missing.empty()) + { + missing += "/"; + } + missing += this->Location.GetName(); + e << "Cannot find source file:\n " << missing << "\nTried extensions"; for(std::vector<std::string>::const_iterator ext = srcExts.begin(); ext != srcExts.end(); ++ext) { @@ -411,15 +417,7 @@ void cmSourceFile::DefineProperties(cmake *cm) "The VS6 IDE does not support definition values with spaces " "(but NMake does). Xcode does not support per-configuration " "definitions on source files.\n" - "Disclaimer: Most native build tools have poor support for escaping " - "certain values. CMake has work-arounds for many cases but some " - "values may just not be possible to pass correctly. If a value " - "does not seem to be escaped correctly, do not attempt to " - "work-around the problem by adding escape sequences to the value. " - "Your work-around may break in a future version of CMake that " - "has improved escape support. Instead consider defining the macro " - "in a (configured) header file. Then report the limitation."); - + CM_DOCUMENT_COMPILE_DEFINITIONS_DISCLAIMER); cm->DefineProperty ("COMPILE_DEFINITIONS_<CONFIG>", cmProperty::SOURCE_FILE, diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 52574e2..72efce3 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -16,6 +16,7 @@ #include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" #include "cmComputeLinkInformation.h" +#include "cmDocumentCompileDefinitions.h" #include "cmListFileCache.h" #include "cmGeneratorExpression.h" #include <cmsys/RegularExpression.hxx> @@ -146,14 +147,7 @@ void cmTarget::DefineProperties(cmake *cm) "are not supported by the native build tool. " "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 " - "values may just not be possible to pass correctly. If a value " - "does not seem to be escaped correctly, do not attempt to " - "work-around the problem by adding escape sequences to the value. " - "Your work-around may break in a future version of CMake that " - "has improved escape support. Instead consider defining the macro " - "in a (configured) header file. Then report the limitation."); + CM_DOCUMENT_COMPILE_DEFINITIONS_DISCLAIMER); cm->DefineProperty ("COMPILE_DEFINITIONS_<CONFIG>", cmProperty::TARGET, diff --git a/Source/cmTryCompileCommand.h b/Source/cmTryCompileCommand.h index 3a30e4c..5b4ffca 100644 --- a/Source/cmTryCompileCommand.h +++ b/Source/cmTryCompileCommand.h @@ -47,7 +47,7 @@ public: */ virtual const char* GetTerseDocumentation() { - return "Try compiling some code."; + return "Try building some code."; } /** @@ -55,23 +55,28 @@ public: virtual const char* GetFullDocumentation() { return - " try_compile(RESULT_VAR bindir srcdir\n" - " projectName <targetname> [CMAKE_FLAGS <Flags>]\n" - " [OUTPUT_VARIABLE var])\n" - "Try compiling a program. In this form, srcdir should contain a " - "complete CMake project with a CMakeLists.txt file and all sources. The " - "bindir and srcdir will not be deleted after this command is run. " - "If <target name> is specified then build just that target " - "otherwise the all or ALL_BUILD target is built.\n" - " try_compile(RESULT_VAR bindir srcfile\n" - " [CMAKE_FLAGS <Flags>]\n" - " [COMPILE_DEFINITIONS <flags> ...]\n" - " [OUTPUT_VARIABLE var]\n" - " [COPY_FILE <filename> )\n" - "Try compiling a srcfile. In this case, the user need only supply a " - "source file. CMake will create the appropriate CMakeLists.txt file " - "to build the source. If COPY_FILE is used, the compiled file will be " - "copied to the given file.\n" + " try_compile(RESULT_VAR <bindir> <srcdir>\n" + " <projectName> [targetName] [CMAKE_FLAGS flags...]\n" + " [OUTPUT_VARIABLE <var>])\n" + "Try building a project. In this form, srcdir should contain a " + "complete CMake project with a CMakeLists.txt file and all sources. " + "The bindir and srcdir will not be deleted after this command is run. " + "Specify targetName to build a specific target instead of the 'all' or " + "'ALL_BUILD' target." + "\n" + " try_compile(RESULT_VAR <bindir> <srcfile>\n" + " [CMAKE_FLAGS flags...]\n" + " [COMPILE_DEFINITIONS flags...]\n" + " [OUTPUT_VARIABLE <var>]\n" + " [COPY_FILE <fileName>])\n" + "Try building a source file into an executable. " + "In this form the user need only supply a source file that defines " + "a 'main'. " + "CMake will create a CMakeLists.txt file to build the source " + "as an executable. " + "Specify COPY_FILE to get a copy of the linked executable at the " + "given fileName." + "\n" "In this version all files in bindir/CMakeFiles/CMakeTmp, " "will be cleaned automatically, for debugging a --debug-trycompile can " "be passed to cmake to avoid the clean. Some extra flags that " diff --git a/Source/kwsys/kwsysDateStamp.cmake b/Source/kwsys/kwsysDateStamp.cmake index 28d4c2d..64abcb3 100644 --- a/Source/kwsys/kwsysDateStamp.cmake +++ b/Source/kwsys/kwsysDateStamp.cmake @@ -18,4 +18,4 @@ SET(KWSYS_DATE_STAMP_YEAR 2011) SET(KWSYS_DATE_STAMP_MONTH 01) # KWSys version date day component. Format is DD. -SET(KWSYS_DATE_STAMP_DAY 13) +SET(KWSYS_DATE_STAMP_DAY 19) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index c5331be..791a778 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -149,7 +149,7 @@ IF(BUILD_TESTING) ADD_TEST_MACRO(PreOrder PreOrder) ADD_TEST_MACRO(MissingSourceFile MissingSourceFile) SET_TESTS_PROPERTIES(MissingSourceFile PROPERTIES - PASS_REGULAR_EXPRESSION "CMake Error at CMakeLists.txt:3 \\(add_executable\\):[ \r\n]*Cannot find source file \"MissingSourceFile.c\"") + PASS_REGULAR_EXPRESSION "CMake Error at CMakeLists.txt:3 \\(add_executable\\):[ \r\n]*Cannot find source file:[ \r\n]*DoesNotExist/MissingSourceFile.c") ADD_TEST_MACRO(COnly COnly) ADD_TEST_MACRO(CxxOnly CxxOnly) ADD_TEST_MACRO(IPO COnly/COnly) diff --git a/Tests/MissingSourceFile/CMakeLists.txt b/Tests/MissingSourceFile/CMakeLists.txt index 42b7c51..a7206c8 100644 --- a/Tests/MissingSourceFile/CMakeLists.txt +++ b/Tests/MissingSourceFile/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 2.8) project(MissingSourceFile C) -add_executable(MissingSourceFile MissingSourceFile.c) +add_executable(MissingSourceFile DoesNotExist/MissingSourceFile.c) diff --git a/Utilities/Release/v20n250_aix_release.cmake b/Utilities/Release/v20n250_aix_release.cmake index 88eb8d0..7a5c8b9 100644 --- a/Utilities/Release/v20n250_aix_release.cmake +++ b/Utilities/Release/v20n250_aix_release.cmake @@ -1,9 +1,9 @@ -set(CMAKE_RELEASE_DIRECTORY "/bench1/noibm34/CMakeReleaseDirectory" ) +set(CMAKE_RELEASE_DIRECTORY "/bench1/noibm34/CMakeReleaseDirectory") set(FINAL_PATH /u/noibm34/cmake-release) set(PROCESSORS 2) set(CVS_COMMAND /vol/local/bin/cvs) -set(HOST "sshserv.centers.ihost.com" ) -set(EXTRA_HOP "rsh v20n250" ) +set(HOST "sshserv.centers.ihost.com") +set(EXTRA_HOP "rsh p90n03") set(MAKE_PROGRAM "make") set(CC "xlc_r") set(CXX "xlC_r") @@ -26,6 +26,11 @@ cmake_date_stamp_component() " } +cmake_toupper() +{ + echo "$1" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' +} + # Detect system and directory information. cmake_system=`uname` cmake_source_dir=`cd "\`dirname \"$0\"\`";pwd` @@ -294,11 +299,23 @@ Configuration: --verbose display more information --parallel=n bootstrap cmake in parallel, where n is number of nodes [1] - --init=FILE use FILE for cmake initialization - --system-libs use system-installed third-party libraries + --enable-ccache Enable ccache when building cmake + --init=FILE load FILE as script to populate cache + --system-libs use all system-installed third-party libraries (for use only by package maintainers) - --no-system-libs use cmake-provided third-party libraries + --no-system-libs use all cmake-provided third-party libraries (default) + --system-curl use system-installed curl library + --no-system-curl use cmake-provided curl library (default) + --system-expat use system-installed expat library + --no-system-expat use cmake-provided expat library (default) + --system-zlib use system-installed zlib library + --no-system-zlib use cmake-provided zlib library (default) + --system-bzip2 use system-installed bzip2 library + --no-system-bzip2 use cmake-provided bzip2 library (default) + --system-libarchive use system-installed libarchive library + --no-system-libarchive use cmake-provided libarchive library (default) + --qt-gui build the Qt-based GUI (requires Qt >= 4.2) --no-qt-gui do not build the Qt-based GUI (default) --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt @@ -507,6 +524,7 @@ cmake_try_make () # Parse arguments cmake_verbose= cmake_parallel_make= +cmake_ccache_enabled= cmake_prefix_dir="${cmake_default_prefix}" for a in "$@"; do if echo $a | grep "^--prefix=" > /dev/null 2> /dev/null; then @@ -528,11 +546,20 @@ for a in "$@"; do if echo $a | grep "^--init=" > /dev/null 2> /dev/null; then cmake_init_file=`echo $a | sed "s/^--init=//"` fi + for lib in bzip2 curl expat libarchive zlib; do + if echo $a | grep "^--system-${lib}" > /dev/null 2> /dev/null; then + cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper ${lib}`=1" + break + elif echo $a | grep "^--no-system-${lib}" > /dev/null 2> /dev/null; then + cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper ${lib}`=0" + break + fi + done if echo $a | grep "^--system-libs" > /dev/null 2> /dev/null; then - cmake_bootstrap_system_libs="-DCMAKE_USE_SYSTEM_LIBRARIES=1" + cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=1" fi if echo $a | grep "^--no-system-libs" > /dev/null 2> /dev/null; then - cmake_bootstrap_system_libs="-DCMAKE_USE_SYSTEM_LIBRARIES=0" + cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARIES=0" fi if echo $a | grep "^--qt-gui" > /dev/null 2> /dev/null; then cmake_bootstrap_qt_gui="1" @@ -553,6 +580,9 @@ for a in "$@"; do if echo $a | grep "^--verbose" > /dev/null 2> /dev/null; then cmake_verbose=TRUE fi + if echo $a | grep "^--enable-ccache" > /dev/null 2> /dev/null; then + cmake_ccache_enabled=TRUE + fi done # If verbose, display some information about bootstrap @@ -1488,13 +1518,21 @@ cd "${cmake_binary_dir}" # build with same compiler and make CC="${cmake_c_compiler}" CXX="${cmake_cxx_compiler}" +if [ -n "${cmake_ccache_enabled}" ]; then + CC="ccache ${CC}" + CXX="ccache ${CXX}" +fi MAKE="${cmake_make_processor}" export CC export CXX export MAKE # Run bootstrap CMake to configure real CMake -"${cmake_bootstrap_dir}/cmake" "${cmake_source_dir}" "-C${cmake_bootstrap_dir}/InitialCacheFlags.cmake" "-G${cmake_bootstrap_generator}" ${cmake_bootstrap_system_libs} +cmake_options="-DCMAKE_BOOTSTRAP=1" +if [ -n "${cmake_verbose}" ]; then + cmake_options="${cmake_options} -DCMAKE_VERBOSE_MAKEFILE=1" +fi +"${cmake_bootstrap_dir}/cmake" "${cmake_source_dir}" "-C${cmake_bootstrap_dir}/InitialCacheFlags.cmake" "-G${cmake_bootstrap_generator}" ${cmake_options} ${cmake_bootstrap_system_libs} RES=$? if [ "${RES}" -ne "0" ]; then cmake_error 11 "Problem while running initial CMake" |