diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c5e5b4..05bb06b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,11 @@ project(Applauncherd) cmake_minimum_required(VERSION 2.6) cmake_policy(VERSION 2.6) +include(FeatureSummary) +include(GNUInstallDirs) + +option(INSTALL_SYSTEMD_UNITS "Install systemd unit files" ON) + # # NOTE: For verbose build use VERBOSE=1 # @@ -47,12 +52,15 @@ add_subdirectory(src) # Target for documentation (make doc) find_program(Doxygen NAMES doxygen) if (EXISTS ${Doxygen}) - add_custom_target(doc COMMAND cd doc && ${Doxygen} doxygen-impldoc.conf COMMAND cd doc && ${Doxygen} doxygen-userdoc.conf COMMAND cd doc && ${Doxygen} doxygen-mdeclarativecache.conf) + add_custom_target(doc + COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/doc && ${Doxygen} doxygen-impldoc.conf + COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/doc && ${Doxygen} doxygen-userdoc.conf + COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/doc && ${Doxygen} doxygen-mdeclarativecache.conf) else (EXISTS ${Doxygen}) message(STATUS "Doxygen not found: you're not able to build documentation.") endif (EXISTS ${Doxygen}) # Install html documentation -install(DIRECTORY doc/implementation-documentation DESTINATION /usr/share/doc/applauncherd OPTIONAL) -install(DIRECTORY doc/user-documentation DESTINATION /usr/share/doc/applauncherd OPTIONAL) -install(DIRECTORY doc/mdeclarativecache-documentation DESTINATION /usr/share/doc/applauncherd OPTIONAL) +install(DIRECTORY doc/implementation-documentation DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} OPTIONAL) +install(DIRECTORY doc/user-documentation DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} OPTIONAL) +install(DIRECTORY doc/mdeclarativecache-documentation DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR} OPTIONAL) diff --git a/src/booster-generic/CMakeLists.txt b/src/booster-generic/CMakeLists.txt index 2b0672b..c26b867 100644 --- a/src/booster-generic/CMakeLists.txt +++ b/src/booster-generic/CMakeLists.txt @@ -17,5 +17,8 @@ add_executable(booster-generic ${SRC} ${MOC_SRC}) add_dependencies(booster-generic applauncherd) # Add install rule -install(TARGETS booster-generic DESTINATION /usr/libexec/mapplauncherd/) -install(FILES booster-generic.service DESTINATION /usr/lib/systemd/user/) +install(TARGETS booster-generic DESTINATION ${CMAKE_INSTALL_FULL_LIBEXECDIR}/mapplauncherd/) + +if(INSTALL_SYSTEMD_UNITS) + install(FILES booster-generic.service DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/systemd/user/) +endif() diff --git a/src/invoker/CMakeLists.txt b/src/invoker/CMakeLists.txt index 6531ca0..78be60c 100644 --- a/src/invoker/CMakeLists.txt +++ b/src/invoker/CMakeLists.txt @@ -19,6 +19,4 @@ add_executable(invoker ${SRC}) target_link_libraries(invoker ${DBUS_LDFLAGS}) # Add install rule -install(PROGRAMS invoker DESTINATION /usr/bin/) - - +install(TARGETS invoker DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}) diff --git a/src/launcherlib/CMakeLists.txt b/src/launcherlib/CMakeLists.txt index 2e32d69..5396614 100644 --- a/src/launcherlib/CMakeLists.txt +++ b/src/launcherlib/CMakeLists.txt @@ -2,7 +2,12 @@ include(GNUInstallDirs) set(COMMON ${CMAKE_HOME_DIRECTORY}/src/common) -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${COMMON}) +# Find systemd +find_package(PkgConfig REQUIRED) +pkg_check_modules(SYSTEMD "libsystemd" REQUIRED) + +# Set include dirs +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${SYSTEMD_INCLUDE_DIRS} ${COMMON}) # Hide all symbols except the ones explicitly exported in the code (like main()) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") @@ -16,13 +21,16 @@ set(HEADERS appdata.h booster.h connection.h daemon.h logger.h launcherlib.h # Set libraries to be linked. Shared libraries to be preloaded are not linked in anymore, # but dlopen():ed and listed in src/launcher/preload.h instead. -link_libraries(${LIBDL} "-L/lib -lsystemd -lcap") +link_libraries(${LIBDL} "-L/lib -lcap") # Set executable add_library(applauncherd MODULE ${SRC} ${MOC_SRC}) set_target_properties(applauncherd PROPERTIES VERSION 0.1 SOVERSION 0) +target_link_libraries(applauncherd ${SYSTEMD_LIBRARIES}) + + # Add install rule install(TARGETS applauncherd DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) -install(FILES ${HEADERS} DESTINATION /usr/include/applauncherd +install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/applauncherd PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) diff --git a/src/single-instance/CMakeLists.txt b/src/single-instance/CMakeLists.txt index cc04ba2..fd9be9c 100644 --- a/src/single-instance/CMakeLists.txt +++ b/src/single-instance/CMakeLists.txt @@ -26,4 +26,4 @@ link_libraries(${DBUS_LDFLAGS}) add_executable(single-instance ${SRC}) # Add install rule -install(PROGRAMS single-instance DESTINATION /usr/bin/) +install(TARGETS single-instance DESTINATION ${CMAKE_INSTALL_FULL_BINDIR})