[Cmake-commits] CMake branch, master, updated. v3.9.1-468-ge1c9216

Kitware Robot kwrobot at kitware.com
Tue Aug 15 13:15:04 EDT 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  e1c92163d3231f10100b4246c938957ad09e1951 (commit)
       via  683dbfe14dbf0c41dde6b916b221597075a775aa (commit)
       via  8fb9a5770af381a1f12bc5aa6ab1e99d136b5b01 (commit)
       via  060cef0c44300c3fa8fb655619eb7a599083ef49 (commit)
       via  9e0026216fb81e71ecd6918294a7ff8004132f1d (commit)
       via  fb0c3c564c6623750964bbbf6db602e089c2ecc4 (commit)
       via  45623e7255b62c4cd17c01a687130f05deeaac1d (commit)
      from  4ca8c08f36d86ad9f04a1e3c68695691f5ea3499 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e1c92163d3231f10100b4246c938957ad09e1951
commit e1c92163d3231f10100b4246c938957ad09e1951
Merge: 683dbfe 060cef0
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Aug 15 17:09:34 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Aug 15 13:09:40 2017 -0400

    Merge topic 'update-kwsys'
    
    060cef0c Merge branch 'upstream-KWSys' into update-kwsys
    9e002621 KWSys 2017-08-11 (e1006189)
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !1130


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=683dbfe14dbf0c41dde6b916b221597075a775aa
commit 683dbfe14dbf0c41dde6b916b221597075a775aa
Merge: 8fb9a57 fb0c3c5
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Aug 15 17:09:15 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Aug 15 13:09:20 2017 -0400

    Merge topic 'require-cmake-3.1'
    
    fb0c3c56 Require CMake 3.1 to build CMake itself
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Acked-by: Ben Boeckel <ben.boeckel at kitware.com>
    Acked-by: Craig Scott <craig.scott at crascit.com>
    Merge-request: !1126


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8fb9a5770af381a1f12bc5aa6ab1e99d136b5b01
commit 8fb9a5770af381a1f12bc5aa6ab1e99d136b5b01
Merge: 4ca8c08 45623e7
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Aug 15 17:08:19 2017 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Aug 15 13:08:26 2017 -0400

    Merge topic 'cpackifw-package-file-extension'
    
    45623e72 CPackIFW: Add CPACK_IFW_PACKAGE_FILE_EXTENSION variable
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Acked-by: Craig Scott <craig.scott at crascit.com>
    Merge-request: !1117


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=060cef0c44300c3fa8fb655619eb7a599083ef49
commit 060cef0c44300c3fa8fb655619eb7a599083ef49
Merge: c47c011 9e00262
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Aug 11 10:13:23 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Aug 11 10:13:23 2017 -0400

    Merge branch 'upstream-KWSys' into update-kwsys
    
    * upstream-KWSys:
      KWSys 2017-08-11 (e1006189)


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9e0026216fb81e71ecd6918294a7ff8004132f1d
commit 9e0026216fb81e71ecd6918294a7ff8004132f1d
Author:     KWSys Upstream <kwrobot at kitware.com>
AuthorDate: Fri Aug 11 10:12:58 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri Aug 11 10:13:22 2017 -0400

    KWSys 2017-08-11 (e1006189)
    
    Code extracted from:
    
        https://gitlab.kitware.com/utils/kwsys.git
    
    at commit e100618908f7f7a41cbe623afa79ca0e4f17834a (master).
    
    Upstream Shortlog
    -----------------
    
    Chuck Atkins (2):
          993f0ea4 Add an option to split object and interface libs.
          b61faf89 Fix install rules and usage requirements for interface+object libs
    
    Justin Berger (2):
          6d73752d Allow KWSYSPE_USE_SELECT macro to be overriden at compile time.
          da61baff Added cmake settable property to enable the macro
    
    Sean McBride (1):
          dfa13188 Fixed a couple of trivial clang -Wunused-macros warnings
    
    Shawn Waldon (1):
          da8a9e65 SystemTools: make GetFilenameName handle either kind of slash

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e915b1a..d7d0c51 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,21 @@
 #  KWSYS_HEADER_ROOT = The directory into which to generate the kwsys headers.
 #                      A directory called "${KWSYS_NAMESPACE}" will be
 #                      created under this root directory to hold the files.
