2 cmake_minimum_required(VERSION 2.8.11)
3 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")
6 option(WITH_DOC "Build documentation (requires Doxygen)" ON)
10 set(dbusmenu_qt_VERSION_MAJOR 0)
11 set(dbusmenu_qt_VERSION_MINOR 9)
12 set(dbusmenu_qt_VERSION_PATCH 2)
13 set(dbusmenu_qt_VERSION ${dbusmenu_qt_VERSION_MAJOR}.${dbusmenu_qt_VERSION_MINOR}.${dbusmenu_qt_VERSION_PATCH})
16 ### Bump this one when a binary-incompatible change is introduced
17 set(dbusmenu_qt_lib_SOVERSION 2)
19 ### Bump this one when the API is extended in a binary-compatible way
20 set(dbusmenu_qt_lib_API_VERSION 6)
22 ### Bump this one when changes do not extend the API
23 set(dbusmenu_qt_lib_PATCH_VERSION 0)
25 set(dbusmenu_qt_lib_VERSION ${dbusmenu_qt_lib_SOVERSION}.${dbusmenu_qt_lib_API_VERSION}.${dbusmenu_qt_lib_PATCH_VERSION})
27 # Check if we want to explicitly select the Qt version to be used or autodetect
28 if (NOT USE_QT4 AND NOT USE_QT5)
29 # Autodetect, prefering Qt5
30 message(STATUS "Autodetecting Qt version to use")
31 find_package(Qt5Widgets QUIET)
37 # Detect for which Qt version we're building
39 find_package(Qt5Widgets REQUIRED)
40 find_package(Qt5DBus REQUIRED)
41 include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS})
42 find_package(Qt5Core REQUIRED)
44 set(CMAKE_AUTOMOC_RELAXED_MODE ON)
45 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
49 find_package(Qt4 REQUIRED)
52 ${QT_QTCORE_INCLUDE_DIR}
53 ${QT_QTDBUS_INCLUDE_DIR}
54 ${QT_QTGUI_INCLUDE_DIR}
60 include (CheckCXXCompilerFlag)
61 # Check some compiler flags
62 check_cxx_compiler_flag(-fvisibility=hidden __DBUSMENU_HAVE_GCC_VISIBILITY)
63 if (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)
64 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
65 endif (__DBUSMENU_HAVE_GCC_VISIBILITY AND NOT WIN32)
67 check_cxx_compiler_flag(-Woverloaded-virtual __DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
68 if (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
69 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual")
70 endif (__DBUSMENU_HAVE_W_OVERLOADED_VIRTUAL)
72 check_cxx_compiler_flag(-std=c++11 __DBUSMENU_HAVE_CXX11)
73 if (__DBUSMENU_HAVE_CXX11)
74 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
75 endif (__DBUSMENU_HAVE_CXX11)
77 include(CMakePackageConfigHelpers)
78 include(GNUInstallDirs)
79 set(LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
80 set(CMAKECONFIG_INSTALL_DIR "${LIB_DESTINATION}/cmake/dbusmenu-${QT_SUFFIX}")
81 set(INCLUDE_INSTALL_DIR "include/dbusmenu-${QT_SUFFIX}")
84 set(ARCHIVE_NAME libdbusmenu-${QT_SUFFIX}-${dbusmenu_qt_VERSION})
85 add_custom_target(dist
86 COMMAND bzr export --root=${ARCHIVE_NAME} ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
87 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
90 add_custom_target(distcheck
91 COMMAND cd ${CMAKE_BINARY_DIR}
92 && rm -rf ${ARCHIVE_NAME}
93 && tar xf ${ARCHIVE_NAME}.tar.bz2
94 && mkdir ${ARCHIVE_NAME}/build
95 && cd ${ARCHIVE_NAME}/build
96 && cmake -DCMAKE_INSTALL_PREFIX=../install ..
101 add_dependencies(distcheck dist)
103 configure_file(dbusmenu-qt.pc.in ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc @ONLY)
105 install(FILES ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc
106 DESTINATION ${LIB_DESTINATION}/pkgconfig
109 add_subdirectory(src)
110 add_subdirectory(tests)
111 add_subdirectory(tools)
114 configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile @ONLY)
116 add_custom_target(doc ALL doxygen
117 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
120 install(DIRECTORY ${CMAKE_BINARY_DIR}/html/
121 DESTINATION share/doc/libdbusmenu-${QT_SUFFIX}-doc
125 # Generate dbusmenu-qt-config* files
126 configure_package_config_file(
127 dbusmenu-qt-config.cmake.in
128 ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
129 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
130 PATH_VARS INCLUDE_INSTALL_DIR
133 write_basic_package_version_file(
134 ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake
135 VERSION ${dbusmenu_qt_VERSION}
136 COMPATIBILITY SameMajorVersion
139 # Install dbusmenu-qt-config* files
141 ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake
142 ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake
143 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"