From 56669bd4e5ed21cfd2b0f5b94983792396695e5e Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Sun, 17 Feb 2019 19:10:55 +0100
Subject: [PATCH] Use more GNUInstallDirs, fix pkgconfig libdir path, general
 cleanup

---
 CMakeLists.txt                | 45 ++++++++++++-----------------------
 cmake/modules/FindQJSON.cmake |  2 +-
 dbusmenu-qt-config.cmake.in   |  2 +-
 dbusmenu-qt.pc.in             |  6 ++---
 src/CMakeLists.txt            | 16 ++++++-------
 tests/CMakeLists.txt          | 10 ++++----
 tools/testapp/CMakeLists.txt  |  2 +-
 7 files changed, 34 insertions(+), 49 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 72cbc45..2d757ec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.11)
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")
 
 # Build options
-option(WITH_DOC "Build documentation (requires Doxygen)" ON)
+option(WITH_DOC "Build documentation (requires Doxygen)" OFF)
 
 # Versions
 ## Package version
@@ -24,28 +24,8 @@ set(dbusmenu_qt_lib_PATCH_VERSION 0)
 
 set(dbusmenu_qt_lib_VERSION ${dbusmenu_qt_lib_SOVERSION}.${dbusmenu_qt_lib_API_VERSION}.${dbusmenu_qt_lib_PATCH_VERSION})
 
-# Check if we want to explicitly select the Qt version to be used or autodetect
-if (NOT USE_QT4 AND NOT USE_QT5)
-    # Autodetect, prefering Qt5
-    message(STATUS "Autodetecting Qt version to use")
-    find_package(Qt5Widgets QUIET)
-    if (Qt5Widgets_FOUND)
-        set(USE_QT5 TRUE)
-    endif()
-endif()
-
 # Detect for which Qt version we're building
-if (USE_QT5)
-    find_package(Qt5Widgets REQUIRED)
-    find_package(Qt5DBus REQUIRED)
-    include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
-    find_package(Qt5Core REQUIRED)
-    set(CMAKE_AUTOMOC ON)
-    set(CMAKE_AUTOMOC_RELAXED_MODE ON)
-    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-
-    set(QT_SUFFIX "qt5")
-else()
+if (USE_QT4)
     find_package(Qt4 REQUIRED)
     include_directories(
       ${QT_INCLUDE_DIR}
@@ -55,6 +35,14 @@ else()
       )
 
     set(QT_SUFFIX "qt")
+else()
+    find_package(Qt5 CONFIG REQUIRED Core DBus Widgets)
+    include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
+    set(CMAKE_AUTOMOC ON)
+    set(CMAKE_AUTOMOC_RELAXED_MODE ON)
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+    set(QT_SUFFIX "qt5")
 endif()
 
 include (CheckCXXCompilerFlag)
@@ -76,9 +64,7 @@ endif (__DBUSMENU_HAVE_CXX11)
 
 include(CMakePackageConfigHelpers)
 include(GNUInstallDirs)
-set(LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
-set(CMAKECONFIG_INSTALL_DIR "${LIB_DESTINATION}/cmake/dbusmenu-${QT_SUFFIX}")
-set(INCLUDE_INSTALL_DIR "include/dbusmenu-${QT_SUFFIX}")
+set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX}")
 
 # dist targets
 set(ARCHIVE_NAME libdbusmenu-${QT_SUFFIX}-${dbusmenu_qt_VERSION})
@@ -103,7 +89,7 @@ add_dependencies(distcheck dist)
 configure_file(dbusmenu-qt.pc.in ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc @ONLY)
 
 install(FILES ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc
-        DESTINATION ${LIB_DESTINATION}/pkgconfig
+        DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
     )
 
 add_subdirectory(src)
@@ -118,7 +104,7 @@ if(WITH_DOC)
         )
 
     install(DIRECTORY ${CMAKE_BINARY_DIR}/html/
-        DESTINATION share/doc/libdbusmenu-${QT_SUFFIX}-doc
+        DESTINATION ${CMAKE_INSTALL_DOCDIR}
         )
 endif(WITH_DOC)
 
@@ -126,8 +112,8 @@ endif(WITH_DOC)
 configure_package_config_file(
     dbusmenu-qt-config.cmake.in
     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
-    INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX}
     PATH_VARS INCLUDE_INSTALL_DIR
     )
 
 write_basic_package_version_file(
@@ -140,6 +126,6 @@ write_basic_package_version_file(
 install(FILES
     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
     ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake
-    DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX}"
     COMPONENT Devel
     )
--- a/cmake/modules/FindQJSON.cmake
+++ b/cmake/modules/FindQJSON.cmake
@@ -34,7 +34,7 @@ else (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES)
     qjson/parser.h
     PATHS
     ${PC_QJSON_INCLUDE_DIRS}
-    ${INCLUDE_INSTALL_DIR}
+    ${CMAKE_INSTALL_INCLUDEDIR}
     ${KDE4_INCLUDE_DIR}
   )
 