+#  KWSYS_SPLIT_OBJECTS_FROM_INTERFACE
+#                    = Instead of creating a single ${KWSYS_NAMESPACE} library
+#                      target, create three separate targets:
+#                        ${KWSYS_NAMESPACE}
+#                          - An INTERFACE library only containing usage
+#                            requirements.
+#                        ${KWSYS_NAMESPACE}_objects
+#                          - An OBJECT library for the built kwsys objects.
+#                            Note: This is omitted from the install rules
+#                        ${KWSYS_NAMESPACE}_private
+#                          - An INTERFACE library combining both that is
+#                            appropriate for use with PRIVATE linking in
+#                            target_link_libraries. Because of how interface
+#                            properties propagate, this target is not suitable
+#                            for use with PUBLIC or INTERFACE linking.
 #
 #    Example:
 #
@@ -79,6 +94,10 @@ FOREACH(p
 ENDFOREACH()
 SET(CMAKE_LEGACY_CYGWIN_WIN32 0)
 
+IF(CMAKE_VERSION VERSION_LESS 3.0)
+  SET(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE 0)
+ENDIF()
+
 #-----------------------------------------------------------------------------
 # If a namespace is not specified, use "kwsys" and enable testing.
 # This should be the case only when kwsys is not included inside
@@ -430,6 +449,11 @@ SET_SOURCE_FILES_PROPERTIES(ProcessUNIX.c System.c PROPERTIES
   COMPILE_FLAGS "-DKWSYS_C_HAS_PTRDIFF_T=${KWSYS_C_HAS_PTRDIFF_T} -DKWSYS_C_HAS_SSIZE_T=${KWSYS_C_HAS_SSIZE_T}"
   )
 
+IF(DEFINED KWSYS_PROCESS_USE_SELECT)
+  GET_PROPERTY(ProcessUNIX_FLAGS SOURCE ProcessUNIX.c PROPERTY COMPILE_FLAGS)
+  SET_PROPERTY(SOURCE ProcessUNIX.c PROPERTY COMPILE_FLAGS "${ProcessUNIX_FLAGS} -DKWSYSPE_USE_SELECT=${KWSYSPE_USE_SELECT}")
+ENDIF()
+
 IF(KWSYS_USE_DynamicLoader)
   GET_PROPERTY(KWSYS_SUPPORTS_SHARED_LIBS GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
   IF(KWSYS_SUPPORTS_SHARED_LIBS)
@@ -795,68 +819,144 @@ ENDFOREACH()
 #-----------------------------------------------------------------------------
 # Add the library with the configured name and list of sources.
 IF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS)
-  ADD_LIBRARY(${KWSYS_NAMESPACE} ${KWSYS_LIBRARY_TYPE}
-    ${KWSYS_C_SRCS} ${KWSYS_CXX_SRCS})
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE} PROPERTY C_CLANG_TIDY "")
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE} PROPERTY CXX_CLANG_TIDY "")
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE} PROPERTY C_INCLUDE_WHAT_YOU_USE "")
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE} PROPERTY CXX_INCLUDE_WHAT_YOU_USE "")
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE} PROPERTY LABELS ${KWSYS_LABELS_LIB})
+  IF(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE)
+    SET(KWSYS_TARGET_INTERFACE ${KWSYS_NAMESPACE})
+    SET(KWSYS_TARGET_OBJECT ${KWSYS_NAMESPACE}_objects)
+    SET(KWSYS_TARGET_LINK ${KWSYS_NAMESPACE}_private)
+    SET(KWSYS_TARGET_INSTALL ${KWSYS_TARGET_INTERFACE} ${KWSYS_TARGET_LINK})
+    SET(KWSYS_LINK_DEPENDENCY INTERFACE)
+    ADD_LIBRARY(${KWSYS_TARGET_OBJECT} OBJECT
+      ${KWSYS_C_SRCS} ${KWSYS_CXX_SRCS})
+    IF(KWSYS_BUILD_SHARED)
+      SET_PROPERTY(TARGET ${KWSYS_TARGET_OBJECT} PROPERTY
+        POSITION_INDEPENDENT_CODE TRUE)
+    ENDIF()
+    ADD_LIBRARY(${KWSYS_TARGET_INTERFACE} INTERFACE)
+    ADD_LIBRARY(${KWSYS_TARGET_LINK} INTERFACE)
+    TARGET_LINK_LIBRARIES(${KWSYS_TARGET_LINK} INTERFACE
+      ${KWSYS_TARGET_INTERFACE})
+    TARGET_SOURCES(${KWSYS_TARGET_LINK} INTERFACE
+      $<TARGET_OBJECTS:${KWSYS_TARGET_OBJECT}>)
+  ELSE()
+    SET(KWSYS_TARGET_INTERFACE ${KWSYS_NAMESPACE})
+    SET(KWSYS_TARGET_OBJECT ${KWSYS_NAMESPACE})
+    SET(KWSYS_TARGET_LINK ${KWSYS_NAMESPACE})
+    set(KWSYS_TARGET_INSTALL ${KWSYS_TARGET_LINK})
+    SET(KWSYS_LINK_DEPENDENCY PUBLIC)
+    ADD_LIBRARY(${KWSYS_TARGET_INTERFACE} ${KWSYS_LIBRARY_TYPE}
+      ${KWSYS_C_SRCS} ${KWSYS_CXX_SRCS})
+  ENDIF()
+  SET_TARGET_PROPERTIES(${KWSYS_TARGET_OBJECT} PROPERTIES
+    C_CLANG_TIDY ""
+    CXX_CLANG_TIDY ""
+    C_INCLUDE_WHAT_YOU_USE ""
+    CXX_INCLUDE_WHAT_YOU_USE ""
+    LABELS "${KWSYS_LABELS_LIB}")
   IF(KWSYS_USE_DynamicLoader)
     IF(UNIX)
