diff options
-rw-r--r-- | Help/command/add_library.rst | 2 | ||||
-rw-r--r-- | Modules/CMakeCSharpInformation.cmake | 22 | ||||
-rw-r--r-- | Modules/FindDevIL.cmake | 4 | ||||
-rw-r--r-- | Modules/FindOpenSSL.cmake | 4 | ||||
-rw-r--r-- | Modules/FindPkgConfig.cmake | 4 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Source/CPack/cmCPackGenerator.cxx | 1 | ||||
-rw-r--r-- | Source/cmFileCommand.cxx | 4 | ||||
-rw-r--r-- | Source/cmQtAutoGenerators.cxx | 37 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/ArchiveCommon/common_helpers.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/RunCMakeTest.cmake | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/STGZ/Helpers.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/VerifyResult.cmake | 6 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/SYMLINKS/ExpectedFiles.cmake | 13 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/SYMLINKS/TGZ-Prerequirements.cmake | 5 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/SYMLINKS/VerifyResult.cmake | 26 | ||||
-rw-r--r-- | Tests/RunCMake/CPack/tests/SYMLINKS/test.cmake | 14 | ||||
-rwxr-xr-x | bootstrap | 1 |
18 files changed, 115 insertions, 35 deletions
diff --git a/Help/command/add_library.rst b/Help/command/add_library.rst index 02788e3..de5335e 100644 --- a/Help/command/add_library.rst +++ b/Help/command/add_library.rst @@ -123,7 +123,7 @@ Alias Libraries Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can be used to refer to ``<target>`` in subsequent commands. The ``<name>`` does -not appear in the generatedbuildsystem as a make target. The ``<target>`` +not appear in the generated buildsystem as a make target. The ``<target>`` may not be an :ref:`Imported Target <Imported Targets>` or an ``ALIAS``. ``ALIAS`` targets can be used as linkable targets and as targets to read properties from. They can also be tested for existence with the diff --git a/Modules/CMakeCSharpInformation.cmake b/Modules/CMakeCSharpInformation.cmake index dc775bd..cd86016 100644 --- a/Modules/CMakeCSharpInformation.cmake +++ b/Modules/CMakeCSharpInformation.cmake @@ -68,38 +68,38 @@ if(CMAKE_CSharp_STANDARD_LIBRARIES_INIT) mark_as_advanced(CMAKE_CSharp_STANDARD_LIBRARIES) endif() -# set missing flags (if they do not exist). This is needed in the +# set missing flags (if they are not defined). This is needed in the # unlikely case that you have only C# and no C/C++ targets in your # project. -if(NOT EXISTS CMAKE_SHARED_LINKER_FLAGS) +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS) set(CMAKE_SHARED_LINKER_FLAGS "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_SHARED_LINKER_FLAGS_DEBUG) +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_DEBUG) set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_SHARED_LINKER_FLAGS_RELEASE) +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELEASE) set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL) +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL) set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO) +if(NOT DEFINED CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO) set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_EXE_LINKER_FLAGS) +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS) set(CMAKE_EXE_LINKER_FLAGS "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_EXE_LINKER_FLAGS_DEBUG) +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_DEBUG) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_EXE_LINKER_FLAGS_RELEASE) +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELEASE) set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_EXE_LINKER_FLAGS_MINSIZEREL) +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_MINSIZEREL) set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE STRING "" FORCE) endif() -if(NOT EXISTS CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO) +if(NOT DEFINED CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO) set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE) endif() diff --git a/Modules/FindDevIL.cmake b/Modules/FindDevIL.cmake index 4b868a2..f6c8e3f 100644 --- a/Modules/FindDevIL.cmake +++ b/Modules/FindDevIL.cmake @@ -25,7 +25,7 @@ # library interfaces with OpenGL. It is not strictly needed # in applications. # IL_INCLUDE_DIR - where to find the il.h, ilu.h and ilut.h files. -# IL_FOUND - this is set to TRUE if all the above variables were set. +# DevIL_FOUND - this is set to TRUE if all the above variables were set. # This will be set to false if ILU or ILUT are not found, # even if they are not needed. In most systems, if one # library is found all the others are as well. That's the @@ -70,3 +70,5 @@ find_library(ILU_LIBRARIES FIND_PACKAGE_HANDLE_STANDARD_ARGS(DevIL DEFAULT_MSG IL_LIBRARIES ILU_LIBRARIES IL_INCLUDE_DIR) +# provide legacy variable for compatiblity +set(IL_FOUND ${DevIL_FOUND}) diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake index 1209560..f32eb50 100644 --- a/Modules/FindOpenSSL.cmake +++ b/Modules/FindOpenSSL.cmake @@ -376,7 +376,7 @@ set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ) if (OPENSSL_VERSION) find_package_handle_standard_args(OpenSSL REQUIRED_VARS - OPENSSL_SSL_LIBRARY + #OPENSSL_SSL_LIBRARY # FIXME: require based on a component request? OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR VERSION_VAR @@ -386,7 +386,7 @@ if (OPENSSL_VERSION) ) else () find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR" - OPENSSL_SSL_LIBRARY + #OPENSSL_SSL_LIBRARY # FIXME: require based on a component request? OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR ) diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake index 54572f0..12a5ded 100644 --- a/Modules/FindPkgConfig.cmake +++ b/Modules/FindPkgConfig.cmake @@ -190,10 +190,12 @@ function(_pkg_create_imp_target _prefix _no_cmake_path _no_cmake_environment_pat string(APPEND _find_opts " NO_CMAKE_ENVIRONMENT_PATH") endif() + unset(_search_paths) foreach (flag IN LISTS ${_prefix}_LDFLAGS) if (flag MATCHES "^-L(.*)") # only look into the given paths from now on - set(_find_opts HINTS ${CMAKE_MATCH_1} NO_DEFAULT_PATH) + list(APPEND _search_paths ${CMAKE_MATCH_1}) + set(_find_opts HINTS ${_search_paths} NO_DEFAULT_PATH) continue() endif() if (flag MATCHES "^-l(.*)") diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e2a2a84..c3bee5b 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 8) -set(CMake_VERSION_PATCH 20170514) +set(CMake_VERSION_PATCH 20170516) #set(CMake_VERSION_RC 1) diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index c873529..3e113d3 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -795,6 +795,7 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( cmsys::Glob glA; glA.RecurseOn(); glA.SetRecurseListDirs(true); + glA.SetRecurseThroughSymlinks(false); glA.FindFiles(findExpr); std::vector<std::string> filesAfter = glA.GetFiles(); std::sort(filesAfter.begin(), filesAfter.end()); diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 2c25e9b..ff6e2b7 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -44,6 +44,10 @@ #include "cmELF.h" #endif +#if defined(_WIN32) +#include <windows.h> +#endif + class cmSystemToolsFileTime; // Table of permissions flags. diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 7461a0a..d40e809 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -396,6 +396,14 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile( if (this->MocEnabled()) { InfoGet(makefile, "AM_MOC_SKIP", this->MocSkipList); InfoGet(makefile, "AM_MOC_DEFINITIONS", config, this->MocDefinitions); +#ifdef _WIN32 + { + const std::string win32("WIN32"); + if (!ListContains(this->MocDefinitions, win32)) { + this->MocDefinitions.push_back(win32); + } + } +#endif InfoGet(makefile, "AM_MOC_INCLUDES", config, this->MocIncludePaths); InfoGet(makefile, "AM_MOC_OPTIONS", this->MocOptions); InfoGet(makefile, "AM_MOC_RELAXED_MODE", this->MocRelaxedMode); @@ -517,32 +525,39 @@ void cmQtAutoGenerators::SettingsFileRead(cmMakefile* makefile) // Compose current settings strings { cmCryptoHash crypt(cmCryptoHash::AlgoSHA256); + const std::string sep(" ~~~ "); if (this->MocEnabled()) { std::string str; + str += this->MocExecutable; + str += sep; str += JoinOptionsList(this->MocDefinitions); - str += " ~~~ "; + str += sep; str += JoinOptionsList(this->MocIncludePaths); - str += " ~~~ "; + str += sep; str += JoinOptionsList(this->MocOptions); - str += " ~~~ "; + str += sep; str += this->IncludeProjectDirsBefore ? "TRUE" : "FALSE"; - str += " ~~~ "; + str += sep; str += JoinOptionsList(this->MocPredefsCmd); - str += " ~~~ "; + str += sep; this->SettingsStringMoc = crypt.HashString(str); } if (this->UicEnabled()) { std::string str; + str += this->UicExecutable; + str += sep; str += JoinOptionsList(this->UicTargetOptions); - str += " ~~~ "; + str += sep; str += JoinOptionsMap(this->UicOptions); - str += " ~~~ "; + str += sep; this->SettingsStringUic = crypt.HashString(str); } if (this->RccEnabled()) { std::string str; + str += this->RccExecutable; + str += sep; str += JoinOptionsMap(this->RccOptions); - str += " ~~~ "; + str += sep; this->SettingsStringRcc = crypt.HashString(str); } } @@ -1214,9 +1229,6 @@ bool cmQtAutoGenerators::MocGenerateAll( this->MocDefinitions.begin(); it != this->MocDefinitions.end(); ++it) { cmd.push_back("-D" + (*it)); -#ifdef _WIN32 - cmd.push_back("-DWIN32"); -#endif } // Add options cmd.insert(cmd.end(), this->MocOptions.begin(), @@ -1362,9 +1374,6 @@ bool cmQtAutoGenerators::MocGenerateFile( it != this->MocDefinitions.end(); ++it) { cmd.push_back("-D" + (*it)); } -#ifdef _WIN32 - cmd.push_back("-DWIN32"); -#endif // Add options cmd.insert(cmd.end(), this->MocOptions.begin(), this->MocOptions.end()); // Add predefs include diff --git a/Tests/RunCMake/CPack/ArchiveCommon/common_helpers.cmake b/Tests/RunCMake/CPack/ArchiveCommon/common_helpers.cmake index ce039f5..99d3155 100644 --- a/Tests/RunCMake/CPack/ArchiveCommon/common_helpers.cmake +++ b/Tests/RunCMake/CPack/ArchiveCommon/common_helpers.cmake @@ -33,7 +33,7 @@ function(getPackageContentList FILE RESULT_VAR) endfunction() function(toExpectedContentList FILE_NO CONTENT_VAR) - findExpectedFile("${FILE_NO}" "file_") + findExpectedFile("${FILE_NO}" "file_" "glob_expr_") # component and monolithic packages differ for some reason by either having # package filename prefix in path or not diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 8ca7126..752ce8a 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -24,5 +24,6 @@ run_cpack_test_subtests(SINGLE_DEBUGINFO "no_main_component;one_component;one_co run_cpack_test(EXTRA_SLASH_IN_PATH "RPM" true "COMPONENT") run_cpack_source_test(SOURCE_PACKAGE "RPM") run_cpack_test(SUGGESTS "RPM" false "MONOLITHIC") +run_cpack_test(SYMLINKS "RPM;TGZ" false "MONOLITHIC;COMPONENT") run_cpack_test(USER_FILELIST "RPM" false "MONOLITHIC") run_cpack_test(MD5SUMS "DEB" false "MONOLITHIC;COMPONENT") diff --git a/Tests/RunCMake/CPack/STGZ/Helpers.cmake b/Tests/RunCMake/CPack/STGZ/Helpers.cmake index 08224d3..68b1eab 100644 --- a/Tests/RunCMake/CPack/STGZ/Helpers.cmake +++ b/Tests/RunCMake/CPack/STGZ/Helpers.cmake @@ -35,7 +35,7 @@ function(getPackageContentList FILE RESULT_VAR) endfunction() function(toExpectedContentList FILE_NO CONTENT_VAR) - findExpectedFile("${FILE_NO}" "file_") + findExpectedFile("${FILE_NO}" "file_" "glob_expr_") get_filename_component(prefix_ "${file_}" NAME) # NAME_WE removes everything after the dot and dot is in version so replace instead diff --git a/Tests/RunCMake/CPack/VerifyResult.cmake b/Tests/RunCMake/CPack/VerifyResult.cmake index 59751a7..470ebf7 100644 --- a/Tests/RunCMake/CPack/VerifyResult.cmake +++ b/Tests/RunCMake/CPack/VerifyResult.cmake @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION ${CMAKE_VERSION} FATAL_ERROR) -function(findExpectedFile FILE_NO RESULT_VAR) +function(findExpectedFile FILE_NO RESULT_VAR GLOBING_EXPR_VAR) if(NOT DEFINED EXPECTED_FILE_${FILE_NO}) # explicit file name regex was not provided - construct one from other data # set defaults if parameters are not provided if(NOT DEFINED EXPECTED_FILE_${FILE_NO}_NAME) @@ -21,6 +21,7 @@ function(findExpectedFile FILE_NO RESULT_VAR) file(GLOB found_file_ RELATIVE "${bin_dir}" "${EXPECTED_FILE_${FILE_NO}}") set(${RESULT_VAR} "${found_file_}" PARENT_SCOPE) + set(${GLOBING_EXPR_VAR} "${EXPECTED_FILE_${FILE_NO}}" PARENT_SCOPE) endfunction() include("${config_file}") @@ -39,7 +40,8 @@ include("${src_dir}/tests/${RunCMake_TEST_FILE_PREFIX}/ExpectedFiles.cmake") # check that expected generated files exist and contain expected content if(NOT EXPECTED_FILES_COUNT EQUAL 0) foreach(file_no_ RANGE 1 ${EXPECTED_FILES_COUNT}) - findExpectedFile("${file_no_}" "FOUND_FILE_${file_no_}") + findExpectedFile("${file_no_}" "FOUND_FILE_${file_no_}" + "EXPECTED_FILE_${file_no_}") list(APPEND foundFiles_ "${FOUND_FILE_${file_no_}}") list(LENGTH FOUND_FILE_${file_no_} foundFilesCount_) diff --git a/Tests/RunCMake/CPack/tests/SYMLINKS/ExpectedFiles.cmake b/Tests/RunCMake/CPack/tests/SYMLINKS/ExpectedFiles.cmake new file mode 100644 index 0000000..05be748 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/SYMLINKS/ExpectedFiles.cmake @@ -0,0 +1,13 @@ +set(EXPECTED_FILES_COUNT "1") + +set(EXPECTED_FILE_CONTENT_1_LIST + "/usr" + "/usr/empty_dir" + "/usr/non_empty_dir" + "/usr/non_empty_dir/CMakeLists.txt" + "/usr/symlink_to_empty_dir" + "/usr/symlink_to_non_empty_dir") + +if(PACKAGING_TYPE STREQUAL "COMPONENT") + set(EXPECTED_FILE_1_COMPONENT "links") +endif() diff --git a/Tests/RunCMake/CPack/tests/SYMLINKS/TGZ-Prerequirements.cmake b/Tests/RunCMake/CPack/tests/SYMLINKS/TGZ-Prerequirements.cmake new file mode 100644 index 0000000..f3df46b --- /dev/null +++ b/Tests/RunCMake/CPack/tests/SYMLINKS/TGZ-Prerequirements.cmake @@ -0,0 +1,5 @@ +function(get_test_prerequirements found_var config_file) + if(UNIX) # limit test to platforms that support symlinks + set(${found_var} true PARENT_SCOPE) + endif() +endfunction() diff --git a/Tests/RunCMake/CPack/tests/SYMLINKS/VerifyResult.cmake b/Tests/RunCMake/CPack/tests/SYMLINKS/VerifyResult.cmake new file mode 100644 index 0000000..0632319 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/SYMLINKS/VerifyResult.cmake @@ -0,0 +1,26 @@ +set(whitespaces "[\\t\\n\\r ]*") + +####################### +# verify generated symbolic links +####################### +file(GLOB_RECURSE symlink_files RELATIVE "${bin_dir}" "${bin_dir}/*/symlink_*") + +foreach(check_symlink IN LISTS symlink_files) + get_filename_component(symlink_name "${check_symlink}" NAME) + execute_process(COMMAND ls -la "${check_symlink}" + WORKING_DIRECTORY "${bin_dir}" + OUTPUT_VARIABLE SYMLINK_POINT_ + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if("${symlink_name}" STREQUAL "symlink_to_empty_dir") + string(REGEX MATCH "^.*${whitespaces}->${whitespaces}empty_dir$" check_symlink "${SYMLINK_POINT_}") + elseif("${symlink_name}" STREQUAL "symlink_to_non_empty_dir") + string(REGEX MATCH "^.*${whitespaces}->${whitespaces}non_empty_dir$" check_symlink "${SYMLINK_POINT_}") + else() + message(FATAL_ERROR "error: unexpected rpm symbolic link '${check_symlink}'") + endif() + + if(NOT check_symlink) + message(FATAL_ERROR "symlink points to unexpected location '${SYMLINK_POINT_}'") + endif() +endforeach() diff --git a/Tests/RunCMake/CPack/tests/SYMLINKS/test.cmake b/Tests/RunCMake/CPack/tests/SYMLINKS/test.cmake new file mode 100644 index 0000000..fef765c --- /dev/null +++ b/Tests/RunCMake/CPack/tests/SYMLINKS/test.cmake @@ -0,0 +1,14 @@ +install(DIRECTORY DESTINATION empty_dir COMPONENT links) +install(FILES CMakeLists.txt DESTINATION non_empty_dir COMPONENT links) + +# test symbolic link to an empty dir +execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink empty_dir symlink_to_empty_dir) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/symlink_to_empty_dir DESTINATION "." COMPONENT links) + +# test symbolic link to a non empty dir +execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink non_empty_dir symlink_to_non_empty_dir) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/symlink_to_non_empty_dir DESTINATION "." COMPONENT links) + +if(PACKAGING_TYPE STREQUAL "COMPONENT") + set(CPACK_COMPONENTS_ALL links) +endif() @@ -1428,6 +1428,7 @@ fi cmake_c_flags_String="-DKWSYS_STRING_C" if ${cmake_system_mingw}; then cmake_c_flags_EncodingC="-DKWSYS_ENCODING_DEFAULT_CODEPAGE=CP_ACP" + cmake_cxx_flags_EncodingCXX="${cmake_c_flags_EncodingC}" cmake_cxx_flags_cmProcessOutput="${cmake_c_flags_EncodingC}" fi cmake_cxx_flags_SystemTools=" |