--- a/dbusmenu-qt.pc.in
+++ b/dbusmenu-qt.pc.in
@@ -1,7 +1,7 @@
 prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=@CMAKE_INSTALL_PREFIX@
-libdir=@CMAKE_INSTALL_PREFIX@/lib
-includedir=@CMAKE_INSTALL_PREFIX@/include/dbusmenu-@QT_SUFFIX@
+exec_prefix=${prefix}
+libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/dbusmenu-@QT_SUFFIX@
 
 Name: libdbusmenu-@QT_SUFFIX@
 Description: Qt implementation of dbusmenu spec
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,7 +29,7 @@ endif (__DBUSMENU_HAVE_CXX11)
 # Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is
 # not present in betas.
 
-if (NOT USE_QT5)
+if (USE_QT4)
     set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
     set(CMAKE_REQUIRED_LIBRARIES "${QT_QTGUI_LIBRARIES};${QT_QTCORE_LIBRARIES}")
 else()
@@ -64,7 +64,7 @@ include_directories(
     ${CMAKE_BINARY_DIR}/src
     )
 
-if (NOT USE_QT5)
+if (USE_QT4)
     qt4_automoc(${dbusmenu_qt_SRCS})
     qt4_add_dbus_adaptor(dbusmenu_qt_SRCS
         ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
@@ -88,7 +88,7 @@ set_target_properties(dbusmenu-${QT_SUFFIX} PROPERTIES
     )
 
 
-if (NOT USE_QT5)
+if (USE_QT4)
     target_link_libraries(dbusmenu-${QT_SUFFIX}
         ${QT_QTGUI_LIBRARIES}
         ${QT_QTDBUS_LIBRARIES}
@@ -105,23 +105,23 @@ endif()
 
 # Make sure linking to the target adds dbusmenu-qt install directory
 target_include_directories(dbusmenu-${QT_SUFFIX}
-    INTERFACE "$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>")
+    INTERFACE "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX}>")
 
 install(TARGETS dbusmenu-${QT_SUFFIX}
     EXPORT dbusmenu-${QT_SUFFIX}-targets
-    LIBRARY DESTINATION ${LIB_DESTINATION}
+    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
     RUNTIME DESTINATION bin
     )
 
 install(EXPORT dbusmenu-${QT_SUFFIX}-targets
-    DESTINATION ${CMAKECONFIG_INSTALL_DIR})
+    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX})
 
 install(DIRECTORY .
-    DESTINATION ${INCLUDE_INSTALL_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX}
     FILES_MATCHING PATTERN "*.h"
     PATTERN "*_p.h" EXCLUDE
     )
 
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h
-    DESTINATION ${INCLUDE_INSTALL_DIR}
+    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX}
     )
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,9 +1,9 @@
-if (NOT USE_QT5)
+if (USE_QT4)
     qt4_automoc(slowmenu.cpp)
 endif()
 add_executable(slowmenu slowmenu.cpp)
 
-if (NOT USE_QT5)
+if (USE_QT4)
     target_link_libraries(slowmenu
         ${QT_QTGUI_LIBRARIES}
         ${QT_QTDBUS_LIBRARIES}
@@ -77,7 +77,7 @@ set(dbusmenuexportertest_SRCS
     testutils.cpp
     )
 
-if (NOT USE_QT5)
+if (USE_QT4)
     qt4_automoc(${dbusmenuexportertest_SRCS})
 endif()
 
@@ -94,7 +94,7 @@ set(dbusmenuimportertest_SRCS
     testutils.cpp
     )
 
-if (NOT USE_QT5)
+if (USE_QT4)
     qt4_automoc(${dbusmenuimportertest_SRCS})
 endif()
 
@@ -110,7 +110,7 @@ set(dbusmenushortcuttest_SRCS
     dbusmenushortcuttest.cpp
     )
 
-if (NOT USE_QT5)
+if (USE_QT4)
     qt4_automoc(${dbusmenushortcuttest_SRCS})
 endif()
 
--- a/tools/testapp/CMakeLists.txt
+++ b/tools/testapp/CMakeLists.txt
@@ -4,7 +4,7 @@ set(qtapp_SRCS
 
 add_executable(dbusmenubench-qtapp ${qtapp_SRCS})
 
-if (NOT USE_QT5)
+if (USE_QT4)
     # Qt4
     include_directories(
         ${CMAKE_CURRENT_SOURCE_DIR}/../../src
-- 
2.20.1