From: Manuel Nickschas Date: Tue, 17 Jun 2008 18:31:07 +0000 (+0200) Subject: Merge branch 'cmake' X-Git-Tag: 0.3.0~371 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=c9ee7972b2c9b84e37f363befa05bf5fb04114af;hp=-c Merge branch 'cmake' Mangled the CMakeLists.txt a bit to make WIN32 support less fugly --- c9ee7972b2c9b84e37f363befa05bf5fb04114af diff --combined CMakeLists.txt index cf1a80be,5088178d..0f481a43 --- a/CMakeLists.txt +++ b/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