Hi Aurelien,

Let's try again to finally get this resolved. :)

Attached, the necessary cmake foo to have find_package(DBusMenuQt NO_MODULE) 
work like other frameworks do.

The .diff should work, but someone had problems applying it during testing, so 
I've attached the whole files as well. (Maybe I missed some bzr diff option.)

Could you get this merged? If you want to test: kde-
workspace/plasma/generic/dataengines/CMakeLists.txt uses this, builds fine in 
both cases (with and without DBusMenuQt). I need this for the 
statusnotifieritem portion of the systemtray.

Thanks,
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2012-05-21 20:16:56 +0000
+++ CMakeLists.txt	2013-09-18 00:49:32 +0000
@@ -44,22 +44,47 @@
     )
 add_dependencies(distcheck dist)
 
+
 find_package(Qt5Widgets QUIET)
 if (Qt5Widgets_FOUND)
    find_package(Qt5DBus REQUIRED)
    include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
-   find_package(extra-cmake-modules 0.0.2 REQUIRED)
-   set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${EXTRA_CMAKE_MODULES_MODULE_PATH})
+   find_package(ECM 0.0.4 REQUIRED)
+   set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
    find_package(Qt5Transitional REQUIRED Core)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTOMOC_RELAXED_MODE ON)
+
+    include(ECMSetupVersion)
+    ecm_setup_version(${dbusmenu_qt_VERSION_MAJOR} ${dbusmenu_qt_VERSION_MINOR} ${dbusmenu_qt_VERSION_PATCH} VARIABLE_PREFIX DBusMenuQt
+                        VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h"
+                        PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfigVersion.cmake")
+
+    find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler InstallDirs)
+    set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_PREFIX}/cmake/DBusMenuQt)
+    include(CMakePackageConfigHelpers)
+    message(" #### CMAKECONFIG_INSTALL_DIR ${CMAKECONFIG_INSTALL_DIR}")
+    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
+    configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/DBusMenuQtConfig.cmake.in"
+                                "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfig.cmake"
+                                INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
+                                PATH_VARS  INCLUDE_INSTALL_DIR CMAKE_INSTALL_PREFIX )
+    install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfig.cmake"
+                "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfigVersion.cmake"
+                #"${CMAKE_CURRENT_SOURCE_DIR}/DBusMenuQtMacros.cmake"
+            DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+            COMPONENT Devel )
+
+    install(EXPORT DBusMenuQtTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+            FILE DBusMenuQtTargets.cmake COMPONENT Devel)
+
 else()
-find_package(Qt4 REQUIRED)
-include_directories(
-    ${QT_INCLUDE_DIR}
-    ${QT_QTCORE_INCLUDE_DIR}
-    ${QT_QTDBUS_INCLUDE_DIR}
-    ${QT_QTGUI_INCLUDE_DIR}
+    find_package(Qt4 REQUIRED)
+    include_directories(
+        ${QT_INCLUDE_DIR}
+        ${QT_QTCORE_INCLUDE_DIR}
+        ${QT_QTDBUS_INCLUDE_DIR}
+        ${QT_QTGUI_INCLUDE_DIR}
     )
 endif()
 

=== added file 'DBusMenuQtConfig.cmake.in'
--- DBusMenuQtConfig.cmake.in	1970-01-01 00:00:00 +0000
+++ DBusMenuQtConfig.cmake.in	2013-09-18 00:51:34 +0000
@@ -0,0 +1,24 @@
+@PACKAGE_INIT@
+
+# Any changes in this ".cmake" file will be overwritten by CMake, the source is the ".cmake.in" file.
+
+set(DBusMenuQt_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@")
+set_and_check(DBusMenuQt_INCLUDE_DIR    "@PACKAGE_INCLUDE_INSTALL_DIR@")
+
+include("${CMAKE_CURRENT_LIST_DIR}/DBusMenuQtTargets.cmake")
+
+set(DBusMenuQt_INCLUDE_DIR    "${PACKAGE_PREFIX_DIR}/include/dbusmenu-qt/")
+
+
+set(DBusMenuQt_FOUND TRUE)
+set(DBusMenuQt_INCLUDE_DIRS ${DBusMenuQt_INCLUDE_DIR})
+
+set(DBusMenuQt_LIBRARY dbusmenu-qt)
+set(DBusMenuQt_LIBRARIES dbusmenu-qt)
+#set(DBusMenuQt_LIBRARIES DBusMenuQt)
+
+
+message(" XXXXXXXXXXXXXXXXXX  DBUSMENU --- ${DBusMenuQt_INCLUDE_DIR} ${DBusMenuQt_LIBRARIES}")
+
+#get_target_property(KConfig_KCFGC_EXECUTABLE  KF5::kconfig_compiler  LOCATION)
+#include("${CMAKE_CURRENT_LIST_DIR}/KConfigMacros.cmake")

=== modified file 'src/CMakeLists.txt'
--- src/CMakeLists.txt	2012-05-21 20:16:56 +0000
+++ src/CMakeLists.txt	2013-09-18 00:49:13 +0000
@@ -17,6 +17,7 @@
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
 endif (__DBUSMENU_HAVE_W_ALL)
 
+remove_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_STRICT_ITERATORS -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_KEYWORDS)
 # Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is
 # not present in betas.
 set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
@@ -75,9 +76,12 @@
     )
 
 install(TARGETS dbusmenu-qt
+    EXPORT DBusMenuQtTargets
     LIBRARY DESTINATION lib${LIB_SUFFIX}
     RUNTIME DESTINATION bin)
 