-      TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} ${CMAKE_DL_LIBS})
+      TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY}
+        ${CMAKE_DL_LIBS})
     ENDIF()
   ENDIF()
 
   IF(KWSYS_USE_SystemInformation)
     IF(WIN32)
-      TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} ws2_32)
+      TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY} ws2_32)
       IF(KWSYS_SYS_HAS_PSAPI)
-        TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} Psapi)
+        TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY}
+          Psapi)
       ENDIF()
     ELSEIF(UNIX)
       IF (EXECINFO_LIB AND KWSYS_CXX_HAS_BACKTRACE)
         # backtrace on FreeBSD is not in libc
-        TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} ${EXECINFO_LIB})
+        TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY}
+          ${EXECINFO_LIB})
       ENDIF()
       IF (KWSYS_CXX_HAS_DLADDR)
         # for symbol lookup using dladdr
-        TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} ${CMAKE_DL_LIBS})
+        TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY}
+          ${CMAKE_DL_LIBS})
       ENDIF()
       IF (CMAKE_SYSTEM_NAME STREQUAL "SunOS")
-        TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE} socket)
+        TARGET_LINK_LIBRARIES(${KWSYS_TARGET_INTERFACE} ${KWSYS_LINK_DEPENDENCY}
+          socket)
       ENDIF()
     ENDIF()
   ENDIF()
 
   # Apply user-defined target properties to the library.
   IF(KWSYS_PROPERTIES_CXX)
-    SET_TARGET_PROPERTIES(${KWSYS_NAMESPACE} PROPERTIES
-      ${KWSYS_PROPERTIES_CXX}
-      )
+    SET_TARGET_PROPERTIES(${KWSYS_TARGET_INTERFACE} PROPERTIES
+      ${KWSYS_PROPERTIES_CXX})
+  ENDIF()
+
+  # Set up include usage requirement
+  IF(COMMAND TARGET_INCLUDE_DIRECTORIES)
+    TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_INTERFACE} INTERFACE
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+    IF(KWSYS_INSTALL_INCLUDE_DIR)
+      TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_INTERFACE} INTERFACE
+        $<INSTALL_INTERFACE:${KWSYS_INSTALL_INCLUDE_DIR}>)
+    ENDIF()
   ENDIF()
 
   # Create an install target for the library.
   IF(KWSYS_INSTALL_LIBRARY_RULE)
-    INSTALL(TARGETS ${KWSYS_NAMESPACE} ${KWSYS_INSTALL_LIBRARY_RULE})
+    INSTALL(TARGETS ${KWSYS_TARGET_INSTALL} ${KWSYS_INSTALL_LIBRARY_RULE})
   ENDIF()
 ENDIF()
 
 # Add a C-only library if requested.
 IF(KWSYS_ENABLE_C AND KWSYS_C_SRCS)
