Ensure desktop file is found when using quasselclient
[quassel.git] / CMakeLists.txt
index 6a2cf83..4384069 100644 (file)
@@ -2,18 +2,20 @@
 #
 # You may pass various options to cmake:
 # -DWANT_(CORE|QTCLIENT|MONO)=(ON|OFF)
 #
 # You may pass various options to cmake:
 # -DWANT_(CORE|QTCLIENT|MONO)=(ON|OFF)
-#                     : select binaries to build
-# -DWITH_OPENSSL=OFF  : Disable OpenSSL support
-# -DWITH_DBUS=OFF     : Disable D-Bus support (dbus notifications)
-# -DWITH_WEBKIT=OFF   : Disable WebKit support (link previews)
-# -DWITH_PHONON=OFF   : Disable Phonon support (audio notifications)
-# -DWITH_KDE=ON       : Enable KDE4 support
+#                        : select binaries to build
+# -DWITH_OPENSSL=OFF     : Disable OpenSSL support
+# -DWITH_DBUS=OFF        : Disable D-Bus support (dbus notifications)
+# -DWITH_WEBKIT=OFF      : Disable WebKit support (link previews)
+# -DWITH_PHONON=OFF      : Disable Phonon support (audio notifications)
+# -DWITH_LIBINDICATE=OFF : Disable libindicate support (Ayatana notifications)
+# -DWITH_KDE=ON          : Enable KDE4 support
+# -DWITH_OXYGEN=(ON|OFF) : Whether to install Oxygen icons (default: yes, unless KDE > 4.3.0 is present and enabled)
 #
 #
-# -DEMBED_DATA=ON     : Embed all data files in icons the binary, rather than installing them separately
+# -DEMBED_DATA=ON        : Embed all data files in icons the binary, rather than installing them separately
 #
 #
-# -DQT=/path/to/qt    : Choose a Qt4 installation to use instead of the system Qt4
-# -DSTATIC=ON         : Enable static building of Quassel. Use with care.
-# -DDEPLOY=ON         : Mac OS X only. Use only for creating Quassel Packages!
+# -DQT=/path/to/qt       : Choose a Qt4 installation to use instead of the system Qt4
+# -DSTATIC=ON            : Enable static building of Quassel. Use with care.
+# -DDEPLOY=ON            : Mac OS X only. Use only for creating Quassel Packages!
 #
 # NOTE: You should remove CMakeCache.txt if you plan to change any of these values!
 
 #
 # NOTE: You should remove CMakeCache.txt if you plan to change any of these values!
 
@@ -39,12 +41,13 @@ option(WITH_OPENSSL  "Enable OpenSSL support if present on the system"      ON)
 option(WITH_DBUS     "Enable D-Bus support if present on the system"   ON)
 option(WITH_WEBKIT   "Enable WebKit support (for link previews)"       ON)
 option(WITH_PHONON   "Enable Phonon support (for audio notifications)" ON)
 option(WITH_DBUS     "Enable D-Bus support if present on the system"   ON)
 option(WITH_WEBKIT   "Enable WebKit support (for link previews)"       ON)
 option(WITH_PHONON   "Enable Phonon support (for audio notifications)" ON)
+option(WITH_LIBINDICATE "Enable Ayatana notification support"           ON)
 option(WITH_KDE      "Enable KDE4 integration"                         OFF)
 
 option(WITH_KDE      "Enable KDE4 integration"                         OFF)
 
-# We use icon paths from KDE 4.3 trunk, which are partially invalid on older and possibly
+# We use icon paths from KDE 4.3.x, which are partially invalid on older and possibly
 # even on newer KDE versions. Do not disable this unless you are sure that your Quassel will
 # run on a matching KDE version only.
 # even on newer KDE versions. Do not disable this unless you are sure that your Quassel will
 # run on a matching KDE version only.
-option(WITH_OXYGEN   "Install Oxygen icons. Heavily recommended unless you use KDE 4.3" ON)
+set(WITH_OXYGEN AUTO CACHE STRING "Install Oxygen icons (default is \"AUTO\" to install when KDE 4.3 or later is present")
 
 option(STATIC        "Enable static building (might not be portable)" OFF)
 
 
 option(STATIC        "Enable static building (might not be portable)" OFF)
 
@@ -62,7 +65,6 @@ endif(STATIC OR WIN32)
 option(EMBED_DATA    "Embed all data files in the binary (rather than installing them separately)"   ${EMBED_DEFAULT})
 
 set(QT "" CACHE STRING "Path to a Qt installation to use instead of the system Qt (e.g. for static builds)")
 option(EMBED_DATA    "Embed all data files in the binary (rather than installing them separately)"   ${EMBED_DEFAULT})
 
 set(QT "" CACHE STRING "Path to a Qt installation to use instead of the system Qt (e.g. for static builds)")
