(no commit message)
[quassel.git] / CMakeLists.txt
1 PROJECT(Quassel)
2
3 CMAKE_MINIMUM_REQUIRED(VERSION 2.4.2)
4
5 # Select if Quassel should be built in client, server or monolithic mode
6 SET(BUILD "mono" CACHE STRING "Defines which Quassel parts are to be built. Can contain 'server', 'client' and/or 'monolithic' (which is the default).")
7 SET(BUILD_SERVER )
8 SET(BUILD_CLIENT )
9 SET(BUILD_MONO )
10 IF(BUILD MATCHES "server")
11   SET(BUILD_SERVER true)
12   MESSAGE(STATUS "Building Quassel server.")
13 ENDIF(BUILD MATCHES "server")
14 IF(BUILD MATCHES "client")
15   SET(BUILD_CLIENT true)
16   MESSAGE(STATUS "Building Quassel client.")
17 ENDIF(BUILD MATCHES "client")
18 IF(BUILD MATCHES "mono")
19   SET(BUILD_MONO true)
20   MESSAGE(STATUS "Building monolithic Quassel.")
21 ENDIF(BUILD MATCHES "mono")
22 IF(NOT BUILD_MONO AND NOT BUILD_SERVER AND NOT BUILD_CLIENT)
23   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'.")
24 ENDIF(NOT BUILD_MONO AND NOT BUILD_SERVER AND NOT BUILD_CLIENT)
25
26 # We need Qt4 support.
27 FIND_PACKAGE(Qt4 REQUIRED)
28
29 # Set needed libraries
30 SET(QT_USE_QTXML true)
31 IF(NOT BUILD_CLIENT AND NOT BUILD_MONO)
32   SET(QT_DONT_USE_QTGUI true)
33   MESSAGE(STATUS "Disabling GUI support.")
34 ENDIF(NOT BUILD_CLIENT AND NOT BUILD_MONO)
35 INCLUDE(${QT_USE_FILE})
36 ADD_DEFINITIONS(${QT_DEFINITIONS})
37
38 # Define files
39 SET(quassel_SRCS main/main.cpp)
40 SET(quassel_RCCS images/icons.qrc)
41 SET(quassel_DIRS gui main)
42
43 # Build correct absolute paths for subdirs to include
44 SET(SDIRS "")
45 FOREACH(dir ${quassel_DIRS})
46   SET(SDIRS ${SDIRS} "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
47 ENDFOREACH(dir)
48 INCLUDE_DIRECTORIES(${SDIRS} ${QT_INCLUDES})
49
50 ADD_SUBDIRECTORY(gui)
51 ADD_SUBDIRECTORY(main)
52
53 QT4_ADD_RESOURCES(_RCCS ${quassel_RCCS})
54
55 ADD_EXECUTABLE(quasselbin ${quassel_SRCS} ${_RCCS})
56 TARGET_LINK_LIBRARIES(quasselbin main gui ${QT_LIBRARIES})