diff --git a/CMakeLists.txt b/CMakeLists.txt index 595ef60..fee9817 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,91 +1,90 @@ cmake_minimum_required(VERSION 3.5) set(KF5_VERSION "5.68.0") # handled by release scripts project(ModemManagerQt VERSION ${KF5_VERSION}) include(FeatureSummary) find_package(ECM 5.67.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH}) find_package(ModemManager 1.0 REQUIRED) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) set(REQUIRED_QT_VERSION 5.12.0) find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED Core DBus Xml) add_definitions(${QT_DEFINITIONS}) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMAddQch) - +include(ECMQtDeclareLoggingCategory) option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") ecm_setup_version(PROJECT VARIABLE_PREFIX MODEMMANAGERQT VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/modemmanagerqt_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5ModemManagerQtConfigVersion.cmake" SOVERSION 6) add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) # Enable unit testing if (BUILD_TESTING) add_subdirectory(src/fakemodem) add_subdirectory(autotests) endif () ################## examples ################################ option(BUILD_EXAMPLES "Build example applications" FALSE) if (BUILD_EXAMPLES) add_subdirectory(examples) endif(BUILD_EXAMPLES) add_subdirectory(src) # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5ModemManagerQt") if (BUILD_QCH) ecm_install_qch_export( TARGETS KF5ModemManagerQt_QCH FILE KF5ModemManagerQtQchTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5ModemManagerQtQchTargets.cmake\")") endif() include(CMakePackageConfigHelpers) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5ModemManagerQtConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5ModemManagerQtConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5ModemManagerQtConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5ModemManagerQtConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) install(EXPORT KF5ModemManagerQtTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5ModemManagerQtTargets.cmake NAMESPACE KF5:: ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/modemmanagerqt_version.h DESTINATION ${KF5_INCLUDE_INSTALL_DIR} COMPONENT Devel ) -install(FILES modemmanager-qt.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/modemmanager-qt.categories b/modemmanager-qt.categories deleted file mode 100644 index 704ec96..0000000 --- a/modemmanager-qt.categories +++ /dev/null @@ -1 +0,0 @@ -modemmanager-qt ModemManagerQt DEFAULT_SEVERITY [WARNING] IDENTIFIER [MMQT] diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5e22a87..b15c40e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,153 +1,174 @@ #add_subdirectory(dbus) include_directories( ${MODEMMANAGER_INCLUDE_DIRS} ) set(ModemManagerQt_SRCS bearer.cpp generictypes.cpp interface.cpp manager.cpp modem.cpp modemsimple.cpp modem3gpp.cpp modem3gppussd.cpp modemcdma.cpp modemdevice.cpp modemfirmware.cpp modemlocation.cpp modemmessaging.cpp modemtime.cpp sim.cpp sms.cpp ) set(DBUS_INTERFACES_FILES dbus/bearerinterface.cpp dbus/dbus_manager.cpp dbus/firmwareinterface.cpp dbus/locationinterface.cpp dbus/messaginginterface.cpp dbus/modem3gppinterface.cpp dbus/modemcdmainterface.cpp dbus/modeminterface.cpp dbus/modemmanager1interface.cpp dbus/siminterface.cpp dbus/simpleinterface.cpp dbus/smsinterface.cpp dbus/timeinterface.cpp dbus/ussdinterface.cpp ) if (${MODEMMANAGER_VERSION} VERSION_EQUAL 1.2.0 OR ${MODEMMANAGER_VERSION} VERSION_GREATER 1.2.0) set(ModemManagerQt_SRCS ${ModemManagerQt_SRCS} modemoma.cpp modemsignal.cpp ) set(DBUS_INTERFACES_FILES ${DBUS_INTERFACES_FILES} dbus/omainterface.cpp dbus/signalinterface.cpp ) endif() if (${MODEMMANAGER_VERSION} VERSION_EQUAL 1.6.0 OR ${MODEMMANAGER_VERSION} VERSION_GREATER 1.6.0) set(ModemManagerQt_SRCS ${ModemManagerQt_SRCS} modemvoice.cpp call.cpp ) set(DBUS_INTERFACES_FILES ${DBUS_INTERFACES_FILES} dbus/callinterface.cpp dbus/voiceinterface.cpp ) endif() +ecm_qt_export_logging_category( + IDENTIFIER MMQT + CATEGORY_NAME modemmanager-qt + DEFAULT_SEVERITY Warning + DESCRIPTION "ModemManagerQt" + EXPORT MODEMMANAGERQT +) + add_library(KF5ModemManagerQt SHARED ${ModemManagerQt_SRCS} ${DBUS_INTERFACES_FILES}) generate_export_header(KF5ModemManagerQt BASE_NAME ModemManagerQt) add_library(KF5::ModemManagerQt ALIAS KF5ModemManagerQt) target_include_directories(KF5ModemManagerQt INTERFACE "$") target_link_libraries(KF5ModemManagerQt PUBLIC Qt5::Core Qt5::DBus Qt5::Xml) set_target_properties(KF5ModemManagerQt PROPERTIES VERSION ${MODEMMANAGERQT_VERSION_STRING} SOVERSION ${MODEMMANAGERQT_SOVERSION} EXPORT_NAME ModemManagerQt ) target_include_directories(KF5ModemManagerQt PUBLIC ${MODEMMANAGER_INCLUDE_DIRS}) ########### static lib for tests ############### add_library(KF5ModemManagerQt_static STATIC ${ModemManagerQt_SRCS} ${DBUS_INTERFACES_FILES}) set_target_properties(KF5ModemManagerQt_static PROPERTIES COMPILE_FLAGS -DMMQT_STATIC=1) target_link_libraries(KF5ModemManagerQt_static PUBLIC Qt5::Core Qt5::DBus Qt5::Xml) target_include_directories(KF5ModemManagerQt_static PUBLIC "$") ecm_generate_headers(ModemManagerQt_HEADERS HEADER_NAMES Call Bearer GenericTypes Interface Manager Modem Modem3Gpp Modem3GppUssd ModemCdma ModemDevice ModemFirmware ModemLocation ModemMessaging ModemSignal ModemSimple ModemTime ModemOma ModemVoice Sim Sms REQUIRED_HEADERS ModemManagerQt_HEADERS ) install(TARGETS KF5ModemManagerQt EXPORT KF5ModemManagerQtTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +# KF6: install to path having both include visibility layer & namespace dir prefix +# CamelCase includes to ${KF5_INCLUDE_INSTALL_DIR}/ModemManagerQt/ModemManagerQt +# normal headers to ${KF5_INCLUDE_INSTALL_DIR}/ModemManagerQt/modemmanagerqt +# The generated cmake config files are already accidentally pointing to the first layer, by +# target_include_directories(KF5ModemManagerQt INTERFACE "$") +# next to the actual include base ${KF5_INCLUDE_INSTALL_DIR} being set via KF5_INSTALL_TARGETS_DEFAULT_ARGS +# so this can stay untouched install(FILES ${CMAKE_CURRENT_BINARY_DIR}/modemmanagerqt_export.h ${ModemManagerQt_HEADERS} DESTINATION ${KF5_INCLUDE_INSTALL_DIR}/ModemManagerQt COMPONENT Devel ) +ecm_qt_install_logging_categories( + EXPORT MODEMMANAGERQT + FILE modemmanagerqt.categories + DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} +) + if(BUILD_QCH) ecm_add_qch( KF5ModemManagerQt_QCH NAME ModemManagerQt BASE_NAME KF5ModemManagerQt VERSION ${KF5_VERSION} ORG_DOMAIN org.kde SOURCES # using only public headers, to cover only public API ${ModemManagerQt_HEADERS} MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" LINK_QCHS Qt5Core_QCH Qt5DBus_QCH Qt5Xml_QCH BLANK_MACROS MODEMMANAGERQT_EXPORT MODEMMANAGERQT_DEPRECATED MODEMMANAGERQT_DEPRECATED_EXPORT TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel ) endif() include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME ModemManagerQt LIB_NAME KF5ModemManagerQt DEPS "core" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/ModemManagerQt) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})