-set(LINGUAS "" CACHE STRING "Comma-separated list of locales specifying languages that should be compiled")
 
 # Some settings imply others
 if(STATIC)
 
 # Some settings imply others
 if(STATIC)
@@ -103,13 +105,26 @@ endif(NOT CMAKE_BUILD_TYPE)
 # Enable various flags on gcc
 if(CMAKE_COMPILER_IS_GNUCXX)
   # Let's just hope that all gccs support these options and skip the tests...
 # Enable various flags on gcc
 if(CMAKE_COMPILER_IS_GNUCXX)
   # Let's just hope that all gccs support these options and skip the tests...
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ansi -Wall -Wextra -Wnon-virtual-dtor")
-  set(CMAKE_CXX_FLAGS_RELWITHDEBUGINFO "-O2")
-  set(CMAKE_CXX_FLAGS_DEBUG "-g -fno-reorder-blocks -fno-schedule-insns -fno-inline")
-  set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3")
+  # -fno-strict-aliasing is needed apparently for Qt < 4.6
+  set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} -ansi -Wall -Wextra -Wnon-virtual-dtor -fno-strict-aliasing")
+  set(CMAKE_CXX_FLAGS_RELEASE          "-O2 ${CMAKE_CXX_FLAGS}")
+  set(CMAKE_CXX_FLAGS_RELWITHDEBUGINFO "-g -O2 ${CMAKE_CXX_FLAGS}")
+  set(CMAKE_CXX_FLAGS_DEBUG            "-g -ggdb -fno-reorder-blocks -fno-schedule-insns -fno-inline ${CMAKE_CXX_FLAGS}")
+  set(CMAKE_CXX_FLAGS_DEBUGFULL        "-g3 ${CMAKE_CXX_FLAGS_DEBUG}")
 endif(CMAKE_COMPILER_IS_GNUCXX)
 
 endif(CMAKE_COMPILER_IS_GNUCXX)
 
-set(QT_MIN_VERSION "4.4.0")
+string(TOUPPER ${CMAKE_BUILD_TYPE} upper_build_type)
+if(upper_build_type STREQUAL "RELEASE" OR upper_build_type STREQUAL "RELWITHDEBUGINFO")
+  add_definitions(-DNDEBUG -DQT_NO_DEBUG)
+else(upper_build_type STREQUAL "RELEASE" OR upper_build_type STREQUAL "RELWITHDEBUGINFO")
+  set(DEBUG 1)
+endif(upper_build_type STREQUAL "RELEASE" OR upper_build_type STREQUAL "RELWITHDEBUGINFO")
+
+if(WANT_MONO OR WANT_QTCLIENT)
+  set(QT_MIN_VERSION "4.5.0")
+else(WANT_MONO OR WANT_QTCLIENT)
+  set(QT_MIN_VERSION "4.4.0")
+endif(WANT_MONO OR WANT_QTCLIENT)
 
 if(APPLE AND DEPLOY)
   set(CMAKE_OSX_ARCHITECTURES "i386;ppc")
 
 if(APPLE AND DEPLOY)
   set(CMAKE_OSX_ARCHITECTURES "i386;ppc")
@@ -143,7 +158,7 @@ include_directories(${QT_INCLUDES})
 if(WITH_OPENSSL)
   find_package(OpenSSL)
 else(WITH_OPENSSL)
 if(WITH_OPENSSL)
   find_package(OpenSSL)
 else(WITH_OPENSSL)
-  message(STATUS "Disabling OpenSSL support")
+  message(STATUS "Not enabling OpenSSL support")
 endif(WITH_OPENSSL)
 
 if(OPENSSL_FOUND)
 endif(WITH_OPENSSL)
 
 if(OPENSSL_FOUND)
@@ -171,7 +186,7 @@ if(WITH_DBUS)
     message(STATUS "QtDBus not found, disabling D-Bus support")
   endif(QT_QTDBUS_FOUND)
 else(WITH_DBUS)
     message(STATUS "QtDBus not found, disabling D-Bus support")
   endif(QT_QTDBUS_FOUND)
 else(WITH_DBUS)
-  message(STATUS "Disabling D-Bus support")
+  message(STATUS "Not enabling D-Bus support")
 endif(WITH_DBUS)
 
 # Setup QtWebKit support
 endif(WITH_DBUS)
 
 # Setup QtWebKit support
@@ -186,7 +201,7 @@ if(WITH_WEBKIT)
     message(STATUS "QtWebKit not found, disabling WebKit support")
   endif(QT_QTWEBKIT_FOUND)
 else(WITH_WEBKIT)
     message(STATUS "QtWebKit not found, disabling WebKit support")
   endif(QT_QTWEBKIT_FOUND)
 else(WITH_WEBKIT)
