diff options
-rw-r--r-- | Source/kwsys/CMakeLists.txt | 168 |
1 files changed, 152 insertions, 16 deletions
diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt index d04623e..a62c798 100644 --- a/Source/kwsys/CMakeLists.txt +++ b/Source/kwsys/CMakeLists.txt @@ -37,6 +37,41 @@ # SET(KWSYS_HEADER_ROOT ${PROJECT_BINARY_DIR}) # INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}) # +# KWSYS_IOS_FORCE_OLD = Force use of old non-ANSI C++ streams even if +# new streams are available. This may be used +# by projects that cannot configure their +# streams library. +# Example: +# +# SET(KWSYS_IOS_FORCE_OLD 1) +# +# +# Optional settings to setup install rules work in one of two ways. +# The modern way utilizes the CMake 2.4 INSTALL command. Settings +# for this mode are as follows: +# +# KWSYS_INSTALL_BIN_DIR = The installation target directories into +# KWSYS_INSTALL_LIB_DIR which the libraries and headers from +# KWSYS_INSTALL_INCLUDE_DIR kwsys should be installed by a "make install". +# The values should be specified relative to +# the installation prefix and NOT start with '/'. +# +# KWSYS_INSTALL_COMPONENT_NAME_RUNTIME = Name of runtime and development +# KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT installation components. +# If not given the install rules +# will not be in any component. +# +# Example: +# +# SET(KWSYS_INSTALL_BIN_DIR bin) +# SET(KWSYS_INSTALL_LIB_DIR lib) +# SET(KWSYS_INSTALL_INCLUDE_DIR include) +# SET(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME Runtime) +# SET(KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT Development) +# +# The old way uses the original CMake INSTALL_* commands. Settings +# for this mode are as follows: +# # KWSYS_LIBRARY_INSTALL_DIR = The installation target directories into # KWSYS_HEADER_INSTALL_DIR which the libraries and headers from # kwsys should be installed by a "make install". @@ -47,14 +82,11 @@ # SET(KWSYS_LIBRARY_INSTALL_DIR /lib) # SET(KWSYS_HEADER_INSTALL_DIR /include) # -# KWSYS_IOS_FORCE_OLD = Force use of old non-ANSI C++ streams even if -# new streams are available. This may be used -# by projects that cannot configure their -# streams library. -# Example: -# -# SET(KWSYS_IOS_FORCE_OLD 1) -# +# The modern way will be used whenever the INSTALL command is +# available. If the settings are not available the old names will be +# used to construct them. The old way will be used whenever the +# INSTALL command is not available. If the settings are not available +# the new names will be used to construct them. # Once configured, kwsys should be used as follows from C or C++ code: # @@ -113,6 +145,87 @@ ENDIF(KWSYS_STANDALONE) # Do full dependency headers. INCLUDE_REGULAR_EXPRESSION("^.*$") +# Choose which kind of install commands to use. +IF(COMMAND INSTALL) + # Use new KWSYS_INSTALL_*_DIR variable names to control installation. + # Take defaults from the old names. Note that there was no old name + # for the bin dir, so we take the old lib dir name so DLLs will be + # installed in a compatible way for old code. + IF(NOT KWSYS_INSTALL_INCLUDE_DIR) + STRING(REGEX REPLACE "^/" "" KWSYS_INSTALL_INCLUDE_DIR + "${KWSYS_HEADER_INSTALL_DIR}") + ENDIF(NOT KWSYS_INSTALL_INCLUDE_DIR) + IF(NOT KWSYS_INSTALL_LIB_DIR) + STRING(REGEX REPLACE "^/" "" KWSYS_INSTALL_LIB_DIR + "${KWSYS_LIBRARY_INSTALL_DIR}") + ENDIF(NOT KWSYS_INSTALL_LIB_DIR) + IF(NOT KWSYS_INSTALL_BIN_DIR) + STRING(REGEX REPLACE "^/" "" KWSYS_INSTALL_BIN_DIR + "${KWSYS_LIBRARY_INSTALL_DIR}") + ENDIF(NOT KWSYS_INSTALL_BIN_DIR) + + # Setup library install rules. + SET(KWSYS_INSTALL_LIBRARY_RULE) + IF(KWSYS_INSTALL_LIB_DIR) + # Install the shared library to the lib directory. + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + LIBRARY DESTINATION ${KWSYS_INSTALL_LIB_DIR} + ) + # Assign the shared library to the runtime component. + IF(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME) + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + COMPONENT ${KWSYS_INSTALL_COMPONENT_NAME_RUNTIME} + ) + ENDIF(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME) + + # Install the archive to the lib directory. + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + ARCHIVE DESTINATION ${KWSYS_INSTALL_LIB_DIR} + ) + # Assign the archive to the development component. + IF(KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT) + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + COMPONENT ${KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT} + ) + ENDIF(KWSYS_INSTALL_COMPONENT_NAME_DEVELOPMENT) + ENDIF(KWSYS_INSTALL_LIB_DIR) + IF(KWSYS_INSTALL_BIN_DIR) + # Install the runtime library to the bin directory. + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + RUNTIME DESTINATION ${KWSYS_INSTALL_BIN_DIR} + ) + # Assign the runtime library to the runtime component. + IF(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME) + SET(KWSYS_INSTALL_LIBRARY_RULE ${KWSYS_INSTALL_LIBRARY_RULE} + COMPONENT ${KWSYS_INSTALL_COMPONENT_NAME_RUNTIME} + ) + ENDIF(KWSYS_INSTALL_COMPONENT_NAME_RUNTIME) + ENDIF(KWSYS_INSTALL_BIN_DIR) + + # Do not support old KWSYS_*_INSTALL_DIR variable names. + SET(KWSYS_HEADER_INSTALL_DIR) + SET(KWSYS_LIBRARY_INSTALL_DIR) + +ELSE(COMMAND INSTALL) + # Use old KWSYS_*_INSTALL_DIR variable names. + # Take defaults from the new names. + IF(KWSYS_INSTALL_LIB_DIR) + IF(NOT KWSYS_LIBRARY_INSTALL_DIR) + SET(KWSYS_LIBRARY_INSTALL_DIR "/${KWSYS_INSTALL_LIB_DIR}") + ENDIF(NOT KWSYS_LIBRARY_INSTALL_DIR) + ENDIF(KWSYS_INSTALL_LIB_DIR) + IF(KWSYS_INSTALL_INCLUDE_DIR) + IF(NOT KWSYS_HEADER_INSTALL_DIR) + SET(KWSYS_HEADER_INSTALL_DIR "/${KWSYS_INSTALL_INCLUDE_DIR}") + ENDIF(NOT KWSYS_HEADER_INSTALL_DIR) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) + + # Do not support new KWSYS_INSTALL_*_DIR variable names. + SET(KWSYS_INSTALL_BIN_DIR) + SET(KWSYS_INSTALL_INCLUDE_DIR) + SET(KWSYS_INSTALL_LIB_DIR) +ENDIF(COMMAND INSTALL) + # Work-around for CMake 1.6.7 bug in custom command dependencies when # there is no executable output path. IF(NOT EXECUTABLE_OUTPUT_PATH) @@ -369,6 +482,10 @@ FOREACH(header algorithm deque iterator list map numeric queue set stack string CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_stl_${header}.hxx.in ${KWSYS_HEADER_DIR}/stl/${header}.hxx @ONLY IMMEDIATE) + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/stl/${header}.hxx + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}/stl) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/stl FILES ${KWSYS_HEADER_DIR}/stl/${header}.hxx) @@ -381,6 +498,10 @@ FOREACH(header algorithm deque iterator list map numeric queue set stack string @ONLY IMMEDIATE) # Create an install target for the header wrapper. + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/stl/${header} + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}/stl) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/stl FILES ${KWSYS_HEADER_DIR}/stl/${header}) @@ -402,6 +523,10 @@ FOREACH(header iostream fstream sstream iosfwd) @ONLY IMMEDIATE) # Create an install target for the header wrapper. + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/ios/${header} + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}/ios) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/ios FILES ${KWSYS_HEADER_DIR}/ios/${header}) @@ -481,6 +606,10 @@ FOREACH(c ${KWSYS_CLASSES}) @ONLY IMMEDIATE) # Create an install target for the header. + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/${c}.hxx + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE} FILES ${KWSYS_HEADER_DIR}/${c}.hxx) @@ -494,6 +623,10 @@ FOREACH(h ${KWSYS_H_FILES}) @ONLY IMMEDIATE) # Create an install target for the header. + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/${h}.h + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE} FILES ${KWSYS_HEADER_DIR}/${h}.h) @@ -507,6 +640,10 @@ FOREACH(h ${KWSYS_HXX_FILES}) @ONLY IMMEDIATE) # Create an install target for the header. + IF(KWSYS_INSTALL_INCLUDE_DIR) + INSTALL(FILES ${KWSYS_HEADER_DIR}/${h}.hxx + DESTINATION ${KWSYS_INSTALL_INCLUDE_DIR}/${KWSYS_NAMESPACE}) + ENDIF(KWSYS_INSTALL_INCLUDE_DIR) IF(KWSYS_HEADER_INSTALL_DIR) INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE} FILES ${KWSYS_HEADER_DIR}/${h}.hxx) @@ -532,15 +669,11 @@ IF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS) ENDIF(KWSYS_PROPERTIES_CXX) # Create an install target for the library. + IF(KWSYS_INSTALL_LIBRARY_RULE) + INSTALL(TARGETS ${KWSYS_NAMESPACE} ${KWSYS_INSTALL_LIBRARY_RULE}) + ENDIF(KWSYS_INSTALL_LIBRARY_RULE) IF(KWSYS_LIBRARY_INSTALL_DIR) - IF(VTK_INSTALL_HAS_CMAKE_24) - INSTALL(TARGETS ${KWSYS_NAMESPACE} - RUNTIME DESTINATION ${VTK_INSTALL_BIN_DIR_CM24} COMPONENT Runtime - LIBRARY DESTINATION ${VTK_INSTALL_LIB_DIR_CM24} COMPONENT Runtime - ARCHIVE DESTINATION ${VTK_INSTALL_LIB_DIR_CM24} COMPONENT Development) - ELSE(VTK_INSTALL_HAS_CMAKE_24) - INSTALL_TARGETS(${KWSYS_LIBRARY_INSTALL_DIR} ${KWSYS_NAMESPACE}) - ENDIF(VTK_INSTALL_HAS_CMAKE_24) + INSTALL_TARGETS(${KWSYS_LIBRARY_INSTALL_DIR} ${KWSYS_NAMESPACE}) ENDIF(KWSYS_LIBRARY_INSTALL_DIR) ENDIF(KWSYS_C_SRCS OR KWSYS_CXX_SRCS) @@ -556,6 +689,9 @@ IF(KWSYS_ENABLE_C AND KWSYS_C_SRCS) ENDIF(KWSYS_PROPERTIES_C) # Create an install target for the library. + IF(KWSYS_INSTALL_LIBRARY_RULE) + INSTALL(TARGETS ${KWSYS_NAMESPACE}_c ${KWSYS_INSTALL_LIBRARY_RULE}) + ENDIF(KWSYS_INSTALL_LIBRARY_RULE) IF(KWSYS_LIBRARY_INSTALL_DIR) INSTALL_TARGETS(${KWSYS_LIBRARY_INSTALL_DIR} ${KWSYS_NAMESPACE}_c) ENDIF(KWSYS_LIBRARY_INSTALL_DIR) |