+#install(TARGETS plasma EXPORT kdelibsLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS})
+
 install(DIRECTORY .
     DESTINATION include/dbusmenu-qt
     FILES_MATCHING PATTERN "*.h"

@PACKAGE_INIT@

# Any changes in this ".cmake" file will be overwritten by CMake, the source is 
the ".cmake.in" file.

set(DBusMenuQt_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@")
set_and_check(DBusMenuQt_INCLUDE_DIR    "@PACKAGE_INCLUDE_INSTALL_DIR@")

include("${CMAKE_CURRENT_LIST_DIR}/DBusMenuQtTargets.cmake")

set(DBusMenuQt_INCLUDE_DIR    "${PACKAGE_PREFIX_DIR}/include/dbusmenu-qt/")


set(DBusMenuQt_FOUND TRUE)
set(DBusMenuQt_INCLUDE_DIRS ${DBusMenuQt_INCLUDE_DIR})

set(DBusMenuQt_LIBRARY dbusmenu-qt)
set(DBusMenuQt_LIBRARIES dbusmenu-qt)
#set(DBusMenuQt_LIBRARIES DBusMenuQt)


message(" XXXXXXXXXXXXXXXXXX  DBUSMENU --- ${DBusMenuQt_INCLUDE_DIR} 
${DBusMenuQt_LIBRARIES}")

#get_target_property(KConfig_KCFGC_EXECUTABLE  KF5::kconfig_compiler  LOCATION)
#include("${CMAKE_CURRENT_LIST_DIR}/KConfigMacros.cmake")
project(dbusmenu-qt)
cmake_minimum_required(VERSION 2.8.12)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")

# Build options
option(WITH_DOC "Build documentation (requires Doxygen)" ON)

# Versions
## Package version
set(dbusmenu_qt_VERSION_MAJOR 0)
set(dbusmenu_qt_VERSION_MINOR 9)
set(dbusmenu_qt_VERSION_PATCH 2)
set(dbusmenu_qt_VERSION ${dbusmenu_qt_VERSION_MAJOR}.${dbusmenu_qt_VERSION_MINOR}.${dbusmenu_qt_VERSION_PATCH})

## Lib version
### Bump this one when a binary-incompatible change is introduced
set(dbusmenu_qt_lib_SOVERSION 2)

### Bump this one when the API is extended in a binary-compatible way
set(dbusmenu_qt_lib_API_VERSION 6)

### Bump this one when changes do not extend the API
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})

# dist targets
set(ARCHIVE_NAME libdbusmenu-qt-${dbusmenu_qt_VERSION})
add_custom_target(dist
    COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    )

add_custom_target(distcheck
    COMMAND cd ${CMAKE_BINARY_DIR}
    && rm -rf ${ARCHIVE_NAME}
    && tar xf ${ARCHIVE_NAME}.tar.bz2
    && mkdir ${ARCHIVE_NAME}/build
    && cd ${ARCHIVE_NAME}/build
    && cmake -DCMAKE_INSTALL_PREFIX=../install ..
    && make
    && make install
    && make check
    )
add_dependencies(distcheck dist)


find_package(Qt5Widgets QUIET)
if (Qt5Widgets_FOUND)
   find_package(Qt5DBus REQUIRED)
   include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
   find_package(ECM 0.0.4 REQUIRED)
   set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
   #find_package(Qt5Transitional REQUIRED Core)
   set(CMAKE_AUTOMOC ON)
   set(CMAKE_AUTOMOC_RELAXED_MODE ON)
    message(" XXXXXX ${dbusmenu_qt_VERSION}")
    include(ECMSetupVersion)
    ecm_setup_version(${dbusmenu_qt_VERSION} VARIABLE_PREFIX DBusMenuQt
                        VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h"
                        PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfigVersion.cmake")

    find_package(KF5 5.0.0 REQUIRED MODULE COMPONENTS CMake Compiler InstallDirs)
    set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_PREFIX}/cmake/DBusMenuQt)
    include(CMakePackageConfigHelpers)
    message(" #### CMAKECONFIG_INSTALL_DIR ${CMAKECONFIG_INSTALL_DIR}")
    set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include")
    configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/DBusMenuQtConfig.cmake.in"
                                "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfig.cmake"
                                INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
                                PATH_VARS  INCLUDE_INSTALL_DIR CMAKE_INSTALL_PREFIX )
    install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfig.cmake"
                "${CMAKE_CURRENT_BINARY_DIR}/DBusMenuQtConfigVersion.cmake"
                #"${CMAKE_CURRENT_SOURCE_DIR}/DBusMenuQtMacros.cmake"
            DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
            COMPONENT Devel )

    install(EXPORT DBusMenuQtTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
            FILE DBusMenuQtTargets.cmake COMPONENT Devel)