-  message(STATUS "Disabling WebKit support")
+  message(STATUS "Not enabling WebKit support")
 endif(WITH_WEBKIT)
 
 # Setup KDE4 support
 endif(WITH_WEBKIT)
 
 # Setup KDE4 support
@@ -198,14 +213,14 @@ if(WITH_KDE)
     add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
     set(HAVE_KDE 1)
     set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_KDE)
     add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
     set(HAVE_KDE 1)
     set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_KDE)
-    set(QUASSEL_KDE_LIBRARIES ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY} knotifyconfig)
+    set(QUASSEL_KDE_LIBRARIES ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY} ${KDE4_SOLID_LIBS} knotifyconfig)
     # We always use external icons for KDE4 support, since we use its iconloader rather than our own
     set(EMBED_DATA OFF)
   else(KDE4_FOUND)
     message(STATUS "KDE4 not found, disabling KDE integration")
   endif(KDE4_FOUND)
 else(WITH_KDE)
     # We always use external icons for KDE4 support, since we use its iconloader rather than our own
     set(EMBED_DATA OFF)
   else(KDE4_FOUND)
     message(STATUS "KDE4 not found, disabling KDE integration")
   endif(KDE4_FOUND)
 else(WITH_KDE)
-  message(STATUS "Disabling KDE4 integration")
+  message(STATUS "Not enabling KDE4 integration")
 endif(WITH_KDE)
 
 # Setup Phonon support - we only need this if we don't have or want KDE4
 endif(WITH_KDE)
 
 # Setup Phonon support - we only need this if we don't have or want KDE4
@@ -221,10 +236,26 @@ if(NOT HAVE_KDE)
       message(STATUS "Phonon not found, disabling audio notifications")
     endif(PHONON_FOUND)
   else(WITH_PHONON)
       message(STATUS "Phonon not found, disabling audio notifications")
     endif(PHONON_FOUND)
   else(WITH_PHONON)
-    message(STATUS "Disabling Phonon support")
+    message(STATUS "Not enabling Phonon support")
   endif(WITH_PHONON)
 endif(NOT HAVE_KDE)
 
   endif(WITH_PHONON)
 endif(NOT HAVE_KDE)
 
+# Setup libindicate-qt support
+if(WITH_LIBINDICATE)
+  find_package(PkgConfig QUIET)
+  if(PKG_CONFIG_FOUND)
+    pkg_check_modules(INDICATEQT indicate-qt>=0.2.1)
+    if(INDICATEQT_FOUND)
+      message(STATUS "Enabling Ayatana notification support")
+      add_definitions(-DHAVE_INDICATEQT)
+    else(INDICATEQT_FOUND)
+      message(STATUS "Disabling Ayatana notification support")
+    endif(INDICATEQT_FOUND)
+  endif(PKG_CONFIG_FOUND)
+else(WITH_LIBINDICATE)
+  message(STATUS "Not enabling Ayatana notification support")
+endif(WITH_LIBINDICATE)
+
 # Now set up install locations; those are set by KDE if integration is enabled
 if(NOT HAVE_KDE)
   if(WIN32)
 # Now set up install locations; those are set by KDE if integration is enabled
 if(NOT HAVE_KDE)
   if(WIN32)
@@ -240,6 +271,12 @@ if(NOT HAVE_KDE)
   endif(WIN32)
 endif(NOT HAVE_KDE)
 
   endif(WIN32)
 endif(NOT HAVE_KDE)
 
+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)
 # 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)
@@ -264,10 +301,9 @@ if(WIN32)
   endif(HAVE_SSL)
 endif(WIN32)
 
   endif(HAVE_SSL)
 endif(WIN32)
 
-if(STATIC)
-  link_directories(${QT_PLUGINS_DIR}/imageformats)
-  link_libraries(qjpeg qgif)
-endif(STATIC)
+if(INDICATEQT_FOUND)
+  add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR})
+endif(INDICATEQT_FOUND)
 
 # We need to create a version.gen
 # For this, we create our genversion binary and make sure it is run every time.
 
 # We need to create a version.gen
 # For this, we create our genversion binary and make sure it is run every time.
@@ -288,5 +324,5 @@ set(CLIENT_DEPS )
 add_subdirectory(data)
 add_subdirectory(icons)
 add_subdirectory(pics)
 add_subdirectory(data)
 add_subdirectory(icons)
 add_subdirectory(pics)
-add_subdirectory(i18n)
+add_subdirectory(po)
 add_subdirectory(src)
 add_subdirectory(src)