Found one more string to be translated
[tuxanci.git] / CMakeLists.txt
blob73fad62932e0692f38624c02c967530b552dc08e
1 # Created by Tomas Chvatal (Scarabeus IV)
2 ###############################################################################
3 # tuxanci/CMakeLists.txt
4 ###############################################################################
5 # ALL CONDITIONAL OPTIONS
6 ###############################################################################
7 # -DCMAKE_C_FLAGS=-Wall         # modification for CFLAGS
8 # -DCMAKE_INSTALL_PREFIX=/bla/  # install prefix
9 # -DCMAKE_DATA_PATH=/other/bla/ # install path for data
10 # -DCMAKE_CONF_PATH=/etc        # install path for conf
11 # -DLIB_INSTALL_DIR=/other/bla  # install path for lib
12 # -DCMAKE_DOC_PATH=/other/bla/doc/tuxanci-version/      # install path for doc
13 # -DCMAKE_LOCALE_PATH=/other/bla        # install path for locale
14 ###############################################################################
15 # DEFAULT OPTIONS
16 ###############################################################################
17 OPTION (BUILD_SERVER        "Build the server instead of client"           OFF)
18 OPTION (ENABLE_IPV6         "Build with the ipv6 support"                  ON)
19 OPTION (WITH_AUDIO          "Build with audio enabled"                     ON)
20 OPTION (ENABLE_DEBUG        "Build debug features"                         ON)
21 OPTION (DEVELOPER           "Modify stuff to please tuxanci devs"          OFF)
22 MARK_AS_ADVANCED ( DEVELOPER )
23 OPTION (WITH_NLS            "Build the translations"                       ON)
24 OPTION (Apple               "Build some apple quirks. USE ONLY ON MAC!"    OFF)
25 MARK_AS_ADVANCED ( Apple )
26 OPTION (WITH_OPENGL         "Use opengl as renderer instead of SW"         ON)
27 OPTION (CROSSCOMPILE        "Crosscompile tuxanci defined by ENV{TARGET}"  OFF)
28 MARK_AS_ADVANCED ( CROSSCOMPILE )
29 ###############################################################################
30 # IMPORTANT DEFINITIONS [PREFIX,...]
31 ###############################################################################
32 SET ( WORKDIR ${CMAKE_SOURCE_DIR}/src )
33 # data because some distributions want different data placement
34 SET ( CMAKE_CONF_PATH "/etc" CACHE PATH "Config path prefix" )
35 IF ( WIN32 )
36         SET ( CMAKE_INSTALL_PREFIX "/" CACHE PATH "Install path prefix" )
37         SET ( CMAKE_LOCALE_PATH "locale" CACHE PATH "Locale path prefix" )
38 ELSE ( WIN32 )
39         SET ( CMAKE_INSTALL_PREFIX "/usr/local/" CACHE PATH "Install path prefix" )
40         SET ( CMAKE_LOCALE_PATH "${CMAKE_INSTALL_PREFIX}/share/locale" CACHE PATH "Locale path prefix" )
41 ENDIF ( WIN32 )
42 SET ( CMAKE_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/" CACHE PATH "Data path prefix" )
43 ###############################################################################
44 # BASIC PROJECT VALUES
45 ###############################################################################
46 PROJECT ( tuxanci C )
47 IF ( BUILD_SERVER )
48         SET ( APPNAME "tuxanci-server")
49 ELSE ( BUILD_SERVER )
50         SET ( APPNAME "tuxanci" )
51 ENDIF ( BUILD_SERVER )
52 CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 )
53 CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 FATAL_ERROR )
54 INCLUDE (cmake/MacroAddSources.cmake)
55 IF ( COMMAND cmake_policy )
56         cmake_policy( SET CMP0003 NEW )
57 ENDIF ( COMMAND cmake_policy )
58 SET ( CMAKE_COLOR_MAKEFILE ON )
59 SET ( CMAKE_BUILD_TYPE_SHARED_LIBS ON )
60 SET ( CMAKE_C_FLAGS $ENV{CFLAGS} )
61 SET ( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} )
62 SET ( CMAKE_LINK_FLAGS $ENV{LDFLAGS} )
63 IF ( CROSSCOMPILE )
64         SET ( CMAKE_C_COMPILER "$ENV{TARGET}-gcc" )
65         SET ( CMAKE_CXX_COMPILER "$ENV{TARGET}-g++" )
66         MESSAGE ( "CROSSCOMPILE with gcc to target: $ENV{TARGET}" )
67 ENDIF ( CROSSCOMPILE )
68 # this specify location of additional cmake sources
69 SET ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" )
70 #various variables
71 SET ( CMAKE_INSTALL_ETCDIR ${CMAKE_CONF_PATH} )
72 IF ( WIN32 )
73         SET ( CMAKE_DOC_PATH "doc/" CACHE PATH "Doc path prefix" )
74         SET ( CMAKE_INSTALL_LOCALEDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_LOCALE_PATH} )
75         SET ( CMAKE_INSTALL_DOCDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_DOC_PATH} )
76 ELSE ( WIN32 )
77         SET ( CMAKE_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/${APPNAME}" CACHE PATH "Doc path prefix" )
78         SET ( CMAKE_INSTALL_LOCALEDIR ${CMAKE_LOCALE_PATH} )
79         SET ( CMAKE_INSTALL_DOCDIR ${CMAKE_DOC_PATH} )
80 ENDIF ( WIN32 )
81 SET ( CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Binary path prefix" )
82 SET ( CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_PREFIX}/share/pixmaps" CACHE PATH "Icon path prefix" )
83 SET ( CMAKE_INSTALL_DESKTOPDIR "share/applications" CACHE       PATH "Desktop file path prefix")
84 SET ( CMAKE_INSTALL_DATADIR ${CMAKE_DATA_PATH} )
85 # defines to determine if we build package or not
86 IF ( PACKAGE )
87         ADD_DEFINITIONS ( -DBUILD_PACKAGE )
88 ENDIF ( PACKAGE )
89 # uninstall
90 CONFIGURE_FILE (
91   "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
92   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
93   IMMEDIATE @ONLY )
94 ADD_CUSTOM_TARGET ( uninstall "${CMAKE_COMMAND}" 
95   -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" )
96 ###############################################################################
97 # CPACK
98 ###############################################################################
99 INCLUDE ( InstallRequiredSystemLibraries )
100 SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Tuxanci is first tux shooter inspired by game Bulanci." )
101 SET ( CPACK_PACKAGE_VENDOR "Tuxanci team <team@tuxanci.org>" )
102 SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE" )
103 SET ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README" )
104 SET ( CPACK_GENERATOR "TGZ" )
105 SET ( CPACK_SOURCE_GENERATOR "TGZ" )
106 SET ( CPACK_PACKAGE_VERSION_MAJOR "0" )
107 SET ( CPACK_PACKAGE_VERSION_MINOR "2" )
108 SET ( CPACK_PACKAGE_VERSION_PATCH "99" )
109 SET ( TUXANCI_VERSION 
110         "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
112 MARK_AS_ADVANCED ( TUXANCI_VERSION )
113 SET ( CPACK_STRIP_FILES "src/tuxanci" )
114 SET ( CPACK_SET_DESTDIR "ON" )
115 SET ( CPACK_SOURCE_PACKAGE_FILE_NAME "tuxanci-${TUXANCI_VERSION}" )
116 SET ( CPACK_SOURCE_IGNORE_FILES
117         "~$"
118         ".git"
119         "build/"
120         "packaging/"
121         "scripts/"
122         "tuxanci.1"
124 SET ( CPACK_SOURCE_STRIP_FILES "" )
125 INCLUDE ( CPack )
126 ###############################################################################
127 # DEBUG/DEVELOPER STUFF
128 ###############################################################################
129 IF ( ENABLE_DEBUG )
130         SET ( CMAKE_C_FLAGS "-g -O0 -Wall -pipe -ggdb")
131         ADD_DEFINITIONS ( -DDEBUG )
132         # SET ( CMAKE_VERBOSE_MAKEFILE on )
133 ENDIF ( ENABLE_DEBUG )
134 IF ( DEVELOPER )
135         ADD_DEFINITIONS ( -DDEBUG )
136         # if somebody asks yes i am insane
137         SET ( CMAKE_C_FLAGS "-g -ggdb -O0 -pipe -Wall -Wshadow -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wold-style-definition -Wdeclaration-after-statement -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wformat-nonliteral -Wformat-security -Wswitch-enum -Wswitch-default -Winit-self -Wmissing-include-dirs -Wundef -Waggregate-return -Wmissing-format-attribute -Wnested-externs -Wunsafe-loop-optimizations" )
138 ENDIF ( DEVELOPER )
139 ###############################################################################
140 # BASIC DIRECTORIES FOR INCLUSION
141 ###############################################################################
142 INCLUDE_DIRECTORIES ( ${WORKDIR}/base )
143 INCLUDE_DIRECTORIES ( ${WORKDIR}/net )
144 ###############################################################################
145 # CLIENT STUFF
146 ###############################################################################
147 IF ( NOT BUILD_SERVER )
148         INCLUDE_DIRECTORIES ( ${WORKDIR}/client )
149         INCLUDE_DIRECTORIES ( ${WORKDIR}/screen )
150         INCLUDE_DIRECTORIES ( ${WORKDIR}/widget )
151 ENDIF ( NOT BUILD_SERVER )
152 ###############################################################################
153 # SERVER STUFF (Basicly overriding default client values)
154 ###############################################################################
155 IF ( BUILD_SERVER )
156         ADD_DEFINITIONS ( -DPUBLIC_SERVER )
157         ADD_DEFINITIONS ( -DNO_SOUND )
158         INCLUDE_DIRECTORIES ( ${WORKDIR}/server )
159 ENDIF ( BUILD_SERVER )
160 ###############################################################################
161 # APPLE QUIRKS
162 ###############################################################################
163 IF ( Apple )
164         SET ( CMAKE_OSX_ARCHITECTURES "ppc;i386" )
165         SET ( CACHE_INTERNAL "OSX Architectures" FORCE )
166         ADD_DEFINITIONS ( -DAPPLE )
167 ENDIF ( Apple )
168 ###############################################################################
169 # LIBS SEARCH
170 ###############################################################################
171 MESSAGE ( STATUS "<Loading PkgConfig>" )
172 FIND_PACKAGE ( PkgConfig REQUIRED )
173 pkg_check_modules(ZIP REQUIRED libzip)
174 INCLUDE_DIRECTORIES( ${ZIP_INCLUDE_DIRS} )
175 IF ( NOT BUILD_SERVER )
176         # cairo not needed until we start actually using the svg files
177         #pkg_check_modules(CAIRO REQUIRED cairo>=1.8.8)
178         #pkg_check_modules(CAIRO_SVG REQUIRED cairo-svg>=1.8.8)
179         INCLUDE_DIRECTORIES( ${CAIRO_INCLUDE_DIRS} )
180         pkg_check_modules(FONTCONFIG REQUIRED fontconfig)
181         INCLUDE_DIRECTORIES ( ${FONTCONFIG_INCLUDE_DIRS} )
182         IF ( WITH_OPENGL )
183                 pkg_check_modules(OPENGL REQUIRED gl>=7.5)
184                 INCLUDE_DIRECTORIES ( ${OPENGL_INCLUDE_DIRS} )
185         ENDIF ( WITH_OPENGL )
186         pkg_check_modules(SDL REQUIRED sdl)
187         INCLUDE_DIRECTORIES ( ${SDL_INCLUDE_DIRS} )
188         pkg_check_modules(SDLIMAGE REQUIRED SDL_image)
189         INCLUDE_DIRECTORIES ( ${SDLIMAGE_INCLUDE_DIRS} )
190         #pkg_check_modules(SDLTTF REQUIRED SDL_ttf) # WTF NO PkgConfig module?!
191         FIND_PACKAGE ( SDL_ttf REQUIRED )
192         IF ( WITH_AUDIO )
193                 pkg_check_modules(SDLMIXER REQUIRED SDL_mixer)
194                 INCLUDE_DIRECTORIES ( ${SDLMIXER_INCLUDE_DIRS} )
195         ENDIF ( WITH_AUDIO )
196 ENDIF ( NOT BUILD_SERVER )
197 ###############################################################################
198 # GETTEXT SUPPORT
199 ###############################################################################
200 IF ( WITH_NLS )
201         MESSAGE ( STATUS "<Building with NLS as requested>" )
202         ADD_DEFINITIONS ( -DNLS )
203         ADD_SUBDIRECTORY ( po )
204 ENDIF ( WITH_NLS )
205 ###############################################################################
206 # COMPILATION ITSELF
207 ###############################################################################
208 CONFIGURE_FILE ( ${WORKDIR}/base/path.h.in ${CMAKE_BINARY_DIR}/src/base/path.h )
209 ADD_SUBDIRECTORY ( src )
210 ###############################################################################
211 # DATA INSTALLATION
212 ###############################################################################
213 ADD_SUBDIRECTORY ( data )
214 SET ( tuxanci_docs
215         ${CMAKE_CURRENT_SOURCE_DIR}/LICENCE
216         ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS
217         ${CMAKE_CURRENT_SOURCE_DIR}/README
219 INSTALL ( FILES ${tuxanci_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR}/ )
220 ###############################################################################
221 # GOODBYE INFORMATIONS (VARIABLES SETTINGS)
222 ###############################################################################
223 MESSAGE ( STATUS "<Printing out environment settings>" )
224 MESSAGE ( STATUS "<******************************>" )
225 MESSAGE ( STATUS "CFlags: ${CMAKE_C_FLAGS}" )
226 MESSAGE ( STATUS "LDFLAGS: ${CMAKE_LINK_FLAGS}" )
227 MESSAGE ( STATUS "PREFIX: ${CMAKE_INSTALL_PREFIX}" )
228 MESSAGE ( STATUS "ETC directory: ${CMAKE_CONF_PATH}" )
229 MESSAGE ( STATUS "DOC directory: ${CMAKE_DOC_PATH}" )
230 MESSAGE ( STATUS "LOCALE directory: ${CMAKE_INSTALL_LOCALEDIR}" )
231 MESSAGE ( STATUS "DATA directory: ${CMAKE_INSTALL_DATADIR}" )
232 ###############################################################################