X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=CMakeLists.txt;h=0f481a43b88141cf9bfa4e4ae39b144716770fa1;hb=4001dd0b65c297486a519d3ca63c630b05f1db67;hp=eab6adae8aa9cdd17e7f08e6d4d10829b0df3cdd;hpb=7d371a32b6fcde653ecfdfb5496d4545fd721e39;p=quassel.git diff --git a/CMakeLists.txt b/CMakeLists.txt index eab6adae..0f481a43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,24 +3,29 @@ # -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! project(QuasselIRC) -cmake_minimum_required(VERSION 2.4.5) +# Target scopes don't work in older versions +cmake_minimum_required(VERSION 2.4.7 FATAL_ERROR) # 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 +# 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) @@ -99,17 +104,22 @@ 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) - 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 @@ -122,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}) @@ -135,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) - 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}) 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) - 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}) 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