-  ADD_LIBRARY(${KWSYS_NAMESPACE}_c ${KWSYS_LIBRARY_TYPE} ${KWSYS_C_SRCS})
-  SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}_c PROPERTY LABELS ${KWSYS_LABELS_LIB})
+ IF(KWSYS_SPLIT_OBJECTS_FROM_INTERFACE)
+    SET(KWSYS_TARGET_C_INTERFACE ${KWSYS_NAMESPACE}_c)
+    SET(KWSYS_TARGET_C_OBJECT ${KWSYS_NAMESPACE}_c_objects)
+    SET(KWSYS_TARGET_C_LINK ${KWSYS_NAMESPACE}_c_private)
+    SET(KWSYS_TARGET_C_INSTALL
+      ${KWSYS_TARGET_C_INTERFACE} ${KWSYS_TARGET_C_LINK})
+    SET(KWSYS_LINK_DEPENDENCY INTERFACE)
+    ADD_LIBRARY(${KWSYS_TARGET_C_OBJECT} OBJECT ${KWSYS_C_SRCS})
+    IF(KWSYS_BUILD_SHARED)
+      SET_PROPERTY(TARGET ${KWSYS_TARGET_C_OBJECT} PROPERTY
+        POSITION_INDEPENDENT_CODE TRUE)
+    ENDIF()
+    ADD_LIBRARY(${KWSYS_TARGET_C_INTERFACE} INTERFACE)
+    ADD_LIBRARY(${KWSYS_TARGET_C_LINK} INTERFACE)
+    TARGET_LINK_LIBRARIES(${KWSYS_TARGET_C_LINK} INTERFACE
+      ${KWSYS_TARGET_C_INTERFACE})
+    TARGET_SOURCES(${KWSYS_TARGET_C_LINK} INTERFACE
+      $<TARGET_OBJECTS:${KWSYS_TARGET_C_OBJECT}>)
+  ELSE()
+    SET(KWSYS_TARGET_C_INTERFACE ${KWSYS_NAMESPACE}_c)
+    SET(KWSYS_TARGET_C_OBJECT ${KWSYS_NAMESPACE}_c)
+    SET(KWSYS_TARGET_C_LINK ${KWSYS_NAMESPACE}_c)
+    SET(KWSYS_TARGET_C_INSTALL ${KWSYS_TARGET_C_LINK})
+    SET(KWSYS_LINK_DEPENDENCY PUBLIC)
+    ADD_LIBRARY(${KWSYS_TARGET_C_INTERFACE} ${KWSYS_LIBRARY_TYPE}
+      ${KWSYS_C_SRCS})
+  ENDIF()
+  SET_TARGET_PROPERTIES(${KWSYS_TARGET_C_OBJECT} PROPERTIES
+    LABELS "${KWSYS_LABELS_LIB}")
 
   # Apply user-defined target properties to the library.
   IF(KWSYS_PROPERTIES_C)
-    SET_TARGET_PROPERTIES(${KWSYS_NAMESPACE}_c PROPERTIES
-      ${KWSYS_PROPERTIES_C}
-      )
+    SET_TARGET_PROPERTIES(${KWSYS_TARGET_C_INTERFACE} PROPERTIES
+      ${KWSYS_PROPERTIES_C})
+  ENDIF()
+
+  # Set up include usage requirement
+  IF(COMMAND TARGET_INCLUDE_DIRECTORIES)
+    TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_C_INTERFACE} INTERFACE
+      $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+    IF(KWSYS_INSTALL_INCLUDE_DIR)
+      TARGET_INCLUDE_DIRECTORIES(${KWSYS_TARGET_C_INTERFACE} INTERFACE
+        $<INSTALL_INTERFACE:${KWSYS_INSTALL_INCLUDE_DIR}>)
+    ENDIF()
   ENDIF()
 
   # Create an install target for the library.
   IF(KWSYS_INSTALL_LIBRARY_RULE)
-    INSTALL(TARGETS ${KWSYS_NAMESPACE}_c ${KWSYS_INSTALL_LIBRARY_RULE})
+    INSTALL(TARGETS ${KWSYS_TARGET_C_INSTALL})
   ENDIF()
 ENDIF()
 
@@ -915,7 +1015,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
       )
     ADD_EXECUTABLE(${KWSYS_NAMESPACE}TestsC ${KWSYS_C_TEST_SRCS})
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestsC PROPERTY LABELS ${KWSYS_LABELS_EXE})
-    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestsC ${KWSYS_NAMESPACE}_c)
+    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestsC ${KWSYS_TARGET_C_LINK})
     FOREACH(test ${KWSYS_C_TESTS})
       ADD_TEST(kwsys.${test} ${EXEC_DIR}/${KWSYS_NAMESPACE}TestsC ${test} ${KWSYS_TEST_ARGS_${test}})
       SET_PROPERTY(TEST kwsys.${test} PROPERTY LABELS ${KWSYS_LABELS_TEST})
@@ -950,7 +1050,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
       SET_PROPERTY(TARGET testConsoleBufChild PROPERTY C_INCLUDE_WHAT_YOU_USE "")
       SET_PROPERTY(TARGET testConsoleBufChild PROPERTY CXX_INCLUDE_WHAT_YOU_USE "")
       SET_PROPERTY(TARGET testConsoleBufChild PROPERTY LABELS ${KWSYS_LABELS_EXE})
