X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=CMakeLists.txt;h=77c3b413584a6ac45b0b127f9fae0b83c982cd94;hp=255d5fd8c441664774e3584915816abfb8b7bec8;hb=e368a1672c4f917bfa6adb52dae3b5ebfcd0db18;hpb=925b072e5c7bc38949995902cf7af6e4644c2c55 diff --git a/CMakeLists.txt b/CMakeLists.txt index 255d5fd8..77c3b413 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,54 +1,83 @@ PROJECT(Quassel) +# CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2) + # Select if Quassel should be built in client, server or monolithic mode -SET(BUILD "mono" CACHE STRING "Defines which Quassel parts are to be built. Can contain 'server', 'client' and/or 'monolithic' (which is the default).") -SET(BUILD_SERVER ) -SET(BUILD_CLIENT ) +SET(BUILD "mono" CACHE STRING "Defines which Quassel parts are to be built. Can contain 'core', 'gui' and/or 'monolithic' (which is the default).") +SET(BUILD_CORE ) +SET(BUILD_GUI ) SET(BUILD_MONO ) -IF(BUILD MATCHES "server") - SET(BUILD_SERVER true) - MESSAGE(STATUS "Building Quassel server.") -ENDIF(BUILD MATCHES "server") -IF(BUILD MATCHES "client") - SET(BUILD_CLIENT true) - MESSAGE(STATUS "Building Quassel client.") -ENDIF(BUILD MATCHES "client") +IF(BUILD MATCHES "core") + SET(BUILD_CORE true) + MESSAGE(STATUS "Building Quassel core.") +ENDIF(BUILD MATCHES "core") +IF(BUILD MATCHES "gui") + SET(BUILD_GUI true) + MESSAGE(STATUS "Building Quassel GUI.") +ENDIF(BUILD MATCHES "gui") IF(BUILD MATCHES "mono") SET(BUILD_MONO true) MESSAGE(STATUS "Building monolithic Quassel.") ENDIF(BUILD MATCHES "mono") -IF(NOT BUILD_MONO AND NOT BUILD_SERVER AND NOT BUILD_CLIENT) - MESSAGE(FATAL_ERROR "You have not selected which parts of Quassel I should build. Aborting.\nRun 'cmake -DBUILD=', where contains one or more of 'server', 'client' or 'monolithic'.") -ENDIF(NOT BUILD_MONO AND NOT BUILD_SERVER AND NOT BUILD_CLIENT) - -# We need Qt4 support. -FIND_PACKAGE(Qt4 REQUIRED) - -# Set needed libraries -SET(QT_USE_QTXML true) -IF(NOT BUILD_CLIENT AND NOT BUILD_MONO) - SET(QT_DONT_USE_QTGUI true) - MESSAGE(STATUS "Disabling GUI support.") -ENDIF(NOT BUILD_CLIENT AND NOT BUILD_MONO) -INCLUDE(${QT_USE_FILE}) -ADD_DEFINITIONS(${QT_DEFINITIONS}) +IF(NOT BUILD_MONO AND NOT BUILD_CORE AND NOT BUILD_GUI) + MESSAGE(FATAL_ERROR "You have not selected which parts of Quassel I should build. Aborting.\nRun 'cmake -DBUILD=', where contains one or more of 'core', 'gui' or 'monolithic'.") +ENDIF(NOT BUILD_MONO AND NOT BUILD_CORE AND NOT BUILD_GUI) # Define files -SET(quassel_SRCS main/main.cpp) +SET(quassel_mono_SRCS main/main_mono.cpp) +SET(quassel_core_SRCS main/main_core.cpp) +#SET(quassel_gui_SRCS main/main_gui.cpp ${common_SRCS}) SET(quassel_RCCS images/icons.qrc) -SET(quassel_DIRS gui main) +SET(quassel_DIRS main gui core network) # Build correct absolute paths for subdirs to include SET(SDIRS "") FOREACH(dir ${quassel_DIRS}) SET(SDIRS ${SDIRS} "${CMAKE_CURRENT_SOURCE_DIR}/${dir}") ENDFOREACH(dir) -INCLUDE_DIRECTORIES(${SDIRS} ${QT_INCLUDES}) +INCLUDE_DIRECTORIES(${SDIRS}) -ADD_SUBDIRECTORY(gui) -ADD_SUBDIRECTORY(main) +# We need Qt4 support. +FIND_PACKAGE(Qt4 REQUIRED) + +# Set needed libraries +SET(QT_USE_QTXML true) +SET(QT_USE_QTNETWORK true) +SET(QT_DONT_USE_QTGUI true) # This is added later if GUI is requested +INCLUDE(${QT_USE_FILE}) +ADD_SUBDIRECTORY(main) QT4_ADD_RESOURCES(_RCCS ${quassel_RCCS}) -ADD_EXECUTABLE(quasselbin ${quassel_SRCS} ${_RCCS}) -TARGET_LINK_LIBRARIES(quasselbin main gui ${QT_LIBRARIES}) +IF(BUILD_CORE) + ADD_DEFINITIONS(-DBUILD_CORE) + ADD_SUBDIRECTORY(network) + ADD_SUBDIRECTORY(core) + ADD_EXECUTABLE(quasselcore ${quassel_core_SRCS} ${_RCCS}) + TARGET_LINK_LIBRARIES(quasselcore core network main ${QT_LIBRARIES}) +ENDIF(BUILD_CORE) + +IF(BUILD_GUI OR BUILD_MONO) # OK, now we need QtGui! + REMOVE_DEFINITIONS(-DQT_CORE_LIB -DQT_GUI_LIB ${QT_DEFINITIONS}) + SET(QT_DONT_USE_QTGUI "") + SET(QT_INCLUDE_DIR "") + SET(QT_LIBRARIES "") + INCLUDE(${QT_USE_FILE}) + + IF(BUILD_MONO) + ADD_DEFINITIONS(-DBUILD_MONO) + ADD_SUBDIRECTORY(gui) + ADD_SUBDIRECTORY(network) + ADD_SUBDIRECTORY(core) + ADD_EXECUTABLE(quassel ${quassel_mono_SRCS} ${_RCCS}) + TARGET_LINK_LIBRARIES(quassel gui core network main ${QT_LIBRARIES}) + ENDIF(BUILD_MONO) + + IF(BUILD_GUI) + ADD_DEFINITIONS(-DBUILD_GUI) + ADD_SUBDIRECTORY(gui) + ADD_EXECUTABLE(quasselgui ${quassel_gui_SRCS} ${_RCCS}) + TARGET_LINK_LIBRARIES(quasselgui gui main ${QT_LIBRARIES}) + ENDIF(BUILD_GUI) + +ENDIF(BUILD_GUI OR BUILD_MONO)