Revert "Reset the input prior to processing it in order to prevent issues with per...
[quassel.git] / CMakeLists.txt
index dbafc33..4ddaf66 100644 (file)
@@ -2,24 +2,31 @@
 #
 # 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_CRYPT=OFF       : Disable encryption support
+# -DWITH_OXYGEN=(ON|OFF) : Whether to install Oxygen icons (default: yes, unless KDE > 4.3.0 is present and enabled)
+# -DWITH_SYSLOG=OFF      : Disable syslog support
 #
 #
-# -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!
 
 project(QuasselIRC)
 
 #
 # NOTE: You should remove CMakeCache.txt if you plan to change any of these values!
 
 project(QuasselIRC)
 
-cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
+include(CheckIncludeFile)
+
+# cmake 2.6.2 is required for KDE >=4.2 and should be widespread enough now
+cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
 
 if(COMMAND cmake_policy)
    cmake_policy(SET CMP0003 NEW)
 
 if(COMMAND cmake_policy)
    cmake_policy(SET CMP0003 NEW)
@@ -39,12 +46,15 @@ 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)
+option(WITH_CRYPT    "Enable encryption support if present on system"  ON)
+option(WITH_SYSLOG   "Use syslog for storing log data"                 ON)
 
 
-# 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 +72,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)
@@ -79,8 +88,10 @@ endif(WIN32)
 # Define a comma-separated list here
 # e.g. for pgsql, we need -DLINK_EXTRA=pq;crypt
 set(LINK_EXTRA "" CACHE STRING "Semicolon-separated list of libraries to be linked")
 # Define a comma-separated list here
 # e.g. for pgsql, we need -DLINK_EXTRA=pq;crypt
 set(LINK_EXTRA "" CACHE STRING "Semicolon-separated list of libraries to be linked")
-string(REPLACE "," ";" LINK_EXTRA ${LINK_EXTRA})
-link_libraries(${LINK_EXTRA})
+if(LINK_EXTRA)
+  string(REPLACE "," ";" LINK_EXTRA ${LINK_EXTRA})
+  link_libraries(${LINK_EXTRA})
+endif(LINK_EXTRA)
 
 # Build Type
 # We need to make sure it's not empty
 
 # Build Type
 # We need to make sure it's not empty
@@ -101,13 +112,20 @@ 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(APPLE AND DEPLOY)
   set(CMAKE_OSX_ARCHITECTURES "i386;ppc")
 
 if(APPLE AND DEPLOY)
   set(CMAKE_OSX_ARCHITECTURES "i386;ppc")
@@ -116,6 +134,24 @@ if(APPLE AND DEPLOY)
   add_definitions(-DMAC_10_4_SDK)
 endif(APPLE AND DEPLOY)
 
   add_definitions(-DMAC_10_4_SDK)
 endif(APPLE AND DEPLOY)
 
+# Simplify checks
+if(WANT_MONO OR WANT_QTCLIENT)
+  set(BUILD_GUI true)
+endif(WANT_MONO OR WANT_QTCLIENT)
+if(WANT_MONO OR WANT_CORE)
+  set(BUILD_CORE true)
+endif(WANT_MONO OR WANT_CORE)
+
+# Dependencies
+##############
+
+# GUI stuff needs some new features
+if(BUILD_GUI)
+  set(QT_MIN_VERSION "4.6.0")
+else(BUILD_GUI)
+  set(QT_MIN_VERSION "4.4.0")
+endif(BUILD_GUI)
+
 # Execinfo is needed for generating backtraces
 find_package(ExecInfo)
 if(EXECINFO_FOUND)
 # Execinfo is needed for generating backtraces
 find_package(ExecInfo)
 if(EXECINFO_FOUND)
@@ -137,91 +173,175 @@ set(QT_DONT_USE_QTGUI 1)
 include(${QT_USE_FILE})
 include_directories(${QT_INCLUDES})
 
 include(${QT_USE_FILE})
 include_directories(${QT_INCLUDES})
 
