Merge branch 'cmake'
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 17 Jun 2008 18:31:07 +0000 (20:31 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Tue, 17 Jun 2008 18:31:07 +0000 (20:31 +0200)
Mangled the CMakeLists.txt a bit to make WIN32 support less fugly

1  2 
CMakeLists.txt

diff --combined CMakeLists.txt
@@@ -3,7 -3,8 +3,7 @@@
  # -DWANT_(CORE|QTCLIENT|MONO)=(ON|OFF)
  #                  : select binaries to build
  # -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.
 +# -DSTATIC         : Enable static building of Quassel. Use with care.
  # -DSPUTDEV        : Do not use.
  #
  # NOTE: You need to remove CMakeCache.txt if you plan to change any of these values!
@@@ -17,15 -18,10 +17,15 @@@ cmake_minimum_required(VERSION 2.4.7 FA
  # with 2.4, so... DUH!
  # cmake_policy(SET CMP0003 OLD)  # suppress linker warnings
  
 +# Temporary
  if(STATICWIN)
 -  set(CMAKE_BUILD_TYPE Release)
 +  set(STATIC 1)
  endif(STATICWIN)
  
 +if(STATIC)
 +  set(CMAKE_BUILD_TYPE Release)
 +endif(STATIC)
 +
  # Enable various flags on gcc
  include(CheckCXXCompilerFlag)
  check_cxx_compiler_flag(-Wall Wall)
@@@ -104,22 -100,17 +104,22 @@@ qt4_add_resources(RC_QUASSEL_ICONS src/
  qt4_add_resources(RC_SQL src/core/sql.qrc)
  
  # Set global buildflags
 -if(DEFINED STATIC)
 -  set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc ${CMAKE_EXE_LINKER_FLAGS}")
 -  link_directories(${CMAKE_BINARY_DIR}/staticlibs)
 -endif(DEFINED STATIC)
 -
 -if(STATICWIN AND WIN32)
 +# This is very much non-portable, so don't use -DSTATICGCC 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(OPENSSL_FOUND)
 +    set(QUASSEL_SSL_LIBRARIES ssl crypto)  # these miss in static builds
 +  endif(OPENSSL_FOUND)
 +endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
 +
 +if(STATIC AND WIN32)
    link_libraries(imm32 winmm)  # missing by default :/
     if(OPENSSL_FOUND)
       link_libraries(${OPENSSL_LIBRARIES} libeay32MD)
     endif(OPENSSL_FOUND)
 -endif(STATICWIN AND WIN32)
 +endif(STATIC AND WIN32)
  
  if(WIN32)
    set(WIN32_RC src/icons/win32.rc)  # for app icons on windows
@@@ -132,7 -123,7 +132,10 @@@ endif(WIN32
  # This macro sets variables for additional Qt modules.
  macro(setup_qt4_variables)
    set(QUASSEL_QT_LIBRARIES )
--  foreach(qtmod CORE ${ARGV})
++  IF(WIN32)
++    set(MAIN MAIN)
++  ENDIF(WIN32)
++  foreach(qtmod CORE ${ARGV} ${MAIN})
      set(QUASSEL_QT_LIBRARIES ${QUASSEL_QT_LIBRARIES} ${QT_QT${qtmod}_LIBRARY} ${QT_${qtmod}_LIB_DEPENDENCIES})
    endforeach(qtmod ${ARGV})
    set(QUASSEL_QT_LIBRARIES ${QUASSEL_QT_LIBRARIES} ${QT_LIBRARIES})
@@@ -145,28 -136,25 +148,28 @@@ if(WANT_CORE
                               ${RC_SQL} ${RC_I18N} ${WIN32_RC})
    set_target_properties(quasselcore PROPERTIES 
                                      COMPILE_FLAGS "-DQT_NETWORK_LIB -DQT_SCRIPT_LIB -DQT_SQL_LIB -DBUILD_CORE")
 -  target_link_libraries(quasselcore mod_core mod_common ${QUASSEL_QT_LIBRARIES})
 +  target_link_libraries(quasselcore mod_core mod_common 
 +                                    ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
  endif(WANT_CORE)
  
  if(WANT_QTCLIENT)
 -  setup_qt4_variables(GUI NETWORK MAIN)
 +  setup_qt4_variables(GUI NETWORK)
-   add_executable(quasselclient ${CMAKE_SOURCE_DIR}/src/common/main.cpp
-                                ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_I18N} ${WIN32_RC})
+   add_executable(quasselclient WIN32 ${CMAKE_SOURCE_DIR}/src/common/main.cpp
 -                               ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_I18N} ${WIN32_RC})
++                                     ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_I18N} ${WIN32_RC})
    set_target_properties(quasselclient PROPERTIES
                                        COMPILE_FLAGS "-DQT_GUI_LIB -DQT_NETWORK_LIB -DBUILD_QTUI")
 -  target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${QUASSEL_QT_LIBRARIES})
 +  target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common
 +                                      ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
  endif(WANT_QTCLIENT)
  
  if(WANT_MONO)
 -  setup_qt4_variables(GUI NETWORK SCRIPT SQL MAIN)
 +  setup_qt4_variables(GUI NETWORK SCRIPT SQL)
-   add_executable(quassel ${CMAKE_SOURCE_DIR}/src/common/main.cpp
-                          ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_SQL} ${RC_I18N} ${WIN32_RC})
+   add_executable(quassel WIN32 ${CMAKE_SOURCE_DIR}/src/common/main.cpp
 -                         ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_SQL} ${RC_I18N} ${WIN32_RC})
++                               ${RC_ICONS} ${RC_QUASSEL_ICONS} ${RC_SQL} ${RC_I18N} ${WIN32_RC})
    set_target_properties(quassel PROPERTIES 
                                  COMPILE_FLAGS "-DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_SCRIPT_LIB -DQT_SQL_LIB -DBUILD_MONO")
 -  target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${QUASSEL_QT_LIBRARIES})
 +  target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common 
 +                                ${QUASSEL_QT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES})
  endif(WANT_MONO)
  
  # Build bundles for MacOSX