# 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=<part>', where <part> 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=<part>', where <part> 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_mono_SRCS main/main_mono.cpp)
+SET(quassel_core_SRCS main/main_core.cpp)
SET(quassel_RCCS images/icons.qrc)
-SET(quassel_DIRS gui core)
+SET(quassel_DIRS 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(core)
+# 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(network)
+ADD_SUBDIRECTORY(core)
QT4_ADD_RESOURCES(_RCCS ${quassel_RCCS})
-IF(BUILD_MONO)
- ADD_EXECUTABLE(quassel ${quassel_mono_SRCS} ${_RCCS})
- TARGET_LINK_LIBRARIES(quassel gui core ${QT_LIBRARIES})
-ENDIF(BUILD_MONO)
+IF(BUILD_CORE)
+ ADD_EXECUTABLE(quasselcore ${quassel_core_SRCS} ${_RCCS})
+ TARGET_LINK_LIBRARIES(quasselcore core network ${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_SUBDIRECTORY(gui)
+ ADD_EXECUTABLE(quassel ${quassel_mono_SRCS} ${_RCCS})
+ TARGET_LINK_LIBRARIES(quassel gui core network ${QT_LIBRARIES})
+ ENDIF(BUILD_MONO)
-IF(BUILD_SERVER)
-# MESSAGE(FATAL_ERROR "Server mode not yet supported.")
- ADD_EXECUTABLE(quasselserver ${quassel_mono_SRCS} ${_RCCS})
- TARGET_LINK_LIBRARIES(quasselserver gui core ${QT_LIBRARIES})
-ENDIF(BUILD_SERVER)
+ IF(BUILD_GUI)
+ ADD_SUBDIRECTORY(gui)
+ MESSAGE(FATAL_ERROR "Client mode not yet supported.")
+ ENDIF(BUILD_GUI)
-IF(BUILD_CLIENT)
- MESSAGE(FATAL_ERROR "Client mode not yet supported.")
-ENDIF(BUILD_CLIENT)
+ENDIF(BUILD_GUI OR BUILD_MONO)