Disable disabling of cmake-2.4 related warnings in cmake-2.6 -_-
[quassel.git] / CMakeLists.txt
index bec08c9..2490abd 100644 (file)
@@ -4,6 +4,7 @@
 #                    of "core", "client", "mono" or "all".
 # -DQT=/path/to/qt : Choose a Qt4 installation to use instead of the system Qt4
 # -DSTATIC=1       : Enable static building of Quassel, most useful with a static Qt.
+# -DSTATICWIN=1    : Enable static building for Windows.
 # -DSPUTDEV        : Do not use.
 #
 # NOTE: You need to remove CMakeCache.txt if you plan to change any of these values!
@@ -12,6 +13,14 @@ project(QuasselIRC)
 
 cmake_minimum_required(VERSION 2.4.5)
 
+# This would suppress annoying warnings on cmake-2.6, but we can't use it 
+# with 2.4, so... DUH!
+# cmake_policy(SET CMP0003 OLD)  # suppress linker warnings
+
+if(STATICWIN)
+  set(CMAKE_BUILD_TYPE Release)
+endif(STATICWIN)
+
 set(QT_MIN_VERSION "4.4.0")
 
 # By default, we build all binaries
@@ -89,9 +98,10 @@ endif(BUILD_QTCLIENT OR BUILD_MONO)
 add_dependencies(mod_common genversion_run)
 
 # Add resources
-qt4_add_resources(RES_I18N ${CMAKE_SOURCE_DIR}/i18n/i18n.qrc)
-qt4_add_resources(RES_ICONS ${CMAKE_SOURCE_DIR}/src/icons/icons.qrc)
-qt4_add_resources(RES_SQL ${CMAKE_SOURCE_DIR}/src/core/sql.qrc)
+qt4_add_resources(RC_I18N i18n/i18n.qrc)
+qt4_add_resources(RC_ICONS src/icons/icons.qrc)
+qt4_add_resources(RC_QUASSEL_ICONS src/icons/quassel-icons.qrc)
+qt4_add_resources(RC_SQL src/core/sql.qrc)
 
 # Set global buildflags
 if(DEFINED STATIC)
@@ -99,6 +109,18 @@ if(DEFINED STATIC)
   link_directories(${CMAKE_BINARY_DIR}/staticlibs)
 endif(DEFINED STATIC)
 
+if(STATICWIN AND WIN32)
+  link_libraries(imm32 winmm)  # missing by default :/
+endif(STATICWIN AND WIN32)
+
+if(WIN32)
+  set(WIN32_RC src/icons/win32.rc)  # for app icons on windows
+endif(WIN32)
+
+# FIXME: Add icons for windows as soon as we have merged with trunk (which has reorganized
+#        the icon files):
+#        Simply add the .rc file to the targets
+
 # Here comes the dirty part. Our targets need different Qt4 modules, i.e. different libs
 # and defines. We can't simply include UseQt4 several times, since definitions add up.
 # We workaround this by using our own macro to figure out what to add.
@@ -118,21 +140,24 @@ endmacro(setup_qt4_variables)
 # Now we have everything, so just glue the right pieces together :)
 if(BUILD_CORE)
   setup_qt4_variables(NETWORK SCRIPT SQL)
-  add_executable(quasselcore ${CMAKE_SOURCE_DIR}/src/common/main.cpp ${RES_SQL} ${RES_I18N})
+  add_executable(quasselcore ${CMAKE_SOURCE_DIR}/src/common/main.cpp
+                             ${RC_SQL} ${RC_I18N} ${WIN32_RC})
   set_target_properties(quasselcore PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_DEFINITIONS} -DBUILD_CORE")
   target_link_libraries(quasselcore mod_core mod_common ${QUASSEL_QT_LIBRARIES})
 endif(BUILD_CORE)
 
 if(BUILD_QTCLIENT)
   setup_qt4_variables(GUI NETWORK)
-  add_executable(quasselclient ${CMAKE_SOURCE_DIR}/src/common/main.cpp ${RES_ICONS} ${RES_I18N})
+  add_executable(quasselclient ${CMAKE_SOURCE_DIR}/src/common/main.cpp
+                               ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_I18N} ${WIN32_RC})
   set_target_properties(quasselclient PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_DEFINITIONS} -DBUILD_QTUI")
   target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${QUASSEL_QT_LIBRARIES})
 endif(BUILD_QTCLIENT)
 
 if(BUILD_MONO)
   setup_qt4_variables(GUI NETWORK SCRIPT SQL)
-  add_executable(quassel ${CMAKE_SOURCE_DIR}/src/common/main.cpp ${RES_ICONS} ${RES_SQL} ${RES_I18N})
+  add_executable(quassel ${CMAKE_SOURCE_DIR}/src/common/main.cpp
+                         ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_SQL} ${RC_I18N} ${WIN32_RC})
   set_target_properties(quassel PROPERTIES COMPILE_FLAGS "${QUASSEL_QT_DEFINITIONS} -DBUILD_MONO")
   target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${QUASSEL_QT_LIBRARIES})
 endif(BUILD_MONO)