summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
blob: fd0c19c55bf780d038bb1f0c5020916c5dea1e5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#################################################
#
#  (C) 2016 Alexander Golubev
#  fatzer2 (AT) gmail.com
#
#  Improvements and feedback are welcome
#
#  This file is released under GPL >= 2
#
#################################################

cmake_minimum_required( VERSION 2.8 )


##### general package setup #####################

project( tdegames )
set( VERSION R14.0.10 )


##### include essential cmake modules ###########

include( FindPkgConfig )
include( CheckIncludeFile )
include( CheckLibraryExists )
include( CheckSymbolExists )
include( CheckCXXSourceCompiles )


##### include our cmake modules #################

set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" )
include( TDEMacros )


##### setup install paths #######################

include( TDESetupPaths )
tde_setup_paths( )


##### optional stuff ############################

option( WITH_ALL_OPTIONS "Enable all optional support" OFF )
option( WITH_ARTS        "Enable aRts support" ${WITH_ALL_OPTIONS} )


##### options comments ##########################

# WITH_ARTS        affects    kbounce
#                  if disabled the game will have no sound
# NOTE: ARTS is unconditionally required to build kolf and kasteroids

##### user requested modules ####################

option( BUILD_ALL "Build all" OFF )

option( BUILD_ATLANTIK     "Build atlantik"      ${BUILD_ALL} )
option( BUILD_DOC          "Build documentation" ${BUILD_ALL} )
option( BUILD_KASTEROIDS   "Build kasteroids"    ${BUILD_ALL} )
option( BUILD_KATOMIC      "Build katomic"       ${BUILD_ALL} )
option( BUILD_KBACKGAMMON  "Build kbackgammon"   ${BUILD_ALL} )
option( BUILD_KBATTLESHIP  "Build kbattleship"   ${BUILD_ALL} )
option( BUILD_KBLACKBOX    "Build kblackbox"     ${BUILD_ALL} )
option( BUILD_KBOUNCE      "Build kbounce"       ${BUILD_ALL} )
option( BUILD_KENOLABA     "Build kenolaba"      ${BUILD_ALL} )
option( BUILD_KFOULEGGS    "Build kfouleggs"     ${BUILD_ALL} )
option( BUILD_KGOLDRUNNER  "Build kgoldrunner"   ${BUILD_ALL} )
option( BUILD_KJUMPINGCUBE "Build kjumpingcube"  ${BUILD_ALL} )
option( BUILD_KLICKETY     "Build klickety"      ${BUILD_ALL} )
option( BUILD_KLINES       "Build klines"        ${BUILD_ALL} )
option( BUILD_KMAHJONGG    "Build kmahjongg"     ${BUILD_ALL} )
option( BUILD_KMINES       "Build kmines"        ${BUILD_ALL} )
option( BUILD_KNETWALK     "Build knetwalk"      ${BUILD_ALL} )
option( BUILD_KOLF         "Build kolf"          ${BUILD_ALL} )
option( BUILD_KONQUEST     "Build konquest"      ${BUILD_ALL} )
option( BUILD_KPAT         "Build kpat"          ${BUILD_ALL} )
option( BUILD_KPOKER       "Build kpoker"        ${BUILD_ALL} )
option( BUILD_KREVERSI     "Build kreversi"      ${BUILD_ALL} )
option( BUILD_KSAME        "Build ksame"         ${BUILD_ALL} )
option( BUILD_KSHISEN      "Build kshisen"       ${BUILD_ALL} )
option( BUILD_KSIRTET      "Build ksirtet"       ${BUILD_ALL} )
option( BUILD_KSMILETRIS   "Build ksmiletris"    ${BUILD_ALL} )
option( BUILD_KSNAKE       "Build ksnake"        ${BUILD_ALL} )
option( BUILD_KSOKOBAN     "Build ksokoban"      ${BUILD_ALL} )
option( BUILD_KSPACEDUEL   "Build kspaceduel"    ${BUILD_ALL} )
option( BUILD_KTRON        "Build ktron"         ${BUILD_ALL} )
option( BUILD_KTUBERLING   "Build ktuberling"    ${BUILD_ALL} )
option( BUILD_LIBTDEGAMES  "Build libtdegames"   ${BUILD_ALL} )
option( BUILD_LSKAT        "Build lskat"         ${BUILD_ALL} )
option( BUILD_TWIN4        "Build twin4"         ${BUILD_ALL} )