+# PkgConfig isn't strictly required.
+# However, some optional deps might not be found if it's not present, so warn!
+find_package(PkgConfig)
+if(NOT PKG_CONFIG_FOUND)
+  message(STATUS "WARNING: PkgConfig not available! Some dependencies for optional features might not be found.")
+  message(STATUS "         Affected features might include encryption support, DBus menus and Ayatana notifications.")
+endif(NOT PKG_CONFIG_FOUND)
+
 # Setup OpenSSL
 # Setup OpenSSL
+# We don't link to or include OpenSSL ourselves, but use exclusively the Qt API.
+# Thus, we simply check if OpenSSL support is present in Qt's config and enable our
+# own SSL stuff in this case. Qt should care for adding what it needs itself.
 if(WITH_OPENSSL)
 if(WITH_OPENSSL)
-  find_package(OpenSSL)
+  if(QT_QCONFIG MATCHES "openssl")
+    message(STATUS "Found OpenSSL support in Qt, enabling SSL")
+    add_definitions(-DHAVE_SSL)
+    set(HAVE_SSL true)
+  else(QT_QCONFIG MATCHES "openssl")
+    message(STATUS "No OpenSSL support found in Qt, disabling SSL")
+    add_definitions(-DQT_NO_OPENSSL)
+  endif(QT_QCONFIG MATCHES "openssl")
 else(WITH_OPENSSL)
 else(WITH_OPENSSL)
-  message(STATUS "Disabling OpenSSL support")
+  message(STATUS "Not enabling OpenSSL support")
 endif(WITH_OPENSSL)
 
 endif(WITH_OPENSSL)
 