else()
    find_package(Qt4 REQUIRED)
    include_directories(
        ${QT_INCLUDE_DIR}
        ${QT_QTCORE_INCLUDE_DIR}
        ${QT_QTDBUS_INCLUDE_DIR}
        ${QT_QTGUI_INCLUDE_DIR}
    )
endif()


configure_file(dbusmenu-qt.pc.in ${CMAKE_BINARY_DIR}/dbusmenu-qt.pc @ONLY)

install(FILES ${CMAKE_BINARY_DIR}/dbusmenu-qt.pc
    DESTINATION lib${LIB_SUFFIX}/pkgconfig
    )

add_subdirectory(src)
if (NOT Qt5Widgets_FOUND) # TODO port tests to Qt5
add_subdirectory(tests)
endif()
add_subdirectory(tools)

if(WITH_DOC)
    configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile @ONLY)

    add_custom_target(doc ALL doxygen
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
        )

    install(DIRECTORY ${CMAKE_BINARY_DIR}/html/
        DESTINATION share/doc/dbusmenu-qt
        )
endif(WITH_DOC)
include(CheckCXXSourceCompiles)
include (CheckCXXCompilerFlag)

# Check some compiler flags
check_cxx_compiler_flag(-fvisibility=hidden __DBUSMENU_HAVE_GCC_VISIBILITY)
if (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
endif (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)

check_cxx_compiler_flag(-Woverloaded-virtual __DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
if (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
endif (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)

check_cxx_compiler_flag(-Wall __DBUSMENU_HAVE_W_ALL)
if (__DBUSMENU_HAVE_W_ALL)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif (__DBUSMENU_HAVE_W_ALL)

remove_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_STRICT_ITERATORS -DQT_NO_CAST_FROM_BYTEARRAY -DQT_NO_KEYWORDS)
# Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is
# not present in betas.
set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}")
set(CMAKE_REQUIRED_LIBRARIES "${QT_QTGUI_LIBRARIES};${QT_QTCORE_LIBRARIES}")
check_cxx_source_compiles("
#include <QtGui/QIcon>
int main() {
    QIcon icon;
    icon.name();
    return 0;
}
" HAVE_QICON_NAME)
if (NOT HAVE_QICON_NAME)
    message(STATUS "QIcon::name() does not exist, DBusMenuExporter will not export icon names by itself")
endif()
configure_file(dbusmenu_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_config.h @ONLY)

set(dbusmenu_qt_SRCS
    dbusmenu_p.cpp
    dbusmenuexporter.cpp
    dbusmenuexporterdbus_p.cpp
    dbusmenuimporter.cpp
    dbusmenutypes_p.cpp
    dbusmenushortcut_p.cpp
    utils.cpp
    )

include_directories(
    ${CMAKE_SOURCE_DIR}/src
    ${CMAKE_BINARY_DIR}/src
    )

if (Qt5Widgets_FOUND)
    qt5_add_dbus_adaptor(dbusmenu_qt_SRCS
        ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
        ${CMAKE_CURRENT_SOURCE_DIR}/dbusmenuexporterdbus_p.h DBusMenuExporterDBus
    )
else()
    qt4_automoc(${dbusmenu_qt_SRCS})
    qt4_add_dbus_adaptor(dbusmenu_qt_SRCS
        ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml
        ${CMAKE_CURRENT_SOURCE_DIR}/dbusmenuexporterdbus_p.h DBusMenuExporterDBus
    )
endif()

configure_file(dbusmenu_version.h.in
    ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h
    )

add_library(dbusmenu-qt SHARED ${dbusmenu_qt_SRCS})
set_target_properties(dbusmenu-qt PROPERTIES
    VERSION ${dbusmenu_qt_lib_VERSION}
    SOVERSION ${dbusmenu_qt_lib_SOVERSION}
    )

if (Qt5Widgets_FOUND)
    target_link_libraries(dbusmenu-qt
        Qt5::Core
        Qt5::DBus
        Qt5::Widgets
    )
else()
    target_link_libraries(dbusmenu-qt
        ${QT_QTGUI_LIBRARIES}
        ${QT_QTDBUS_LIBRARIES}
        ${QT_QTCORE_LIBRARIES}
    )
endif()

install(TARGETS dbusmenu-qt
    EXPORT DBusMenuQtTargets
    LIBRARY DESTINATION lib${LIB_SUFFIX}
    RUNTIME DESTINATION bin)

#install(TARGETS plasma EXPORT kdelibsLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS})

install(DIRECTORY .
    DESTINATION include/dbusmenu-qt
    FILES_MATCHING PATTERN "*.h"
    PATTERN "*_p.h" EXCLUDE
    )

install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h
    DESTINATION include/dbusmenu-qt/
    )
_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to