From 1f151d81381106c15084280f1e11209d259ae45c Mon Sep 17 00:00:00 2001 From: John Zimmermann Date: Sat, 19 Jun 2021 15:47:56 +0200 Subject: [PATCH] Change installed .cmake and .pc files to contain realtive paths The LIB_DESTINATION and INCLUDE_DESTIONATION variables do hold little value, since one can just override the normal CMAKE variables as needed. Furthermore using CMAKE_INSTALL_FULL_LIBDIR is harmful, since this prevents CMake to use it's logic to install relocatable .cmake files. Also libdir and includedir in pkgconfig files need to be prefixed by either ${exec_prefix} or ${prefix} for the same relocation reasons. --- CMakeLists.txt | 27 +++++++++++---------------- PolkitQt-1Config.cmake.in | 4 ++-- agent/CMakeLists.txt | 6 +++--- core/CMakeLists.txt | 6 +++--- gui/CMakeLists.txt | 6 +++--- polkit-qt-1.pc.cmake | 4 ++-- polkit-qt-agent-1.pc.cmake | 4 ++-- polkit-qt-core-1.pc.cmake | 4 ++-- polkit-qt-gui-1.pc.cmake | 4 ++-- polkit-qt5-1.pc.cmake | 4 ++-- polkit-qt5-agent-1.pc.cmake | 4 ++-- polkit-qt5-core-1.pc.cmake | 4 ++-- polkit-qt5-gui-1.pc.cmake | 4 ++-- 13 files changed, 38 insertions(+), 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32eb737..a82f8cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,11 +21,6 @@ include(GNUInstallDirs) include(FeatureSummary) -# Set the different paths -set(LIB_DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" CACHE PATH "Library directory name") -set(INCLUDE_DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}" CACHE PATH "The subdirectory to the header prefix") - - set(REQUIRED_QT_VERSION 5.5.0) set(CMAKE_CXX_STANDARD 11) @@ -103,7 +98,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/agent/polkitqt1-agent-export.h DESTINATION - ${INCLUDE_DESTINATION}/${POLKITQT-1_INCLUDE_PATH} COMPONENT Devel) + ${CMAKE_INSTALL_INCLUDEDIR}/${POLKITQT-1_INCLUDE_PATH} COMPONENT Devel) install(FILES includes/PolkitQt1/Authority @@ -113,40 +108,40 @@ install(FILES includes/PolkitQt1/TemporaryAuthorization includes/PolkitQt1/ActionDescription DESTINATION - ${INCLUDE_DESTINATION}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1 COMPONENT Devel) + ${CMAKE_INSTALL_INCLUDEDIR}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1 COMPONENT Devel) install(FILES includes/PolkitQt1/Gui/Action includes/PolkitQt1/Gui/ActionButton includes/PolkitQt1/Gui/ActionButtons DESTINATION - ${INCLUDE_DESTINATION}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1/Gui COMPONENT Devel) + ${CMAKE_INSTALL_INCLUDEDIR}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1/Gui COMPONENT Devel) install(FILES includes/PolkitQt1/Agent/Listener includes/PolkitQt1/Agent/Session DESTINATION - ${INCLUDE_DESTINATION}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1/Agent COMPONENT Devel) + ${CMAKE_INSTALL_INCLUDEDIR}/${POLKITQT-1_INCLUDE_PATH}/PolkitQt1/Agent COMPONENT Devel) if(NOT WIN32) # Pkgconfig configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${POLKITQT-1_PCNAME}.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_PCNAME}.pc @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_PCNAME}.pc DESTINATION ${LIB_DESTINATION}/pkgconfig ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_PCNAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${POLKITQT-1_CORE_PCNAME}.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_CORE_PCNAME}.pc @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_CORE_PCNAME}.pc DESTINATION ${LIB_DESTINATION}/pkgconfig ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_CORE_PCNAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${POLKITQT-1_GUI_PCNAME}.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_GUI_PCNAME}.pc @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_GUI_PCNAME}.pc DESTINATION ${LIB_DESTINATION}/pkgconfig ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_GUI_PCNAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${POLKITQT-1_AGENT_PCNAME}.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_AGENT_PCNAME}.pc @ONLY) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_AGENT_PCNAME}.pc DESTINATION ${LIB_DESTINATION}/pkgconfig ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${POLKITQT-1_AGENT_PCNAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) endif(NOT WIN32) if(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) - set(_PolkitQt-1Config_INSTALL_DIR ${LIB_DESTINATION}/cmake/${POLKITQT-1_CAMEL_NAME}) + set(_PolkitQt-1Config_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${POLKITQT-1_CAMEL_NAME}) else(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) - set(_PolkitQt-1Config_INSTALL_DIR ${LIB_DESTINATION}/${POLKITQT-1_CAMEL_NAME}/cmake) + set(_PolkitQt-1Config_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${POLKITQT-1_CAMEL_NAME}/cmake) endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) @@ -154,7 +149,7 @@ endif(USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR) configure_package_config_file(PolkitQt-1Config.cmake.in ${CMAKE_BINARY_DIR}/${POLKITQT-1_CAMEL_NAME}Config.cmake INSTALL_DESTINATION ${_PolkitQt-1Config_INSTALL_DIR} - PATH_VARS LIB_DESTINATION INCLUDE_DESTINATION + PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR ) write_basic_package_version_file(${CMAKE_BINARY_DIR}/${POLKITQT-1_CAMEL_NAME}ConfigVersion.cmake diff --git a/PolkitQt-1Config.cmake.in b/PolkitQt-1Config.cmake.in index f39480c..e09678c 100644 --- a/PolkitQt-1Config.cmake.in +++ b/PolkitQt-1Config.cmake.in @@ -20,9 +20,9 @@ if(NOT POLKITQT-1_INSTALL_DIR) set(POLKITQT-1_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@") endif(NOT POLKITQT-1_INSTALL_DIR) -set_and_check(POLKITQT-1_INCLUDE_DIR "@PACKAGE_INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@") +set_and_check(POLKITQT-1_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@") set_and_check(POLKITQT-1_INCLUDE_DIRS "${POLKITQT-1_INCLUDE_DIR}") -set_and_check(POLKITQT-1_LIB_DIR "@PACKAGE_LIB_DESTINATION@") +set_and_check(POLKITQT-1_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@") set(POLKITQT-1_POLICY_FILES_INSTALL_DIR "${POLKITQT-1_INSTALL_DIR}/share/polkit-1/actions") ################################## diff --git a/agent/CMakeLists.txt b/agent/CMakeLists.txt index ccf2711..1a86cd8 100644 --- a/agent/CMakeLists.txt +++ b/agent/CMakeLists.txt @@ -29,11 +29,11 @@ set_target_properties(${POLKITQT-1_AGENT_PCNAME} PROPERTIES VERSION ${POLKITQT-1 target_include_directories(${POLKITQT-1_AGENT_PCNAME} INTERFACE - $ + $ $ $ ) -install(TARGETS ${POLKITQT-1_AGENT_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${LIB_DESTINATION} - LIBRARY DESTINATION ${LIB_DESTINATION} +install(TARGETS ${POLKITQT-1_AGENT_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION bin) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 3a80adc..8225871 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -32,12 +32,12 @@ set_target_properties(${POLKITQT-1_CORE_PCNAME} PROPERTIES VERSION ${POLKITQT-1_ target_include_directories(${POLKITQT-1_CORE_PCNAME} INTERFACE - $ + $ $ $ ) -install(TARGETS ${POLKITQT-1_CORE_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${LIB_DESTINATION} - LIBRARY DESTINATION ${LIB_DESTINATION} +install(TARGETS ${POLKITQT-1_CORE_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION bin) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index d9d800d..c22deba 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -28,11 +28,11 @@ set_target_properties(${POLKITQT-1_GUI_PCNAME} PROPERTIES VERSION ${POLKITQT-1_L target_include_directories(${POLKITQT-1_GUI_PCNAME} INTERFACE - $ + $ $ $ ) -install(TARGETS ${POLKITQT-1_GUI_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${LIB_DESTINATION} - LIBRARY DESTINATION ${LIB_DESTINATION} +install(TARGETS ${POLKITQT-1_GUI_PCNAME} EXPORT ${POLKITQT-1_CAMEL_NAME}Export ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION bin) diff --git a/polkit-qt-1.pc.cmake b/polkit-qt-1.pc.cmake index 7cc55a9..ba8e46e 100644 --- a/polkit-qt-1.pc.cmake +++ b/polkit-qt-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API diff --git a/polkit-qt-agent-1.pc.cmake b/polkit-qt-agent-1.pc.cmake index 001925d..23b2cae 100644 --- a/polkit-qt-agent-1.pc.cmake +++ b/polkit-qt-agent-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_AGENT_PCNAME@ Description: Convenience library for using polkit Agent with a Qt-styled API diff --git a/polkit-qt-core-1.pc.cmake b/polkit-qt-core-1.pc.cmake index ca435a6..fa501f0 100644 --- a/polkit-qt-core-1.pc.cmake +++ b/polkit-qt-core-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_CORE_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API, non-GUI classes diff --git a/polkit-qt-gui-1.pc.cmake b/polkit-qt-gui-1.pc.cmake index e7279d1..7261b0c 100644 --- a/polkit-qt-gui-1.pc.cmake +++ b/polkit-qt-gui-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_GUI_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API, GUI classes diff --git a/polkit-qt5-1.pc.cmake b/polkit-qt5-1.pc.cmake index 7cc55a9..ba8e46e 100644 --- a/polkit-qt5-1.pc.cmake +++ b/polkit-qt5-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API diff --git a/polkit-qt5-agent-1.pc.cmake b/polkit-qt5-agent-1.pc.cmake index fabc0db..709a24e 100644 --- a/polkit-qt5-agent-1.pc.cmake +++ b/polkit-qt5-agent-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_AGENT_PCNAME@ Description: Convenience library for using polkit Agent with a Qt-styled API diff --git a/polkit-qt5-core-1.pc.cmake b/polkit-qt5-core-1.pc.cmake index 33687c2..588f267 100644 --- a/polkit-qt5-core-1.pc.cmake +++ b/polkit-qt5-core-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_CORE_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API, non-GUI classes diff --git a/polkit-qt5-gui-1.pc.cmake b/polkit-qt5-gui-1.pc.cmake index 4280226..1c012dd 100644 --- a/polkit-qt5-gui-1.pc.cmake +++ b/polkit-qt5-gui-1.pc.cmake @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_DESTINATION@ -includedir=@INCLUDE_DESTINATION@/@POLKITQT-1_INCLUDE_PATH@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@ Name: @POLKITQT-1_GUI_PCNAME@ Description: Convenience library for using polkit with a Qt-styled API, GUI classes -- GitLab