-      TARGET_LINK_LIBRARIES(testConsoleBufChild ${KWSYS_NAMESPACE})
+      TARGET_LINK_LIBRARIES(testConsoleBufChild ${KWSYS_TARGET_LINK})
       SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS}
         testConsoleBuf
         )
@@ -969,7 +1069,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
       # If kwsys contains the DynamicLoader, need extra library
       ADD_LIBRARY(${KWSYS_NAMESPACE}TestDynload MODULE testDynload.c)
       SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestDynload PROPERTY LABELS ${KWSYS_LABELS_LIB})
-      ADD_DEPENDENCIES(${KWSYS_NAMESPACE}TestDynload ${KWSYS_NAMESPACE})
+      ADD_DEPENDENCIES(${KWSYS_NAMESPACE}TestDynload ${KWSYS_TARGET_INTERFACE})
     ENDIF()
     CREATE_TEST_SOURCELIST(
       KWSYS_CXX_TEST_SRCS ${KWSYS_NAMESPACE}TestsCxx.cxx
@@ -981,7 +1081,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestsCxx PROPERTY C_INCLUDE_WHAT_YOU_USE "")
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestsCxx PROPERTY CXX_INCLUDE_WHAT_YOU_USE "")
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestsCxx PROPERTY LABELS ${KWSYS_LABELS_EXE})
-    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestsCxx ${KWSYS_NAMESPACE})
+    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestsCxx ${KWSYS_TARGET_LINK})
 
     SET(TEST_SYSTEMTOOLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
     SET(TEST_SYSTEMTOOLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
@@ -1032,7 +1132,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
     # Process tests.
     ADD_EXECUTABLE(${KWSYS_NAMESPACE}TestProcess testProcess.c)
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestProcess PROPERTY LABELS ${KWSYS_LABELS_EXE})
-    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestProcess ${KWSYS_NAMESPACE}_c)
+    TARGET_LINK_LIBRARIES(${KWSYS_NAMESPACE}TestProcess ${KWSYS_TARGET_C_LINK})
     IF(NOT CYGWIN)
       SET(KWSYS_TEST_PROCESS_7 7)
     ENDIF()
@@ -1060,7 +1160,7 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
     ADD_EXECUTABLE(${KWSYS_NAMESPACE}TestSharedForward
                    ${PROJECT_BINARY_DIR}/testSharedForward.c)
     SET_PROPERTY(TARGET ${KWSYS_NAMESPACE}TestSharedForward PROPERTY LABELS ${KWSYS_LABELS_EXE})
-    ADD_DEPENDENCIES(${KWSYS_NAMESPACE}TestSharedForward ${KWSYS_NAMESPACE}_c)
+    ADD_DEPENDENCIES(${KWSYS_NAMESPACE}TestSharedForward ${KWSYS_TARGET_C_LINK})
     ADD_TEST(kwsys.testSharedForward ${EXEC_DIR}/${KWSYS_NAMESPACE}TestSharedForward 1)
     SET_PROPERTY(TEST kwsys.testSharedForward PROPERTY LABELS ${KWSYS_LABELS_TEST})
 
diff --git a/ProcessUNIX.c b/ProcessUNIX.c
index 9ebcfce..3b32ca7 100644
--- a/ProcessUNIX.c
+++ b/ProcessUNIX.c
@@ -99,7 +99,8 @@ static inline void kwsysProcess_usleep(unsigned int msec)
  * pipes' file handles to be non-blocking and just poll them directly
  * without select().
  */
-#if !defined(__BEOS__) && !defined(__VMS) && !defined(__MINT__)
+#if !defined(__BEOS__) && !defined(__VMS) && !defined(__MINT__) &&            \
+  !defined(KWSYSPE_USE_SELECT)
 #define KWSYSPE_USE_SELECT 1
 #endif
 
diff --git a/RegularExpression.cxx b/RegularExpression.cxx
index 6d7f832..26e84e0 100644
--- a/RegularExpression.cxx
+++ b/RegularExpression.cxx
@@ -258,11 +258,6 @@ const unsigned char MAGIC = 0234;
 
 #define UCHARAT(p) (reinterpret_cast<const unsigned char*>(p))[0]
 
-#define FAIL(m)                                                               \
-  {                                                                           \
-    regerror(m);                                                              \
-    return (0);                                                               \
-  }
 #define ISMULT(c) ((c) == '*' || (c) == '+' || (c) == '?')
 #define META "^$.[()|?+*\\"
 
