diff options
-rw-r--r-- | Modules/FindBISON.cmake | 2 | ||||
-rw-r--r-- | Modules/FindCxxTest.cmake | 102 | ||||
-rw-r--r-- | Modules/Qt4Macros.cmake | 11 | ||||
-rw-r--r-- | Source/cmInstallCommand.h | 1 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.cxx | 23 | ||||
-rw-r--r-- | Source/kwsys/SystemTools.hxx.in | 6 | ||||
-rw-r--r-- | Source/kwsys/kwsysDateStamp.cmake | 2 |
7 files changed, 108 insertions, 39 deletions
diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index 0c622fb..6021b12 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -96,7 +96,7 @@ IF(BISON_EXECUTABLE) # MACRO(BISON_TARGET Name BisonInput BisonOutput) SET(BISON_TARGET_output_header "") - SET(BISON_TARGET_command_opt "") + SET(BISON_TARGET_cmdopt "") SET(BISON_TARGET_outputs "${BisonOutput}") IF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7) MESSAGE(SEND_ERROR "Usage") diff --git a/Modules/FindCxxTest.cmake b/Modules/FindCxxTest.cmake index 759b4fd..6a66d21 100644 --- a/Modules/FindCxxTest.cmake +++ b/Modules/FindCxxTest.cmake @@ -5,20 +5,37 @@ # # INPUT Variables # -# CXXTEST_USE_PYTHON -# If true, the CXXTEST_ADD_TEST macro will use -# the Python test generator instead of Perl. +# CXXTEST_USE_PYTHON [deprecated since 1.3] +# Only used in the case both Python & Perl +# are detected on the system to control +# which CxxTest code generator is used. +# +# NOTE: In older versions of this Find Module, +# this variable controlled if the Python test +# generator was used instead of the Perl one, +# regardless of which scripting language the +# user had installed. +# +# CXXTEST_TESTGEN_ARGS (since CMake 2.8.3) +# Specify a list of options to pass to the CxxTest code +# generator. If not defined, --error-printer is +# passed. # # OUTPUT Variables # # CXXTEST_FOUND # True if the CxxTest framework was found -# CXXTEST_INCLUDE_DIR +# CXXTEST_INCLUDE_DIRS # Where to find the CxxTest include directory # CXXTEST_PERL_TESTGEN_EXECUTABLE -# The perl-based test generator. +# The perl-based test generator # CXXTEST_PYTHON_TESTGEN_EXECUTABLE -# The python-based test generator. +# The python-based test generator +# CXXTEST_TESTGEN_EXECUTABLE (since CMake 2.8.3) +# The test generator that is actually used (chosen using user preferences +# and interpreters found in the system) +# CXXTEST_TESTGEN_INTERPRETER (since CMake 2.8.3) +# The full path to the Perl or Python executable on the system # # MACROS for optional use by CMake users: # @@ -26,9 +43,11 @@ # Creates a CxxTest runner and adds it to the CTest testing suite # Parameters: # test_name The name of the test -# gen_source_file The generated source filename to be generated by CxxTest +# gen_source_file The generated source filename to be +# generated by CxxTest # input_files_to_testgen The list of header files containing the -# CxxTest::TestSuite's to be included in this runner +# CxxTest::TestSuite's to be included in +# this runner # # #============== # Example Usage: @@ -65,8 +84,8 @@ # #============================================================================= -# Copyright 2008-2009 Kitware, Inc. -# Copyright 2008-2009 Philip Lowman <philip@yhbt.com> +# Copyright 2008-2010 Kitware, Inc. +# Copyright 2008-2010 Philip Lowman <philip@yhbt.com> # # Distributed under the OSI-approved BSD License (the "License"); # see accompanying file Copyright.txt for details. @@ -78,6 +97,14 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) +# Version 1.3 (8/19/10) (CMake 2.8.3) +# Included patch by Simone Rossetto to check if either Python or Perl +# are present in the system. Whichever intepreter that is detected +# is now used to run the test generator program. If both interpreters +# are detected, the CXXTEST_USE_PYTHON variable is obeyed. +# +# Also added support for CXXTEST_TESTGEN_ARGS, for manually specifying +# options to the CxxTest code generator. # Version 1.2 (3/2/08) # Included patch from Tyler Roscoe to have the perl & python binaries # detected based on CXXTEST_INCLUDE_DIR @@ -95,17 +122,12 @@ #============================================================= macro(CXXTEST_ADD_TEST _cxxtest_testname _cxxtest_outfname) set(_cxxtest_real_outfname ${CMAKE_CURRENT_BINARY_DIR}/${_cxxtest_outfname}) - if(CXXTEST_USE_PYTHON) - set(_cxxtest_executable ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE}) - else() - set(_cxxtest_executable ${CXXTEST_PERL_TESTGEN_EXECUTABLE}) - endif() add_custom_command( OUTPUT ${_cxxtest_real_outfname} DEPENDS ${ARGN} - COMMAND ${_cxxtest_executable} - --error-printer -o ${_cxxtest_real_outfname} ${ARGN} + COMMAND ${CXXTEST_TESTGEN_INTERPRETER} + ${CXXTEST_TESTGEN_EXECUTABLE} ${CXXTEST_TESTGEN_ARGS} -o ${_cxxtest_real_outfname} ${ARGN} ) set_source_files_properties(${_cxxtest_real_outfname} PROPERTIES GENERATED true) @@ -124,14 +146,48 @@ endmacro(CXXTEST_ADD_TEST) #============================================================= # main() #============================================================= +if(NOT DEFINED CXXTEST_TESTGEN_ARGS) + set(CXXTEST_TESTGEN_ARGS --error-printer) +endif() + +find_package(PythonInterp QUIET) +find_package(Perl QUIET) find_path(CXXTEST_INCLUDE_DIR cxxtest/TestSuite.h) -find_program(CXXTEST_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl - PATHS ${CXXTEST_INCLUDE_DIR}) find_program(CXXTEST_PYTHON_TESTGEN_EXECUTABLE cxxtestgen.py - PATHS ${CXXTEST_INCLUDE_DIR}) + PATHS ${CXXTEST_INCLUDE_DIR}) +find_program(CXXTEST_PERL_TESTGEN_EXECUTABLE cxxtestgen.pl + PATHS ${CXXTEST_INCLUDE_DIR}) + +if(PYTHONINTERP_FOUND OR PERL_FOUND) + include(FindPackageHandleStandardArgs) + + if(PYTHONINTERP_FOUND AND (CXXTEST_USE_PYTHON OR NOT PERL_FOUND)) + set(CXXTEST_TESTGEN_EXECUTABLE ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE}) + set(CXXTEST_TESTGEN_INTERPRETER ${PYTHON_EXECUTABLE}) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(CxxTest DEFAULT_MSG + CXXTEST_INCLUDE_DIR CXXTEST_PYTHON_TESTGEN_EXECUTABLE) + + elseif(PERL_FOUND) + set(CXXTEST_TESTGEN_EXECUTABLE ${CXXTEST_PERL_TESTGEN_EXECUTABLE}) + set(CXXTEST_TESTGEN_INTERPRETER ${PERL_EXECUTABLE}) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(CxxTest DEFAULT_MSG + CXXTEST_INCLUDE_DIR CXXTEST_PERL_TESTGEN_EXECUTABLE) + endif() + + if(CXXTEST_FOUND) + set(CXXTEST_INCLUDE_DIRS ${CXXTEST_INCLUDE_DIR}) + endif() + +else() -include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CxxTest DEFAULT_MSG CXXTEST_INCLUDE_DIR) + set(CXXTEST_FOUND false) + if(NOT CxxTest_FIND_QUIETLY) + if(CxxTest_FIND_REQUIRED) + message(FATAL_ERROR "Neither Python nor Perl found, cannot use CxxTest, aborting!") + else() + message(STATUS "Neither Python nor Perl found, CxxTest will not be used.") + endif() + endif() -set(CXXTEST_INCLUDE_DIRS ${CXXTEST_INCLUDE_DIR}) +endif() diff --git a/Modules/Qt4Macros.cmake b/Modules/Qt4Macros.cmake index 10cf1d1..700d3a2 100644 --- a/Modules/Qt4Macros.cmake +++ b/Modules/Qt4Macros.cmake @@ -129,7 +129,11 @@ MACRO (QT4_GENERATE_MOC infile outfile ) # get include dirs and flags QT4_GET_MOC_FLAGS(moc_flags) GET_FILENAME_COMPONENT(abs_infile ${infile} ABSOLUTE) - QT4_CREATE_MOC_COMMAND(${abs_infile} ${outfile} "${moc_flags}" "") + SET(_outfile "${outfile}") + IF(NOT IS_ABSOLUTE "${outfile}") + SET(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${outfile}") + ENDIF(NOT IS_ABSOLUTE "${outfile}") + QT4_CREATE_MOC_COMMAND(${abs_infile} ${_outfile} "${moc_flags}" "") SET_SOURCE_FILES_PROPERTIES(${outfile} PROPERTIES SKIP_AUTOMOC TRUE) # dont run automoc on this file ENDMACRO (QT4_GENERATE_MOC) @@ -187,10 +191,9 @@ MACRO (QT4_ADD_RESOURCES outfiles ) SET(_RC_DEPENDS) FOREACH(_RC_FILE ${_RC_FILES}) STRING(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}") - STRING(REGEX MATCH "^/|([A-Za-z]:/)" _ABS_PATH_INDICATOR "${_RC_FILE}") - IF(NOT _ABS_PATH_INDICATOR) + IF(NOT IS_ABSOLUTE "${_RC_FILE}") SET(_RC_FILE "${rc_path}/${_RC_FILE}") - ENDIF(NOT _ABS_PATH_INDICATOR) + ENDIF(NOT IS_ABSOLUTE "${_RC_FILE}") SET(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}") ENDFOREACH(_RC_FILE) ADD_CUSTOM_COMMAND(OUTPUT ${outfile} diff --git a/Source/cmInstallCommand.h b/Source/cmInstallCommand.h index ea0a1ec..8f62322 100644 --- a/Source/cmInstallCommand.h +++ b/Source/cmInstallCommand.h @@ -175,6 +175,7 @@ public: "The EXPORT option associates the installed target files with an " "export called <export-name>. " "It must appear before any RUNTIME, LIBRARY, or ARCHIVE options. " + "To actually install the export file itself, call install(EXPORT). " "See documentation of the install(EXPORT ...) signature below for " "details." "\n" diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index bcdb193..8aa99eb 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -1405,6 +1405,10 @@ kwsys_stl::vector<kwsys::String> SystemTools::SplitString(const char* p, char se { kwsys_stl::string path = p; kwsys_stl::vector<kwsys::String> paths; + if(path.empty()) + { + return paths; + } if(isPath && path[0] == '/') { path.erase(path.begin()); @@ -3059,30 +3063,35 @@ kwsys_stl::string SystemTools::RelativePath(const char* local, const char* remot static int GetCasePathName(const kwsys_stl::string & pathIn, kwsys_stl::string & casePath) { - kwsys_stl::vector<kwsys::String> path_components = - SystemTools::SplitString(pathIn.c_str(), '/', true); - if(path_components.empty()) + kwsys_stl::vector<kwsys_stl::string> path_components; + SystemTools::SplitPath(pathIn.c_str(), path_components); + if(path_components[0].empty()) // First component always exists. { + // Relative paths cannot be converted. casePath = ""; return 0; } + + // Start with root component. kwsys_stl::vector<kwsys_stl::string>::size_type idx = 0; - // assume always absolute path, so just take first casePath = path_components[idx++]; + const char* sep = ""; + // If network path, fill casePath with server/share so FindFirstFile // will work after that. Maybe someday call other APIs to get // actual case of servers and shares. - if(path_components.size() > 2 && pathIn.size() >= 2 && - pathIn[0] == '/' && pathIn[1] == '/') + if(path_components.size() > 2 && path_components[0] == "//") { casePath += path_components[idx++]; casePath += "/"; casePath += path_components[idx++]; + sep = "/"; } for(; idx < path_components.size(); idx++) { - casePath += "/"; + casePath += sep; + sep = "/"; kwsys_stl::string test_str = casePath; test_str += path_components[idx]; diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index ec70320..cf47923 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/Source/kwsys/SystemTools.hxx.in @@ -372,8 +372,8 @@ public: * "c:/" = Windows full path (can be any drive letter) * "c:" = Windows drive-letter relative path (can be any drive letter) * "//" = Network path - * "~" = Home path for current user - * "~u" = Home path for user 'u' + * "~/" = Home path for current user + * "~u/" = Home path for user 'u' * "" = Relative path * * A pointer to the rest of the path after the root component is @@ -385,7 +385,7 @@ public: /** * Split a path name into its basic components. The first component - * is one of the roots returned by SplitPathRootComponent. + * always exists and is the root returned by SplitPathRootComponent. * The remaining components form the path. If there is a trailing * slash then the last component is the empty string. The * components can be recombined as "c[0]c[1]/c[2]/.../c[n]" to diff --git a/Source/kwsys/kwsysDateStamp.cmake b/Source/kwsys/kwsysDateStamp.cmake index 6acbd29..8002939 100644 --- a/Source/kwsys/kwsysDateStamp.cmake +++ b/Source/kwsys/kwsysDateStamp.cmake @@ -18,4 +18,4 @@ SET(KWSYS_DATE_STAMP_YEAR 2010) SET(KWSYS_DATE_STAMP_MONTH 08) # KWSys version date day component. Format is DD. -SET(KWSYS_DATE_STAMP_DAY 24) +SET(KWSYS_DATE_STAMP_DAY 31) |