|
@@ -9,8 +9,6 @@
|
|
|
# configure_file() command when creating the <Name>Config.cmake or <Name>-config.cmake
|
|
# configure_file() command when creating the <Name>Config.cmake or <Name>-config.cmake
|
|
|
# file for installing a project or library. It helps making the resulting package
|
|
# file for installing a project or library. It helps making the resulting package
|
|
|
# relocatable by avoiding hardcoded paths in the installed Config.cmake file.
|
|
# relocatable by avoiding hardcoded paths in the installed Config.cmake file.
|
|
|
-# <Name>Config.cmake files installed under UNIX into /lib(64) or /usr/lib(64) are
|
|
|
|
|
-# considered system packages and are not relocatable.
|
|
|
|
|
#
|
|
#
|
|
|
# In a FooConfig.cmake file there may be code like this to make the
|
|
# In a FooConfig.cmake file there may be code like this to make the
|
|
|
# install destinations know to the using project:
|
|
# install destinations know to the using project:
|
|
@@ -176,32 +174,17 @@ function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
|
|
|
set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}")
|
|
set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}")
|
|
|
endif()
|
|
endif()
|
|
|
|
|
|
|
|
- # with the /usr-move, /lib(64) is a symlink to /usr/lib on Fedora, ArchLinux, Mageira and others.
|
|
|
|
|
- # If we are installed to such a location, force using absolute paths.
|
|
|
|
|
- set(forceAbsolutePaths FALSE)
|
|
|
|
|
- if("${absInstallDir}" MATCHES "^(/usr)?/lib(64)?/.+")
|
|
|
|
|
- set(forceAbsolutePaths TRUE)
|
|
|
|
|
- endif()
|
|
|
|
|
-
|
|
|
|
|
file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" )
|
|
file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" )
|
|
|
|
|
|
|
|
foreach(var ${CCF_PATH_VARS})
|
|
foreach(var ${CCF_PATH_VARS})
|
|
|
if(NOT DEFINED ${var})
|
|
if(NOT DEFINED ${var})
|
|
|
message(FATAL_ERROR "Variable ${var} does not exist")
|
|
message(FATAL_ERROR "Variable ${var} does not exist")
|
|
|
else()
|
|
else()
|
|
|
- if(forceAbsolutePaths)
|
|
|
|
|
- if(IS_ABSOLUTE "${${var}}")
|
|
|
|
|
- set(PACKAGE_${var} "${${var}}")
|
|
|
|
|
- else()
|
|
|
|
|
- set(PACKAGE_${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
|
|
|
- endif()
|
|
|
|
|
|
|
+ if(IS_ABSOLUTE "${${var}}")
|
|
|
|
|
+ string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}"
|
|
|
|
|
+ PACKAGE_${var} "${${var}}")
|
|
|
else()
|
|
else()
|
|
|
- if(IS_ABSOLUTE "${${var}}")
|
|
|
|
|
- string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}"
|
|
|
|
|
- PACKAGE_${var} "${${var}}")
|
|
|
|
|
- else()
|
|
|
|
|
- set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
|
|
|
|
|
- endif()
|
|
|
|
|
|
|
+ set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
|
|
|
endif()
|
|
endif()
|
|
|
endif()
|
|
endif()
|
|
|
endforeach()
|
|
endforeach()
|
|
@@ -216,6 +199,21 @@ function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
|
|
|
get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
|
|
get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
|
|
|
")
|
|
")
|
|
|
|
|
|
|
|
|
|
+ if("${absInstallDir}" MATCHES "^(/usr)?/lib(64)?/.+")
|
|
|
|
|
+ # Handle "/usr move" symlinks created by some Linux distros.
|
|
|
|
|
+ set(PACKAGE_INIT "${PACKAGE_INIT}
|
|
|
|
|
+# Use original install prefix when loaded through a \"/usr move\"
|
|
|
|
|
+# cross-prefix symbolic link such as /lib -> /usr/lib.
|
|
|
|
|
+get_filename_component(_realCurr \"\${CMAKE_CURRENT_LIST_DIR}\" REALPATH)
|
|
|
|
|
+get_filename_component(_realOrig \"${absInstallDir}\" REALPATH)
|
|
|
|
|
+if(_realCurr STREQUAL _realOrig)
|
|
|
|
|
+ set(PACKAGE_PREFIX_DIR \"${CMAKE_INSTALL_PREFIX}\")
|
|
|
|
|
+endif()
|
|
|
|
|
+unset(_realOrig)
|
|
|
|
|
+unset(_realCurr)
|
|
|
|
|
+")
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
if(NOT CCF_NO_SET_AND_CHECK_MACRO)
|
|
if(NOT CCF_NO_SET_AND_CHECK_MACRO)
|
|
|
set(PACKAGE_INIT "${PACKAGE_INIT}
|
|
set(PACKAGE_INIT "${PACKAGE_INIT}
|
|
|
macro(set_and_check _var _file)
|
|
macro(set_and_check _var _file)
|