##### configure checks ##########################

include( ConfigureChecks.cmake )


###### global compiler settings #################

add_definitions(
  -DHAVE_CONFIG_H
)

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" )
set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" )

if( WITH_TEST )
  enable_testing()
endif( WITH_TEST )

##### add apidox targets ############

add_custom_target(apidox
  COMMAND "./generate_apidox" "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" "${HTML_INSTALL_DIR}" "/usr/share/tqt3/doc/html"
  WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/cmake/")

add_custom_target(install-apidox
  COMMAND "./install_apidox" "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" "${HTML_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}"
  WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/cmake/")


##### tdegames directories #####################

tde_conditional_add_subdirectory( BUILD_ATLANTIK     atlantik     )
tde_conditional_add_subdirectory( BUILD_DOC          doc          )
tde_conditional_add_subdirectory( BUILD_KASTEROIDS   kasteroids   )
tde_conditional_add_subdirectory( BUILD_KATOMIC      katomic      )
tde_conditional_add_subdirectory( BUILD_KBACKGAMMON  kbackgammon  )
tde_conditional_add_subdirectory( BUILD_KBATTLESHIP  kbattleship  )
tde_conditional_add_subdirectory( BUILD_KBLACKBOX    kblackbox    )
tde_conditional_add_subdirectory( BUILD_KBOUNCE      kbounce      )
tde_conditional_add_subdirectory( BUILD_KENOLABA     kenolaba     )
tde_conditional_add_subdirectory( BUILD_KFOULEGGS    kfouleggs    )
tde_conditional_add_subdirectory( BUILD_KGOLDRUNNER  kgoldrunner  )
tde_conditional_add_subdirectory( BUILD_KJUMPINGCUBE kjumpingcube )
tde_conditional_add_subdirectory( BUILD_KLICKETY     klickety     )
tde_conditional_add_subdirectory( BUILD_KLINES       klines       )
tde_conditional_add_subdirectory( BUILD_KMAHJONGG    kmahjongg    )
tde_conditional_add_subdirectory( BUILD_KMINES       kmines       )
tde_conditional_add_subdirectory( BUILD_KNETWALK     knetwalk     )
tde_conditional_add_subdirectory( BUILD_KOLF         kolf         )
tde_conditional_add_subdirectory( BUILD_KONQUEST     konquest     )
tde_conditional_add_subdirectory( BUILD_KPAT         kpat         )
tde_conditional_add_subdirectory( BUILD_KPOKER       kpoker       )
tde_conditional_add_subdirectory( BUILD_KREVERSI     kreversi     )
tde_conditional_add_subdirectory( BUILD_KSAME        ksame        )
tde_conditional_add_subdirectory( BUILD_KSHISEN      kshisen      )
tde_conditional_add_subdirectory( BUILD_KSIRTET      ksirtet      )
tde_conditional_add_subdirectory( BUILD_KSMILETRIS   ksmiletris   )
tde_conditional_add_subdirectory( BUILD_KSNAKE       ksnake       )
tde_conditional_add_subdirectory( BUILD_KSOKOBAN     ksokoban     )
tde_conditional_add_subdirectory( BUILD_KSPACEDUEL   kspaceduel   )
tde_conditional_add_subdirectory( BUILD_KTRON        ktron        )
tde_conditional_add_subdirectory( BUILD_KTUBERLING   ktuberling   )
tde_conditional_add_subdirectory( BUILD_LIBTDEGAMES  libtdegames  )
tde_conditional_add_subdirectory( BUILD_LSKAT        lskat        )
tde_conditional_add_subdirectory( BUILD_TWIN4        twin4        )

if( BUILD_KSIRTET OR BUILD_KFOULEGGS OR BUILD_KLICKETY )
  add_subdirectory( libksirtet )
endif( )


##### write configure files #####################

configure_file( config.h.cmake config.h @ONLY )