diff --git a/SystemTools.cxx b/SystemTools.cxx
index c5bbd41..11f3b81 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -847,6 +847,8 @@ void SystemTools::ReplaceString(std::string& source, const char* replace,
   free(orig);
 }
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+
 #if defined(KEY_WOW64_32KEY) && defined(KEY_WOW64_64KEY)
 #define KWSYS_ST_KEY_WOW64_32KEY KEY_WOW64_32KEY
 #define KWSYS_ST_KEY_WOW64_64KEY KEY_WOW64_64KEY
@@ -855,7 +857,6 @@ void SystemTools::ReplaceString(std::string& source, const char* replace,
 #define KWSYS_ST_KEY_WOW64_64KEY 0x0100
 #endif
 
-#if defined(_WIN32) && !defined(__CYGWIN__)
 static bool SystemToolsParseRegistryKey(const std::string& key,
                                         HKEY& primaryKey, std::string& second,
                                         std::string& valuename)
@@ -3796,11 +3797,7 @@ std::string SystemTools::GetFilenamePath(const std::string& filename)
  */
 std::string SystemTools::GetFilenameName(const std::string& filename)
 {
-#if defined(_WIN32)
   std::string::size_type slash_pos = filename.find_last_of("/\\");
-#else
-  std::string::size_type slash_pos = filename.rfind('/');
-#endif
   if (slash_pos != std::string::npos) {
     return filename.substr(slash_pos + 1);
   } else {
diff --git a/testSystemTools.cxx b/testSystemTools.cxx
index e6fbf6c..1871f5d 100644
--- a/testSystemTools.cxx
+++ b/testSystemTools.cxx
@@ -758,6 +758,30 @@ static bool CheckGetPath()
   return res;
 }
 
+static bool CheckGetFilenameName()
+{
+  const char* windowsFilepath = "C:\\somewhere\\something";
+  const char* unixFilepath = "/somewhere/something";
+
+  std::string expectedFilename = "something";
+
+  bool res = true;
+  std::string filename = kwsys::SystemTools::GetFilenameName(windowsFilepath);
+  if (filename != expectedFilename) {
+    std::cerr << "GetFilenameName(" << windowsFilepath << ") yielded "
+              << filename << " instead of " << expectedFilename << std::endl;
+    res = false;
+  }
+
+  filename = kwsys::SystemTools::GetFilenameName(unixFilepath);
+  if (filename != expectedFilename) {
+    std::cerr << "GetFilenameName(" << unixFilepath << ") yielded " << filename
+              << " instead of " << expectedFilename << std::endl;
+    res = false;
+  }
+  return res;
+}
+
 static bool CheckFind()
 {
   bool res = true;
@@ -875,5 +899,7 @@ int testSystemTools(int, char* [])
 
   res &= CheckGetLineFromStream();
 
+  res &= CheckGetFilenameName();
+
   return res ? 0 : 1;
 }

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fb0c3c564c6623750964bbbf6db602e089c2ecc4
commit fb0c3c564c6623750964bbbf6db602e089c2ecc4
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Aug 10 11:37:34 2017 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Aug 10 15:08:02 2017 -0400

    Require CMake 3.1 to build CMake itself
    
    This simplifies some policy settings and use of third-party
    libraries with imported targets.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e60dc78..30b6da9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,13 +1,7 @@
 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
 # file Copyright.txt or https://cmake.org/licensing for details.
 
-cmake_minimum_required(VERSION 2.8.12.2 FATAL_ERROR)
-if(POLICY CMP0025)
-  cmake_policy(SET CMP0025 NEW)
-endif()
-if(POLICY CMP0053)
-  cmake_policy(SET CMP0053 NEW)
-endif()
+cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
 project(CMake)
 
 # Make sure we can find internal find_package modules only used for
@@ -341,11 +335,7 @@ macro (CMAKE_BUILD_UTILITIES)
   endif()
 
   if(CMAKE_USE_SYSTEM_LIBRHASH)
-    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
-      find_package(LibRHash)
-    else()
-      message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBRHASH requires CMake >= 3.0")
-    endif()
+    find_package(LibRHash)
     if(NOT LibRHash_FOUND)
       message(FATAL_ERROR
         "CMAKE_USE_SYSTEM_LIBRHASH is ON but LibRHash is not found!")
@@ -511,11 +501,7 @@ macro (CMAKE_BUILD_UTILITIES)
   #---------------------------------------------------------------------
   # Build jsoncpp library.
   if(CMAKE_USE_SYSTEM_JSONCPP)
-    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
-      find_package(JsonCpp)
-    else()
-      message(FATAL_ERROR "CMAKE_USE_SYSTEM_JSONCPP requires CMake >= 3.0")
-    endif()
+    find_package(JsonCpp)
     if(NOT JsonCpp_FOUND)
       message(FATAL_ERROR
         "CMAKE_USE_SYSTEM_JSONCPP is ON but a JsonCpp is not found!")
@@ -530,11 +516,7 @@ macro (CMAKE_BUILD_UTILITIES)
   #---------------------------------------------------------------------
   # Build libuv library.
   if(CMAKE_USE_SYSTEM_LIBUV)
-    if(NOT CMAKE_VERSION VERSION_LESS 3.0)
-      find_package(LibUV 1.0.0)
-    else()
-      message(FATAL_ERROR "CMAKE_USE_SYSTEM_LIBUV requires CMake >= 3.0")
-    endif()
+    find_package(LibUV 1.0.0)
     if(NOT LIBUV_FOUND)
       message(FATAL_ERROR
         "CMAKE_USE_SYSTEM_LIBUV is ON but a libuv is not found!")
diff --git a/Utilities/Doxygen/CMakeLists.txt b/Utilities/Doxygen/CMakeLists.txt
index f1e8f95..6a90c84 100644
--- a/Utilities/Doxygen/CMakeLists.txt
+++ b/Utilities/Doxygen/CMakeLists.txt
@@ -3,7 +3,7 @@
 
 if(NOT CMake_SOURCE_DIR)
   set(CMakeDeveloperReference_STANDALONE 1)
-  cmake_minimum_required(VERSION 2.8.12.2 FATAL_ERROR)
+  cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
   get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
   get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH)
   include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake)
diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt
index a29380c..2de821c 100644
--- a/Utilities/Sphinx/CMakeLists.txt
+++ b/Utilities/Sphinx/CMakeLists.txt
@@ -3,7 +3,7 @@
 
 if(NOT CMake_SOURCE_DIR)
   set(CMakeHelp_STANDALONE 1)
-  cmake_minimum_required(VERSION 2.8.12.2 FATAL_ERROR)
+  cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
   get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
   get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH)
   include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=45623e7255b62c4cd17c01a687130f05deeaac1d
commit 45623e7255b62c4cd17c01a687130f05deeaac1d
Author:     Konstantin Podsvirov <konstantin at podsvirov.pro>
AuthorDate: Tue Aug 8 19:57:24 2017 +0300
Commit:     Konstantin Podsvirov <konstantin at podsvirov.pro>
CommitDate: Thu Aug 10 00:20:11 2017 +0300

    CPackIFW: Add CPACK_IFW_PACKAGE_FILE_EXTENSION variable
    
    Add CPACK_IFW_PACKAGE_FILE_EXTENSION variable to customize
    target binary format.

diff --git a/Help/release/dev/cpackifw-package-file-extension.rst b/Help/release/dev/cpackifw-package-file-extension.rst
new file mode 100644
index 0000000..e264081
--- /dev/null
+++ b/Help/release/dev/cpackifw-package-file-extension.rst
@@ -0,0 +1,6 @@
+cpackifw-package-file-extension
+-------------------------------
+
+* The :module:`CPackIFW` module gained new
+  :variable:`CPACK_IFW_PACKAGE_FILE_EXTENSION` variable to customize
+  target binary format.
diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake
index c1cb52f..0210410 100644
--- a/Modules/CPackIFW.cmake
+++ b/Modules/CPackIFW.cmake
@@ -221,6 +221,19 @@
 #  You can use :command:`cpack_ifw_add_package_resources` command to resolve
 #  relative paths.
 #
+# .. variable:: CPACK_IFW_PACKAGE_FILE_EXTENSION
+#
+#  The target binary extension.
+#
+#  On Linux, the name of the target binary is automatically extended with
+#  '.run', if you do not specify the extension.
+#
+#  On Windows, the target is created as an application with the extension
+#  '.exe', which is automatically added, if not supplied.
+#
+#  On Mac, the target is created as an DMG disk image with the extension
+#  '.dmg', which is automatically added, if not supplied.
+#
 # .. variable:: CPACK_IFW_REPOSITORIES_ALL
 #
 #  The list of remote repositories.
diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.cxx b/Source/CPack/IFW/cmCPackIFWGenerator.cxx
index 226ea0a..6861623 100644
--- a/Source/CPack/IFW/cmCPackIFWGenerator.cxx
+++ b/Source/CPack/IFW/cmCPackIFWGenerator.cxx
@@ -164,6 +164,7 @@ int cmCPackIFWGenerator::PackageFiles()
       ifwCmd += " " + this->packageFileNames[0];
     } else {
       ifwCmd += " installer";
+      ifwCmd += this->OutputExtension;
     }
     cmCPackIFWLogger(VERBOSE, "Execute: " << ifwCmd << std::endl);
     std::string output;
@@ -205,7 +206,7 @@ const char* cmCPackIFWGenerator::GetPackagingInstallPrefix()
 
 const char* cmCPackIFWGenerator::GetOutputExtension()
 {
-  return this->ExecutableSuffix.c_str();
+  return this->OutputExtension.c_str();
 }
 
 int cmCPackIFWGenerator::InitializeInternal()
@@ -305,16 +306,29 @@ int cmCPackIFWGenerator::InitializeInternal()
   }
 
   // Executable suffix
-  if (const char* optExeSuffix = this->GetOption("CMAKE_EXECUTABLE_SUFFIX")) {
-    this->ExecutableSuffix = optExeSuffix;
-    if (this->ExecutableSuffix.empty()) {
-      std::string sysName(this->GetOption("CMAKE_SYSTEM_NAME"));
-      if (sysName == "Linux") {
-        this->ExecutableSuffix = ".run";
-      }
-    }
+  std::string exeSuffix(this->GetOption("CMAKE_EXECUTABLE_SUFFIX"));
+  std::string sysName(this->GetOption("CMAKE_SYSTEM_NAME"));
+  if (sysName == "Linux") {
+    this->ExecutableSuffix = ".run";
+  } else if (sysName == "Windows") {
+    this->ExecutableSuffix = ".exe";
+  } else if (sysName == "Darwin") {
+    this->ExecutableSuffix = ".app";
+  } else {
+    this->ExecutableSuffix = exeSuffix;
+  }
+
+  // Output extension
+  if (const char* optOutExt =
+        this->GetOption("CPACK_IFW_PACKAGE_FILE_EXTENSION")) {
+    this->OutputExtension = optOutExt;
+  } else if (sysName == "Darwin") {
+    this->OutputExtension = ".dmg";
   } else {
-    this->ExecutableSuffix = this->cmCPackGenerator::GetOutputExtension();
+    this->OutputExtension = this->ExecutableSuffix;
+  }
+  if (this->OutputExtension.empty()) {
+    this->OutputExtension = this->cmCPackGenerator::GetOutputExtension();
   }
 
   return this->Superclass::InitializeInternal();
diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.h b/Source/CPack/IFW/cmCPackIFWGenerator.h
index 8348cee..9d635f8 100644
--- a/Source/CPack/IFW/cmCPackIFWGenerator.h
+++ b/Source/CPack/IFW/cmCPackIFWGenerator.h
@@ -61,8 +61,8 @@ protected:
   const char* GetPackagingInstallPrefix() CM_OVERRIDE;
 
   /**
-   * @brief Extension of binary installer
-   * @return Executable suffix or value from default implementation
+   * @brief Target binary extension
+   * @return Executable suffix or disk image format
    */
   const char* GetOutputExtension() CM_OVERRIDE;
 
@@ -143,6 +143,7 @@ private:
   std::string BinCreator;
   std::string FrameworkVersion;
   std::string ExecutableSuffix;
+  std::string OutputExtension;
 
   bool OnlineOnly;
   bool ResolveDuplicateNames;

-----------------------------------------------------------------------

Summary of changes:
 CMakeLists.txt                                     |   26 +---
 .../dev/cpackifw-package-file-extension.rst        |    6 +
 Modules/CPackIFW.cmake                             |   13 ++
 Source/CPack/IFW/cmCPackIFWGenerator.cxx           |   34 +++--
 Source/CPack/IFW/cmCPackIFWGenerator.h             |    5 +-
 Source/kwsys/CMakeLists.txt                        |  158 ++++++++++++++++----
 Source/kwsys/ProcessUNIX.c                         |    3 +-
 Source/kwsys/RegularExpression.cxx                 |    5 -
 Source/kwsys/SystemTools.cxx                       |    7 +-
 Source/kwsys/testSystemTools.cxx                   |   26 ++++
 Utilities/Doxygen/CMakeLists.txt                   |    2 +-
 Utilities/Sphinx/CMakeLists.txt                    |    2 +-
 12 files changed, 211 insertions(+), 76 deletions(-)
 create mode 100644 Help/release/dev/cpackifw-package-file-extension.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list