From d68e9d67200abc51123b357bcdbbc816d4a70791 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 2 Jan 2015 22:08:12 +0100 Subject: [PATCH] Prepare build system for KDE Frameworks support Besides setting everything up for finding frameworks, this commit also changes the handling of install paths. We now support the standard CMake variables of the form CMAKE_INSTALL__DIR, which can be overridden on the command line. If KDE integration is enabled, the default paths set by KDE (4 or frameworks) will be used. Some additional cleanups were done in passing, too. --- CMakeLists.txt | 218 ++++++++++++++++++++------------- cmake/QuasselInstallDirs.cmake | 65 ++++++++++ data/CMakeLists.txt | 12 +- icons/CMakeLists.txt | 8 +- po/CMakeLists.txt | 2 +- src/CMakeLists.txt | 6 +- 6 files changed, 215 insertions(+), 96 deletions(-) create mode 100644 cmake/QuasselInstallDirs.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index fc226659..e2d5f48b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ # General setup ##################################################################### -cmake_minimum_required(VERSION 2.8.9) +cmake_minimum_required(VERSION 2.8.9) # You'll need at least 2.8.12 for KDE Frameworks integration project(QuasselIRC) # Versions @@ -61,9 +61,17 @@ add_feature_info(WANT_CORE WANT_CORE "Build the core (server) binary") add_feature_info(WANT_QTCLIENT WANT_QTCLIENT "Build the client-only binary (requires a core to connect to)") add_feature_info(WANT_MONO WANT_MONO "Build the monolithic (all-in-one) binary") -# Whether to enable KDE integration (pulls in kdelibs and friends as a dependency); requires Qt4 for now -cmake_dependent_option(WITH_KDE "KDE4 integration" OFF "USE_QT4" OFF) -add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration") +# Whether to enable KDE integration (work in progress for Qt5 / KDE Frameworks) +# Note that when building with Qt5, WITH_KDE enables integration with higher-tier KDE frameworks that +# require runtime support. We still optionally make use of certain Tier 1 frameworks even if WITH_KDE +# is disabled. +if (USE_QT4) + option(WITH_KDE "KDE4 integration" OFF) + add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration") +else() + option(WITH_KDE "Integration with the KDE Frameworks runtime environment") + add_feature_info(WITH_KDE WITH_KDE "Integrate with the KDE Frameworks runtime environment") +endif() cmake_dependent_option(WITH_OXYGEN "Install Oxygen icon set (usually shipped with KDE)" ON "NOT WITH_KDE" OFF) if (NOT WITH_KDE) @@ -144,6 +152,7 @@ else() endif() endif() + # Find package dependencies # # Note that you can forcefully disable optional packages @@ -224,6 +233,32 @@ if (USE_QT5) endif() add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" Qt5WebKitWidgets_FOUND "Support showing previews for URLs in chat") + # KDE Frameworks + ################ + + if (WITH_KDE) + set(ecm_find_type "REQUIRED") + else() + # Even with KDE integration disabled, we optionally use tier1 frameworks if we find them + set(ecm_find_type "RECOMMENDED") + endif() + + # extra-cmake-modules + find_package(ECM NO_MODULE QUIET) + set_package_properties(ECM PROPERTIES TYPE ${ecm_find_type} + URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules" + DESCRIPTION "extra modules for CMake, maintained by the KDE project" + PURPOSE "Required to find KDE Frameworks components" + ) + + if (ECM_FOUND) + list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + endif() + + if (WITH_KDE) + + endif() + endif(BUILD_GUI) if (BUILD_CORE) find_package(Qt5Script QUIET) @@ -324,6 +359,7 @@ else(USE_QT5) ) endif(BUILD_GUI) + if (BUILD_CORE) find_package(QCA2 QUIET) @@ -366,31 +402,67 @@ if (NOT WIN32) endif() -# Various checks +# Additional compile settings ##################################################################### -if (NOT ZLIB_FOUND) - message(STATUS "zlib NOT found, using bundled miniz for compression") - if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) - message(STATUS "WARNING: This may be slow on 32 bit systems!") - endif() +# This sets -fPIC and friends if required by the installed Qt5 library +if (USE_QT5 AND Qt5_POSITION_INDEPENDENT_CODE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() + +# Needed to compile with mingw without kde +if (MINGW AND NOT KDE4_FOUND) + add_definitions(-D_WIN32_WINNT=0x0500) + message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW") + # workaround for bug in mingw gcc 4.0 + add_definitions(-U__STRICT_ANSI__) endif() + +# Setup KDE / KDE Frameworks +##################################################################### + +# We want to do this up here, so we have the necessary variables and defines set before +# compiling anything + if (KDE4_FOUND) - # We always use external icons for KDE4 support, since we use its iconloader rather than our own + # We always use external icons for KDE4 support, since we use its iconloader rather than Qt's set(EMBED_DATA OFF) # Better have the compile flags global, even for the core, to avoid problems with linking the mono client add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS}) + set(HAVE_KDE4 TRUE) +endif() + +if (USE_QT5 AND WITH_KDE) + # If KDE Frameworks are present, they're most probably providing Qt5 integration including icon loading + set(EMBED_DATA OFF) + + include(KDEInstallDirs) + include(KDECompilerSettings) + include(KDECMakeSettings) + + add_definitions(-DHAVE_KF5) + set(HAVE_KF5 TRUE) +endif() + +# This needs to come after setting up KDE integration, so we can use KDE-specific paths +include(QuasselInstallDirs) + +# Various config-dependent checks and settings +##################################################################### + +if (NOT ZLIB_FOUND) + message(STATUS "zlib NOT found, using bundled miniz for compression") + if (${CMAKE_SIZEOF_VOID_P} EQUAL 4) + message(STATUS "WARNING: This may be slow on 32 bit systems!") + endif() endif() # Check for SSL support in Qt # As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile # a small test program checking the defines. This works for both Qt4 and Qt5. cmake_push_check_state(RESET) -if (Qt5_POSITION_INDEPENDENT_CODE) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) -endif() set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS}) check_cxx_source_compiles(" #include \"qglobal.h\" @@ -414,96 +486,77 @@ endif() add_feature_info("Qt Linguist Tools" QT_LCONVERT_EXECUTABLE "Translation support for Quassel") -# Various settings -################## +if (EMBED_DATA) + message(STATUS "Embedding data files into the binary") +else() + message(STATUS "Installing data files separately") +endif() -# needed to compile with mingw without kde -if (MINGW AND NOT KDE4_FOUND) - add_definitions(-D_WIN32_WINNT=0x0500) - message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW") -# workaround for bug in mingw gcc 4.0 - add_definitions(-U__STRICT_ANSI__) +if (INDICATEQT_FOUND) + add_definitions(-DXDG_APPS_INSTALL_DIR=${CMAKE_INSTALL_APPDIR}) endif() -# Now set up install locations; those are set by KDE if integration is enabled -if(NOT KDE4_FOUND) - if(WIN32) - set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Install path for binaries") - set(DATA_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/apps CACHE FILEPATH "Install path for data files") - set(ICON_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/icons CACHE FILEPATH "Global icon install path") - set(XDG_APPS_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/applications CACHE FILEPATH "Install path for .desktop files") - else(WIN32) - set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin CACHE FILEPATH "Install path for binaries") - set(DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/apps CACHE FILEPATH "Install path for data files") - set(ICON_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/icons CACHE FILEPATH "Global icon install path") - set(XDG_APPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/applications CACHE FILEPATH "Install path for .desktop files") - endif(WIN32) +if (NOT WIN32) + check_function_exists(umask HAVE_UMASK) + if(HAVE_UMASK) + add_definitions(-DHAVE_UMASK) + endif(HAVE_UMASK) endif() -if(EMBED_DATA) - message(STATUS "Embedding data files into the binary") -else(EMBED_DATA) - message(STATUS "Installing data files separately") -endif(EMBED_DATA) -# RPATH needs to be set correctly -# Do this down here, since otherwise KDE wants to handle it itself, and fails -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) -set(CMAKE_BUILD_WITH_INSTALL_RPATH 1) +# Windows-specific stuff +##################################################################### + +if (WIN32) + link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/ + if (MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt") + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt") + set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") + link_libraries(Version dwmapi shlwapi) + if (USE_QT5) + set(QT_QTMAIN_LIBRARY Qt5::WinMain) + endif() + endif() + if(HAVE_SSL AND STATIC) + find_package(OpenSSL REQUIRED) + link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES}) + endif() +endif() + + +# Static builds (very much non-portable, so don't use -DSTATIC +# unless you know what you do!) +##################################################################### -# Set global buildflags -# This is very much non-portable, so don't use -DSTATIC until you know what -# you do. if(STATIC AND CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}") - link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs - if(HAVE_SSL) - set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds - endif(HAVE_SSL) -endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX) - -if(WIN32) - link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/ - if(MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX") - set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt") - set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") - link_libraries(Version dwmapi shlwapi) - if(USE_QT5) - set(QT_QTMAIN_LIBRARY Qt5::WinMain) - endif(USE_QT5) - endif(MSVC) - if(HAVE_SSL AND STATIC) - find_package(OpenSSL REQUIRED) - link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES}) - endif(HAVE_SSL AND STATIC) -endif(WIN32) - -if(INDICATEQT_FOUND) - add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR}) + set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}") + link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs + if (HAVE_SSL) + set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds + endif() endif() -if(NOT WIN32) - check_function_exists(umask HAVE_UMASK) - if(HAVE_UMASK) - add_definitions(-DHAVE_UMASK) - endif(HAVE_UMASK) -endif(NOT WIN32) # Generate version information from Git +##################################################################### + include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC GIT_HEAD) git_describe(GIT_DESCRIBE --long) # Sanitize things if we're not in a Git repo -if(NOT GIT_HEAD OR NOT GIT_DESCRIBE) +if (NOT GIT_HEAD OR NOT GIT_DESCRIBE) set(GIT_HEAD "") set(GIT_DESCRIBE "") endif() configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY) +# Prepare the build +##################################################################### + # These variables will be added to the main targets (CORE, QTCLIENT, MONO) set(COMMON_DEPS ${RC_WIN32}) set(CORE_DEPS ) @@ -515,6 +568,7 @@ add_subdirectory(icons) add_subdirectory(pics) add_subdirectory(po) + # Set up and display feature summary ##################################################################### @@ -525,7 +579,7 @@ feature_summary(WHAT ALL # Finally, compile the sources # We want this after displaying the feature summary to avoid ugly -# CMake backtraces in case a required Qt5 modules misses +# CMake backtraces in case a required Qt5 module is missing ##################################################################### add_subdirectory(src) diff --git a/cmake/QuasselInstallDirs.cmake b/cmake/QuasselInstallDirs.cmake new file mode 100644 index 00000000..b6786434 --- /dev/null +++ b/cmake/QuasselInstallDirs.cmake @@ -0,0 +1,65 @@ +# This file sets up install locations for Quassel +# +# (C) 2015 by the Quassel Project +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +# Setup install locations +##################################################################### + +# We support the CMake standard variables (CMAKE_INSTALL__DIR), +# which can be overridden on the command line. If KDE integration is enabled, +# we make use of its settings. + +if (NOT WITH_KDE) + if (WIN32) + # On Windows, we have to guess good paths + # We must check if the variables are already defined on the command line + if (NOT DEFINED CMAKE_INSTALL_BINDIR) + set(CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Install path for binaries") + endif() + if (NOT DEFINED CMAKE_INSTALL_DATADIR) + set(CMAKE_INSTALL_DATADIR "$ENV{APPDATA}/quassel-irc.org/share/apps" CACHE PATH "Install path for data files") + endif() + if (NOT DEFINED CMAKE_INSTALL_ICONDIR) + set(CMAKE_INSTALL_ICONDIR "$ENV{APPDATA}/quassel-irc.org/share/icons" CACHE PATH "Install path for icons") + endif() + if (NOT DEFINED CMAKE_INSTALL_APPDIR) + set(CMAKE_INSTALL_APPDIR "$ENV{APPDATA}/quassel-irc.org/share/applications" CACHE PATH "Install path for .desktop files") + endif() + else() + # This sets the standard variables; however it doesn't know about icons and apps + include(GNUInstallDirs) + + # Special treatment for paths relative to DATAROOTDIR, as found in GNUInstallDirs + if (NOT CMAKE_INSTALL_ICONDIR) + set(CMAKE_INSTALL_ICONDIR "" CACHE PATH "Install path for icons") + set(CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_DATAROOTDIR}/icons") + endif() + if (NOT CMAKE_INSTALL_APPDIR) + set(CMAKE_INSTALL_APPDIR "" CACHE PATH "Install path for .desktop files") + set(CMAKE_INSTALL_APPDIR "${CMAKE_INSTALL_DATAROOTDIR}/applications") + endif() + endif() +else() + if (HAVE_KDE4) + # FindKDE4Internal.cmake sets its own set of variables, however with deprecated names + if (NOT DEFINED CMAKE_INSTALL_BINDIR) + set(CMAKE_INSTALL_BINDIR "${BIN_INSTALL_DIR}" CACHE PATH "Install path for binaries") + endif() + if (NOT DEFINED CMAKE_INSTALL_DATADIR) + set(CMAKE_INSTALL_DATADIR "${DATA_INSTALL_DIR}" CACHE PATH "Install path for data files") + endif() + if (NOT DEFINED CMAKE_INSTALL_ICONDIR) + set(CMAKE_INSTALL_ICONDIR "${ICON_INSTALL_DIR}" CACHE PATH "Install path for icons") + endif() + if (NOT DEFINED CMAKE_INSTALL_APPDIR) + set(CMAKE_INSTALL_APPDIR "${XDG_APPS_INSTALL_DIR}" CACHE PATH "Install path for .desktop files") + endif() + endif() + + # KF5 does the correct thing, so we don't need to do anything + # We have already included KDEInstallDirs at this point. +endif() diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index e9f4a066..04b322b3 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,26 +1,26 @@ if (BUILD_GUI) if (KDE4_FOUND OR (UNIX AND NOT APPLE)) if (WANT_QTCLIENT) - install(FILES quasselclient.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) + install(FILES quasselclient.desktop DESTINATION ${CMAKE_INSTALL_APPDIR}) endif() if (WANT_MONO) - install(FILES quassel.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) + install(FILES quassel.desktop DESTINATION ${CMAKE_INSTALL_APPDIR}) endif() if (KDE4_FOUND) - install(FILES quassel.notifyrc DESTINATION ${DATA_INSTALL_DIR}/quassel) + install(FILES quassel.notifyrc DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel) endif() endif() if (EMBED_DATA) set(CLIENT_RCS ${CLIENT_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/data.qrc PARENT_SCOPE) else() - install(FILES networks.ini DESTINATION ${DATA_INSTALL_DIR}/quassel) - install(DIRECTORY stylesheets DESTINATION ${DATA_INSTALL_DIR}/quassel) + install(FILES networks.ini DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel) + install(DIRECTORY stylesheets DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel) endif() if (NOT WIN32) - install(DIRECTORY scripts DESTINATION ${DATA_INSTALL_DIR}/quassel USE_SOURCE_PERMISSIONS) + install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel USE_SOURCE_PERMISSIONS) endif() endif() diff --git a/icons/CMakeLists.txt b/icons/CMakeLists.txt index e7ed673a..1a253537 100644 --- a/icons/CMakeLists.txt +++ b/icons/CMakeLists.txt @@ -1,6 +1,6 @@ # Install icons # -# We put the bundled oxygen icon theme in DATA_INSTALL_DIR rather than ICON_INSTALL_DIR, +# We put the bundled oxygen icon theme in DATADIR rather than ICONDIR, # in order to avoid conflicts. As we add this directory to XDG_DATA_DIRS at runtime, # the bundled theme will be found by Qt only if there is no oxygen theme installed # in system directories. @@ -18,10 +18,10 @@ if (WANT_MONO OR WANT_QTCLIENT) set(ICON_RCS ${ICON_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/oxygen.qrc) endif() else() - install(DIRECTORY hicolor DESTINATION ${ICON_INSTALL_DIR}) + install(DIRECTORY hicolor DESTINATION ${CMAKE_INSTALL_ICONDIR}) if (WITH_OXYGEN) message(STATUS "Installing bundled Oxygen icons") - install(DIRECTORY oxygen DESTINATION ${DATA_INSTALL_DIR}/quassel/icons) + install(DIRECTORY oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons) endif() endif() @@ -35,7 +35,7 @@ endif() # Application icon if (HAVE_KDE OR (UNIX AND NOT APPLE)) - install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${ICON_INSTALL_DIR}/hicolor/48x48/apps) + install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${CMAKE_INSTALL_ICONDIR}/hicolor/48x48/apps) if (CMAKE_INSTALL_PREFIX STREQUAL "/usr") install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps) endif() diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index d1df92c7..0616948e 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -64,7 +64,7 @@ set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${qm_files};i18 if(EMBED_DATA) set(COMMON_RCS ${COMMON_RCS} ${resfile} PARENT_SCOPE) else(EMBED_DATA) - install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/translations) + install(FILES ${qm_files} DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/translations) endif(EMBED_DATA) add_custom_target(po DEPENDS ${qm_files}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 59facd84..2e24ea40 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,7 +43,7 @@ if(WANT_CORE) COMPILE_FLAGS "-DBUILD_CORE" OUTPUT_NAME ../quasselcore) target_link_libraries(quasselcore mod_core mod_common ${COMMON_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY}) - install(TARGETS quasselcore RUNTIME DESTINATION ${BIN_INSTALL_DIR}) + install(TARGETS quasselcore RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif(WANT_CORE) if (KDE4_FOUND) @@ -58,7 +58,7 @@ if(WANT_QTCLIENT) COMPILE_FLAGS "-DBUILD_QTUI" OUTPUT_NAME ../quasselclient) target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY}) - install(TARGETS quasselclient RUNTIME DESTINATION ${BIN_INSTALL_DIR}) + install(TARGETS quasselclient RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif(WANT_QTCLIENT) if(WANT_MONO) @@ -69,7 +69,7 @@ if(WANT_MONO) COMPILE_FLAGS "-DBUILD_MONO" OUTPUT_NAME ../quassel) target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY}) - install(TARGETS quassel RUNTIME DESTINATION ${BIN_INSTALL_DIR}) + install(TARGETS quassel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif(WANT_MONO) # Build bundles for MacOSX -- 2.20.1