You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
351 lines
9.5 KiB
351 lines
9.5 KiB
cmake_minimum_required(VERSION 2.8.11)
|
|
|
|
project(liblxqt)
|
|
|
|
set(LXQT_MAJOR_VERSION 0)
|
|
set(LXQT_MINOR_VERSION 9)
|
|
set(LXQT_PATCH_VERSION 0)
|
|
|
|
# Set default installation paths
|
|
set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "Installation path for libraries")
|
|
set(LXQT_PKG_CONFIG_DESCRIPTION "Shared library for LXQt applications")
|
|
|
|
set(PUB_HDRS
|
|
aboutdialog/lxqtaboutdialog.h
|
|
addplugindialog/lxqtaddplugindialog.h
|
|
lxqthtmldelegate.h
|
|
lxqtsettings.h
|
|
lxqtplugininfo.h
|
|
lxqtpowermanager.h
|
|
lxqtscreensaver.h
|
|
lxqtapplication.h
|
|
lxqtsingleapplication.h
|
|
lxqttranslator.h
|
|
lxqtprogramfinder.h
|
|
|
|
configdialog/lxqtconfigdialog.h
|
|
configdialog/lxqtpageselectwidget.h
|
|
|
|
lxqtpower/lxqtpower.h
|
|
lxqtnotification.h
|
|
lxqtautostartentry.h
|
|
lxqtgridlayout.h
|
|
lxqtrotatedwidget.h
|
|
lxqtglobals.h
|
|
)
|
|
|
|
set(PUBLIC_CLASSES
|
|
AboutDialog
|
|
HtmlDelegate
|
|
Settings
|
|
PluginInfo
|
|
PowerManager
|
|
AddPluginDialog
|
|
ScreenSaver
|
|
Application
|
|
SingleApplication
|
|
Translator
|
|
ProgramFinder
|
|
|
|
ConfigDialog
|
|
PageSelectWidget
|
|
|
|
Power
|
|
Notification
|
|
AutostartEntry
|
|
GridLayout
|
|
RotatedWidget
|
|
)
|
|
|
|
set(PRIV_HDRS
|
|
aboutdialog/lxqtaboutdialog_p.h
|
|
aboutdialog/technicalinfo.h
|
|
translatorsinfo/translatorsinfo.h
|
|
)
|
|
|
|
set(SRCS
|
|
aboutdialog/lxqtaboutdialog.cpp
|
|
aboutdialog/technicalinfo.cpp
|
|
lxqthtmldelegate.cpp
|
|
lxqtplugininfo.cpp
|
|
lxqtpowermanager.cpp
|
|
addplugindialog/lxqtaddplugindialog.cpp
|
|
lxqtsettings.cpp
|
|
lxqtscreensaver.cpp
|
|
lxqtapplication.cpp
|
|
lxqtsingleapplication.cpp
|
|
lxqttranslator.cpp
|
|
lxqtprogramfinder.cpp
|
|
|
|
configdialog/lxqtconfigdialog.cpp
|
|
configdialog/lxqtpageselectwidget.cpp
|
|
|
|
lxqtpower/lxqtpower.cpp
|
|
lxqtpower/lxqtpowerproviders.cpp
|
|
lxqtautostartentry.cpp
|
|
lxqtnotification.cpp
|
|
lxqtgridlayout.cpp
|
|
lxqtrotatedwidget.cpp
|
|
translatorsinfo/translatorsinfo.cpp
|
|
)
|
|
|
|
set(MOCS
|
|
aboutdialog/lxqtaboutdialog.h
|
|
aboutdialog/lxqtaboutdialog_p.h
|
|
addplugindialog/lxqtaddplugindialog.h
|
|
lxqthtmldelegate.h
|
|
lxqtpowermanager.h
|
|
lxqtsettings.h
|
|
lxqtscreensaver.h
|
|
lxqtapplication.h
|
|
|
|
configdialog/lxqtconfigdialog.h
|
|
configdialog/lxqtpageselectwidget.h
|
|
|
|
lxqtnotification.h
|
|
lxqtnotification_p.h
|
|
lxqtpower/lxqtpower.h
|
|
lxqtpower/lxqtpowerproviders.h
|
|
lxqtgridlayout.h
|
|
lxqtrotatedwidget.h
|
|
)
|
|
|
|
set(FORMS
|
|
aboutdialog/lxqtaboutdialog.ui
|
|
configdialog/lxqtconfigdialog.ui
|
|
addplugindialog/lxqtaddplugindialog.ui
|
|
)
|
|
|
|
# additional cmake files
|
|
list(APPEND CMAKE_MODULE_PATH
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules
|
|
)
|
|
|
|
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
|
|
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
set(CMAKE_AUTOMOC ON)
|
|
find_package(Qt5Widgets REQUIRED QUIET)
|
|
find_package(Qt5DBus REQUIRED QUIET)
|
|
find_package(Qt5X11Extras REQUIRED QUIET)
|
|
find_package(Qt5LinguistTools REQUIRED QUIET)
|
|
find_package(Qt5Xdg REQUIRED QUIET)
|
|
find_package(KF5WindowSystem REQUIRED QUIET)
|
|
message(STATUS "Building with Qt ${Qt5Core_VERSION_STRING}")
|
|
|
|
QT5_WRAP_UI(UIS ${FORMS})
|
|
|
|
QT5_ADD_DBUS_INTERFACE(SRCS
|
|
dbus/org.freedesktop.Notifications.xml
|
|
notifications_interface
|
|
)
|
|
|
|
QT5_ADD_DBUS_ADAPTOR(SRCS
|
|
dbus/org.lxqt.SingleApplication.xml
|
|
lxqtsingleapplication.h LxQt::SingleApplication
|
|
)
|
|
|
|
set(LXQT_QT_VERSION "5")
|
|
|
|
# KF5WindowSystem is missing here. KF5WindowSystem doesn't provide an .pc file.
|
|
set(LXQT_PKG_CONFIG_REQUIRES "Qt5Widgets Qt5Xml Qt5DBus Qt5X11Extras")
|
|
|
|
include(${QTXDG_USE_FILE})
|
|
|
|
include_directories(
|
|
"${QTXDG_INCLUDE_DIRS}"
|
|
)
|
|
|
|
# Standard directories for installation
|
|
include(GNUInstallDirs)
|
|
|
|
set(LXQT_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_PATCH_VERSION})
|
|
set(LXQT_LIBRARY_NAME "lxqt" CACHE STRING "lxqt")
|
|
set(LXQT_RELATIVE_SHARE_DIR "${LXQT_LIBRARY_NAME}")
|
|
set(LXQT_SHARE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${LXQT_RELATIVE_SHARE_DIR}")
|
|
set(LXQT_RELATIVE_TRANSLATIONS_DIR "${LXQT_LIBRARY_NAME}/translations")
|
|
set(LXQT_TRANSLATIONS_DIR "${LXQT_SHARE_DIR}/translations")
|
|
|
|
set(LXQT_INTREE_INCLUDE_DIR "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include")
|
|
set(LXQT_INTREE_TARGETS_FILE "${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}-targets.cmake")
|
|
|
|
set(LXQT_INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}/${LXQT_LIBRARY_NAME}")
|
|
set(LXQT_INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/share/cmake")
|
|
|
|
include(cmake/FindInstallConfigPath.cmake)
|
|
include(create_portable_headers)
|
|
|
|
## Translations
|
|
include(LXQtTranslateTs)
|
|
|
|
lxqt_translate_ts(QM_FILES
|
|
UPDATE_TRANSLATIONS
|
|
${UPDATE_TRANSLATIONS}
|
|
SOURCES
|
|
${SRCS}
|
|
${FORMS}
|
|
INSTALL_DIR
|
|
${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}
|
|
)
|
|
|
|
message(STATUS "")
|
|
message(STATUS "liblxqt version: ${LXQT_VERSION}")
|
|
message(STATUS "")
|
|
|
|
|
|
# Copy public headers
|
|
foreach(h ${PUB_HDRS})
|
|
get_filename_component(bh ${h} NAME)
|
|
configure_file(${h} "${LXQT_INTREE_INCLUDE_DIR}/LXQt/${bh}" COPYONLY)
|
|
endforeach()
|
|
|
|
# Create the portable headers
|
|
create_portable_headers(INTREE_PORTABLE_HEADERS ${LXQT_INTREE_INCLUDE_DIR}/LXQt ${PUBLIC_CLASSES})
|
|
check_portable_headers(H_FILES ${PUB_HDRS} LINKS ${INTREE_PORTABLE_HEADERS})
|
|
|
|
#************************************************
|
|
# Create in-tree build infrastructure
|
|
#************************************************
|
|
set(CFG_LXQT_INCLUDE_DIR ${LXQT_INTREE_INCLUDE_DIR})
|
|
set(CFG_LXQT_LIBRARY ${LXQT_LIBRARY_NAME})
|
|
set(CFG_LXQT_USE_FILE ${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}_use.cmake)
|
|
set(CFG_LXQT_TARGETS_FILE ${LXQT_INTREE_TARGETS_FILE})
|
|
set(CFG_LXQT_CMAKE_MODULES_DIR "${PROJECT_SOURCE_DIR}/cmake/modules")
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqtX-config.cmake.in
|
|
${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}-config.cmake
|
|
@ONLY
|
|
)
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqt_use.cmake.in
|
|
${CMAKE_BINARY_DIR}/${LXQT_LIBRARY_NAME}_use.cmake
|
|
@ONLY
|
|
)
|
|
|
|
include(${CFG_LXQT_USE_FILE})
|
|
|
|
|
|
#************************************************
|
|
# Create installable build infrastructure
|
|
#************************************************
|
|
set(CFG_LXQT_INCLUDE_DIR "${LXQT_INSTALL_INCLUDE_DIR}")
|
|
set(CFG_LXQT_LIBRARY ${LXQT_LIBRARY_NAME})
|
|
set(CFG_LXQT_USE_FILE "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/${LXQT_LIBRARY_NAME}_use.cmake")
|
|
set(CFG_LXQT_TARGETS_FILE "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/${LXQT_LIBRARY_NAME}-targets.cmake")
|
|
set(CFG_LXQT_CMAKE_MODULES_DIR "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/modules")
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqtX-config.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}-config.cmake"
|
|
@ONLY
|
|
)
|
|
|
|
# use gcc visibility feature to decrease unnecessary exported symbols
|
|
if (CMAKE_COMPILER_IS_GNUCXX)
|
|
# set visibility to hidden to hide symbols, unlesss they're exported
|
|
# manually in the code
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -Wl,-no-undefined -Wall")
|
|
endif()
|
|
add_definitions(-DCOMPILE_LIBLXQT)
|
|
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/lxqt_use.cmake.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}_use.cmake
|
|
@ONLY
|
|
)
|
|
|
|
install(FILES
|
|
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}-config.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/install/${LXQT_LIBRARY_NAME}_use.cmake
|
|
DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}
|
|
COMPONENT Devel
|
|
)
|
|
|
|
install(EXPORT
|
|
${LXQT_LIBRARY_NAME}-targets
|
|
DESTINATION ${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}
|
|
COMPONENT Devel
|
|
)
|
|
|
|
file(GLOB toInstallModules
|
|
"${PROJECT_SOURCE_DIR}/cmake/modules/*.cmake"
|
|
"${PROJECT_SOURCE_DIR}/cmake/modules/*.in"
|
|
)
|
|
|
|
install(
|
|
FILES ${toInstallModules}
|
|
DESTINATION "${LXQT_INSTALL_CMAKE_DIR}/${LXQT_LIBRARY_NAME}/modules"
|
|
COMPONENT Devel
|
|
)
|
|
|
|
|
|
include(translatorsinfo/CMakeLists.txt)
|
|
get_translatorsinfo_qrc(translatorsinfo_qrc)
|
|
qt5_add_resources(QRC_CXX_SOURCES ${translatorsinfo_qrc})
|
|
|
|
add_library(${LXQT_LIBRARY_NAME}
|
|
SHARED ${PUB_HDRS}
|
|
${PRIV_HDRS}
|
|
${SRCS}
|
|
${dbus_generated}
|
|
${UIS} ${MOCS}
|
|
${QM_FILES}
|
|
${QRC_CXX_SOURCES}
|
|
|
|
)
|
|
|
|
target_link_libraries(${LXQT_LIBRARY_NAME}
|
|
KF5::WindowSystem
|
|
Qt5::Widgets
|
|
Qt5::DBus
|
|
Qt5::X11Extras
|
|
${QTXDG_LIBRARIES}
|
|
)
|
|
|
|
set_target_properties(${LXQT_LIBRARY_NAME} PROPERTIES
|
|
VERSION ${LXQT_VERSION}
|
|
SOVERSION ${LXQT_MAJOR_VERSION}
|
|
)
|
|
|
|
install(TARGETS
|
|
${LXQT_LIBRARY_NAME}
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
EXPORT ${LXQT_LIBRARY_NAME}-targets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}
|
|
)
|
|
|
|
|
|
export(TARGETS ${LXQT_LIBRARY_NAME} ${QTXDG_TARGET} FILE ${LXQT_INTREE_TARGETS_FILE})
|
|
|
|
install(FILES ${PUB_HDRS} DESTINATION "${LXQT_INSTALL_INCLUDE_DIR}/LXQt")
|
|
install(FILES ${INTREE_PORTABLE_HEADERS} DESTINATION "${LXQT_INSTALL_INCLUDE_DIR}/LXQt")
|
|
|
|
#************************************************
|
|
# Create pkgconfig file
|
|
#************************************************
|
|
lxqt_create_pkgconfig_file(${LXQT_LIBRARY_NAME}
|
|
${LXQT_PKG_CONFIG_DESCRIPTION}
|
|
${LXQT_PKG_CONFIG_REQUIRES}
|
|
${LXQT_LIBRARY_NAME}
|
|
${LXQT_VERSION}
|
|
)
|
|
#************************************************
|
|
|
|
|
|
# building tarball with CPack -------------------------------------------------
|
|
include(InstallRequiredSystemLibraries)
|
|
set(CPACK_PACKAGE_VERSION_MAJOR ${LXQT_MAJOR_VERSION})
|
|
set(CPACK_PACKAGE_VERSION_MINOR ${LXQT_MINOR_VERSION})
|
|
set(CPACK_PACKAGE_VERSION_PATCH ${LXQT_PATCH_VERSION})
|
|
set(CPACK_GENERATOR TBZ2)
|
|
set(CPACK_SOURCE_GENERATOR TBZ2)
|
|
set(CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp)
|
|
include(CPack)
|
|
|