-if(OPENSSL_FOUND)
-  if(NOT QT_DEFINITIONS MATCHES "QT_NO_OPENSSL")
-    message(STATUS "Found OpenSSL support in Qt")
-    add_definitions(-DHAVE_SSL)
-    set(HAVE_SSL true)
-    set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_SSL)
-  else(NOT QT_DEFINITIONS MATCHES "QT_NO_OPENSSL")
-    message(STATUS "No OpenSSL support found in Qt, disabling")
-  endif(NOT QT_DEFINITIONS MATCHES "QT_NO_OPENSSL")
-else(OPENSSL_FOUND)
-  add_definitions(-DQT_NO_OPENSSL)
-endif(OPENSSL_FOUND)
-
-# Setup D-Bus support
-if(WITH_DBUS)
-  if(QT_QTDBUS_FOUND)
-    message(STATUS "Found QtDBus, enabling D-Bus support")
-    add_definitions(-DHAVE_DBUS)
-    set(LINK_DBUS DBUS)
-    set(HAVE_DBUS true)
-    set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_DBUS)
-  else(QT_QTDBUS_FOUND)
-    message(STATUS "QtDBus not found, disabling D-Bus support")
-  endif(QT_QTDBUS_FOUND)
-else(WITH_DBUS)
-  message(STATUS "Disabling D-Bus support")
-endif(WITH_DBUS)
-
-# Setup QtWebKit support
-if(WITH_WEBKIT)
-  if(QT_QTWEBKIT_FOUND)
-    message(STATUS "Found QtWebKit, enabling WebKit support")
-    add_definitions(-DHAVE_WEBKIT)
-    set(LINK_WEBKIT WEBKIT)
-    set(HAVE_WEBKIT true)
-    set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_WEBKIT)
-  else(QT_QTWEBKIT_FOUND)
-    message(STATUS "QtWebKit not found, disabling WebKit support")
-  endif(QT_QTWEBKIT_FOUND)
-else(WITH_WEBKIT)
-  message(STATUS "Disabling WebKit support")
-endif(WITH_WEBKIT)
-
-# Setup KDE4 support
-if(WITH_KDE)
-  find_package(KDE4)
-  if(KDE4_FOUND)
-    message(STATUS "Enabling KDE4 integration")
-    include_directories(${KDE4_INCLUDES})
-    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)
-    # 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")
-endif(WITH_KDE)
-
-# Setup Phonon support - we only need this if we don't have or want KDE4
-if(NOT HAVE_KDE)
-  if(WITH_PHONON)
-    find_package(Phonon)
-    if(PHONON_FOUND)
-      message(STATUS "Enabling Phonon support")
-      add_definitions(-DHAVE_PHONON)
-      set(HAVE_PHONON true)
-      set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_PHONON)
-    else(PHONON_FOUND)
-      message(STATUS "Phonon not found, disabling audio notifications")
-    endif(PHONON_FOUND)
-  else(WITH_PHONON)
-    message(STATUS "Disabling Phonon support")
-  endif(WITH_PHONON)
-endif(NOT HAVE_KDE)
+# Check for GUI specific stuff
+if(BUILD_GUI)
+
+  # Setup D-Bus support
+  if(WITH_DBUS)
+    if(QT_QTDBUS_FOUND)
+      message(STATUS "Found QtDBus, enabling D-Bus support")
+      add_definitions(-DHAVE_DBUS)
+      set(CLIENT_QT4_VARS ${CLIENT_QT4_VARS} DBUS)
+      set(CLIENT_COMPILE_FLAGS "${CLIENT_COMPILE_FLAGS} -DQT_DBUS_LIB")
+      set(HAVE_DBUS true)
+
+      # check if we have dbusmenu as well
+      find_package(DBusMenuQt)
+      if(DBUSMENUQT_FOUND)
+        message(STATUS "Enabling support for exporting the tray menu via D-Bus")
+        add_definitions(-DHAVE_DBUSMENU)
+        include_directories(${DBUSMENUQT_INCLUDE_DIR})
+        set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${DBUSMENUQT_LIBRARIES})
+        set(CLIENT_COMPILE_FLAGS "${CLIENT_COMPILE_FLAGS} ${DBUSMENUQT_DEFINITIONS}")
+      else(DBUSMENUQT_FOUND)
+        message(STATUS "Disabling support for exporting the tray menu via D-Bus")
+      endif(DBUSMENUQT_FOUND)
+
+    else(QT_QTDBUS_FOUND)
+      message(STATUS "QtDBus not found, disabling D-Bus support")
+    endif(QT_QTDBUS_FOUND)
+  else(WITH_DBUS)
+    message(STATUS "Not enabling D-Bus support")
+  endif(WITH_DBUS)
+
+  # Setup QtWebKit support
+  if(WITH_WEBKIT)
+    if(QT_QTWEBKIT_FOUND)
+      message(STATUS "Found QtWebKit, enabling WebKit support")
+      add_definitions(-DHAVE_WEBKIT)
+      set(CLIENT_QT4_VARS ${CLIENT_QT4_VARS} WEBKIT XMLPATTERNS)
+      set(CLIENT_COMPILE_FLAGS "${CLIENT_COMPILE_FLAGS} -DQT_WEBKIT_LIB -DQT_XMLPATTERNS_LIB")
+      set(HAVE_WEBKIT true)
+    else(QT_QTWEBKIT_FOUND)
+      message(STATUS "QtWebKit not found, disabling WebKit support")
+    endif(QT_QTWEBKIT_FOUND)
+  else(WITH_WEBKIT)
+    message(STATUS "Not enabling WebKit support")
+  endif(WITH_WEBKIT)
+
+  # Setup KDE4 support
+  if(WITH_KDE)
+    find_package(KDE4)
+    if(KDE4_FOUND)
+      message(STATUS "Enabling KDE4 integration")
+      include_directories(${KDE4_INCLUDES})
+      add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
+      set(HAVE_KDE 1)
+      set(CLIENT_LIBRARIES ${CLIENT_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)
+    message(STATUS "Not enabling KDE4 integration")
+  endif(WITH_KDE)
+
+  # Setup Phonon support - we only need this if we don't have or want KDE4
+  if(NOT HAVE_KDE)
+    if(WITH_PHONON)
+      find_package(Phonon)
+      if(PHONON_FOUND)
+        message(STATUS "Enabling Phonon support")
+        add_definitions(-DHAVE_PHONON)
+        include_directories(${PHONON_INCLUDES})
+        set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${PHONON_LIBS})
+        set(HAVE_PHONON true)
+      else(PHONON_FOUND)
+        message(STATUS "Phonon not found, disabling audio notifications")
+      endif(PHONON_FOUND)
+    else(WITH_PHONON)
+      message(STATUS "Not enabling Phonon support")
+    endif(WITH_PHONON)
+  endif(NOT HAVE_KDE)
+
+  # Setup libindicate-qt support
+  if(WITH_LIBINDICATE)
+    pkg_check_modules(INDICATEQT QUIET indicate-qt>=0.2.1)
+    if(INDICATEQT_FOUND)
+      message(STATUS "Enabling Ayatana notification support")
+      set(HAVE_INDICATEQT true)
+      add_definitions(-DHAVE_INDICATEQT)
+      link_directories(${INDICATEQT_LIBRARY_DIRS})
+      set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} ${INDICATEQT_LIBRARIES})
+    else(INDICATEQT_FOUND)
+      message(STATUS "Disabling Ayatana notification support")
+    endif(INDICATEQT_FOUND)
+  else(WITH_LIBINDICATE)
+    message(STATUS "Not enabling Ayatana notification support")
+    # We don't want to link against it even if another package has found it
+    set(INDICATEQT_LIBRARIES "")
+  endif(WITH_LIBINDICATE)
+
+endif(BUILD_GUI)
+
+# Core-only deps
+if(BUILD_CORE)
+
+  # Setup encryption support
+  if(WITH_CRYPT)
+    find_package(QCA2)
+    if(QCA2_FOUND)
+      message(STATUS "Found QCA2, enabling encryption support")
+      add_definitions(-DHAVE_QCA2)
+      set(LINK_QCA2 QCA2)
+      set(HAVE_QCA2 true)
+      set(MOC_DEFINES ${MOC_DEFINES} -DHAVE_QCA2)
+    else(QCA2_FOUND)
+      message(STATUS "QCA2 not found, disabling encryption support")
+    endif(QCA2_FOUND)
+  else(WITH_CRYPT)
+    message(STATUS "Not enabling encryption support")
+  endif(WITH_CRYPT)
+
+  # Setup syslog support
+  if(WITH_SYSLOG)
+    check_include_file(syslog.h HAVE_SYSLOG_H)
+    if(HAVE_SYSLOG_H)
+      message(STATUS "Enabling syslog support")
+      set(HAVE_SYSLOG true)
+      add_definitions(-DHAVE_SYSLOG)
+    else(HAVE_SYSLOG_H)
+      message(STATUS "Disabling syslog support")
+    endif(HAVE_SYSLOG_H)
+  else(WITH_SYSLOG)
+    message(STATUS "Not enabling syslog support")
+  endif(WITH_SYSLOG)
+
+endif(BUILD_CORE)
+
+# needed to compile with mingw without kde
+if(MINGW AND NOT HAVE_KDE)
+    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(MINGW AND NOT HAVE_KDE)
 
 # Now set up install locations; those are set by KDE if integration is enabled
 if(NOT HAVE_KDE)
 
 # Now set up install locations; those are set by KDE if integration is enabled
 if(NOT HAVE_KDE)
@@ -238,6 +358,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)
@@ -256,16 +382,21 @@ endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
 
 if(WIN32)
   link_libraries(imm32 winmm dbghelp Secur32)  # missing by default :/
 
 if(WIN32)
   link_libraries(imm32 winmm dbghelp Secur32)  # missing by default :/
-
-  if(HAVE_SSL)
-     link_libraries(${OPENSSL_LIBRARIES} libeay32MD)
-  endif(HAVE_SSL)
+  if(MSVC)
+    set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
+    set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO}")
+    set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO}")
+    link_libraries(Version dwmapi shlwapi)
+  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)
 
 endif(WIN32)
 
-if(STATIC)
-  link_directories(${QT_PLUGINS_DIR}/imageformats)
-  link_libraries(qjpeg qgif)
-endif(STATIC)
+if(HAVE_INDICATEQT)
+  add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR})
+endif(HAVE_INDICATEQT)
 
 # 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.
@@ -286,5 +417,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)