fix bug with shot when tux is turn up
[tuxanci.git] / CMakeLists.txt
blob06eae189ab4287991ebb23e6bb805583066b2933
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 (WITH_PHYSFS         "Use physfs engine for unpacking (instead of libzip)" OFF)
25 OPTION (Apple               "Build some apple quirks. USE ONLY ON MAC!"    OFF)
26 MARK_AS_ADVANCED ( Apple )
27 OPTION (WITH_OPENGL         "Use opengl as renderer instead of SW"         ON)
28 OPTION (CROSSCOMPILE        "Crosscompile tuxanci defined by ENV{TARGET}"  OFF)
29 MARK_AS_ADVANCED ( CROSSCOMPILE )
30 ###############################################################################
31 # IMPORTANT DEFINITIONS [PREFIX,...]
32 ###############################################################################
33 SET ( WORKDIR ${CMAKE_SOURCE_DIR}/src )
34 # data because some distributions want different data placement
35 SET ( CMAKE_CONF_PATH "/etc" CACHE PATH "Config path prefix" )
36 IF ( WIN32 )
37         SET ( CMAKE_INSTALL_PREFIX "/" CACHE PATH "Install path prefix" )
38         SET ( CMAKE_LOCALE_PATH "locale" CACHE PATH "Locale path prefix" )
39 ELSE ( WIN32 )
40         SET ( CMAKE_INSTALL_PREFIX "/usr/local/" CACHE PATH "Install path prefix" )
41         SET ( CMAKE_LOCALE_PATH "${CMAKE_INSTALL_PREFIX}/share/locale" CACHE PATH "Locale path prefix" )
42 ENDIF ( WIN32 )
43 SET ( CMAKE_DATA_PATH "${CMAKE_INSTALL_PREFIX}/share/" CACHE PATH "Data path prefix" )
44 ###############################################################################
45 # BASIC PROJECT VALUES
46 ###############################################################################
47 PROJECT ( tuxanci C )
48 IF ( BUILD_SERVER )
49         SET ( APPNAME "tuxanci-server")
50 ELSE ( BUILD_SERVER )
51         SET ( APPNAME "tuxanci" )
52 ENDIF ( BUILD_SERVER )
53 CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 )
54 CMAKE_MINIMUM_REQUIRED ( VERSION 2.6.0 FATAL_ERROR )
55 INCLUDE (cmake/MacroAddSources.cmake)
56 IF ( COMMAND cmake_policy )
57         cmake_policy( SET CMP0003 NEW )
58 ENDIF ( COMMAND cmake_policy )
59 SET ( CMAKE_COLOR_MAKEFILE ON )
60 SET ( CMAKE_BUILD_TYPE_SHARED_LIBS ON )
61 SET ( CMAKE_C_FLAGS $ENV{CFLAGS} )
62 SET ( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} )
63 SET ( CMAKE_LINK_FLAGS $ENV{LDFLAGS} )
64 IF ( CROSSCOMPILE )
65         SET ( CMAKE_C_COMPILER "$ENV{TARGET}-gcc" )
66         SET ( CMAKE_CXX_COMPILER "$ENV{TARGET}-g++" )
67         MESSAGE ( "CROSSCOMPILE with gcc to target: $ENV{TARGET}" )
68 ENDIF ( CROSSCOMPILE )
69 # this specify location of additional cmake sources
70 SET ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" )
71 #various variables
72 SET ( CMAKE_INSTALL_ETCDIR ${CMAKE_CONF_PATH} )
73 IF ( WIN32 )
74         SET ( CMAKE_DOC_PATH "doc/" CACHE PATH "Doc path prefix" )
75         SET ( CMAKE_INSTALL_LOCALEDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_LOCALE_PATH} )
76         SET ( CMAKE_INSTALL_DOCDIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_DOC_PATH} )
77 ELSE ( WIN32 )
78         SET ( CMAKE_DOC_PATH "${CMAKE_INSTALL_PREFIX}/share/doc/${APPNAME}" CACHE PATH "Doc path prefix" )
79         SET ( CMAKE_INSTALL_LOCALEDIR ${CMAKE_LOCALE_PATH} )
80         SET ( CMAKE_INSTALL_DOCDIR ${CMAKE_DOC_PATH} )
81 ENDIF ( WIN32 )
82 SET ( CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Binary path prefix" )
83 SET ( CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_PREFIX}/share/pixmaps" CACHE PATH "Icon path prefix" )
84 SET ( CMAKE_INSTALL_DESKTOPDIR "share/applications" CACHE       PATH "Desktop file path prefix")
85 SET ( CMAKE_INSTALL_DATADIR ${CMAKE_DATA_PATH} )
86 # defines to determine if we build package or not
87 IF ( PACKAGE )
88         ADD_DEFINITIONS ( -DBUILD_PACKAGE )
89 ENDIF ( PACKAGE )
90 # uninstall
91 CONFIGURE_FILE (
92   "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
93   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
94   IMMEDIATE @ONLY )
95 ADD_CUSTOM_TARGET ( uninstall "${CMAKE_COMMAND}" 
96   -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" )
97 ###############################################################################
98 # CPACK
99 ###############################################################################
100 INCLUDE ( InstallRequiredSystemLibraries )
101 SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "Tuxanci is first tux shooter inspired by game Bulanci." )
102 SET ( CPACK_PACKAGE_VENDOR "Tuxanci team <team@tuxanci.org>" )
103 SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE" )
104 SET ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README" )
105 SET ( CPACK_GENERATOR "TGZ" )
106 SET ( CPACK_SOURCE_GENERATOR "TGZ" )
107 SET ( CPACK_PACKAGE_VERSION_MAJOR "0" )
108 SET ( CPACK_PACKAGE_VERSION_MINOR "2" )
109 SET ( CPACK_PACKAGE_VERSION_PATCH "99" )
110 SET ( TUXANCI_VERSION 
111         "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}"
113 MARK_AS_ADVANCED ( TUXANCI_VERSION )
114 SET ( CPACK_STRIP_FILES "src/tuxanci" )
115 SET ( CPACK_SET_DESTDIR "ON" )
116 SET ( CPACK_SOURCE_PACKAGE_FILE_NAME "tuxanci-${TUXANCI_VERSION}" )
117 SET ( CPACK_SOURCE_IGNORE_FILES
118         "~$"
119         ".git"
120         "build/"
121         "packaging/"
122         "scripts/"
123         "tuxanci.1"
125 SET ( CPACK_SOURCE_STRIP_FILES "" )
126 INCLUDE ( CPack )
127 ###############################################################################
128 # DEBUG/DEVELOPER STUFF
129 ###############################################################################
130 IF ( ENABLE_DEBUG )
131         SET ( CMAKE_C_FLAGS "-g -O0 -Wall -pipe -ggdb")
132         ADD_DEFINITIONS ( -DDEBUG )
133         # SET ( CMAKE_VERBOSE_MAKEFILE on )
134 ENDIF ( ENABLE_DEBUG )
135 IF ( DEVELOPER )
136         ADD_DEFINITIONS ( -DDEBUG )
137         # if somebody asks yes i am insane
138         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" )
139 ENDIF ( DEVELOPER )
140 ###############################################################################
141 # BASIC DIRECTORIES FOR INCLUSION
142 ###############################################################################
143 INCLUDE_DIRECTORIES ( ${WORKDIR}/base )
144 INCLUDE_DIRECTORIES ( ${WORKDIR}/net )
145 ###############################################################################
146 # CLIENT STUFF
147 ###############################################################################
148 IF ( NOT BUILD_SERVER )
149         INCLUDE_DIRECTORIES ( ${WORKDIR}/client )
150         INCLUDE_DIRECTORIES ( ${WORKDIR}/screen )
151         INCLUDE_DIRECTORIES ( ${WORKDIR}/widget )
152 ENDIF ( NOT BUILD_SERVER )
153 ###############################################################################
154 # SERVER STUFF (Basicly overriding default client values)
155 ###############################################################################
156 IF ( BUILD_SERVER )
157         ADD_DEFINITIONS ( -DPUBLIC_SERVER )
158         ADD_DEFINITIONS ( -DNO_SOUND )
159         INCLUDE_DIRECTORIES ( ${WORKDIR}/server )
160 ENDIF ( BUILD_SERVER )
161 ###############################################################################
162 # APPLE QUIRKS
163 ###############################################################################
164 IF ( Apple )
165         SET ( CMAKE_OSX_ARCHITECTURES "ppc;i386" )
166         SET ( CACHE_INTERNAL "OSX Architectures" FORCE )
167         ADD_DEFINITIONS ( -DAPPLE )
168 ENDIF ( Apple )
169 ###############################################################################
170 # LIBS SEARCH
171 ###############################################################################
172 MESSAGE ( STATUS "<Loading PkgConfig>" )
173 FIND_PACKAGE ( PkgConfig REQUIRED )
174 IF ( WITH_PHYSFS )
175         FIND_PACKAGE ( PhysFS REQURED )
176 ELSE ( WITH_PHYSFS )
177         pkg_check_modules(ZIP REQUIRED libzip)
178 ENDIF ( WITH_PHYSFS )
179 INCLUDE_DIRECTORIES( ${ZIP_INCLUDE_DIRS} )
180 IF ( NOT BUILD_SERVER )
181         # cairo not needed until we start actually using the svg files
182         #pkg_check_modules(CAIRO REQUIRED cairo>=1.8.8)
183         #pkg_check_modules(CAIRO_SVG REQUIRED cairo-svg>=1.8.8)
184         INCLUDE_DIRECTORIES( ${CAIRO_INCLUDE_DIRS} )
185         pkg_check_modules(FONTCONFIG REQUIRED fontconfig)
186         INCLUDE_DIRECTORIES ( ${FONTCONFIG_INCLUDE_DIRS} )
187         IF ( WITH_OPENGL )
188                 pkg_check_modules(OPENGL REQUIRED gl>=7.5)
189                 INCLUDE_DIRECTORIES ( ${OPENGL_INCLUDE_DIRS} )
190         ENDIF ( WITH_OPENGL )
191         pkg_check_modules(SDL REQUIRED sdl)
192         INCLUDE_DIRECTORIES ( ${SDL_INCLUDE_DIRS} )
193         pkg_check_modules(SDLIMAGE REQUIRED SDL_image)
194         INCLUDE_DIRECTORIES ( ${SDLIMAGE_INCLUDE_DIRS} )
195         #pkg_check_modules(SDLTTF REQUIRED SDL_ttf) # WTF NO PkgConfig module?!
196         FIND_PACKAGE ( SDL_ttf REQUIRED )
197         INCLUDE_DIRECTORIES ( ${SDLTTF_INCLUDE_DIR} )
198         IF ( WITH_AUDIO )
199                 pkg_check_modules(SDLMIXER REQUIRED SDL_mixer)
200                 INCLUDE_DIRECTORIES ( ${SDLMIXER_INCLUDE_DIRS} )
201         ENDIF ( WITH_AUDIO )
202 ENDIF ( NOT BUILD_SERVER )
203 ###############################################################################
204 # GETTEXT SUPPORT
205 ###############################################################################
206 IF ( WITH_NLS )
207         MESSAGE ( STATUS "<Building with NLS as requested>" )
208         ADD_DEFINITIONS ( -DNLS )
209         ADD_SUBDIRECTORY ( po )
210 ENDIF ( WITH_NLS )
211 ###############################################################################
212 # COMPILATION ITSELF
213 ###############################################################################
214 CONFIGURE_FILE ( ${WORKDIR}/base/path.h.in ${CMAKE_BINARY_DIR}/src/base/path.h )
215 ADD_SUBDIRECTORY ( src )
216 ###############################################################################
217 # DATA INSTALLATION
218 ###############################################################################
219 ADD_SUBDIRECTORY ( data )
220 SET ( tuxanci_docs
221         ${CMAKE_CURRENT_SOURCE_DIR}/LICENCE
222         ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS
223         ${CMAKE_CURRENT_SOURCE_DIR}/README
225 INSTALL ( FILES ${tuxanci_docs} DESTINATION ${CMAKE_INSTALL_DOCDIR}/ )
226 ###############################################################################
227 # GOODBYE INFORMATIONS (VARIABLES SETTINGS)
228 ###############################################################################
229 MESSAGE ( STATUS "<Printing out environment settings>" )
230 MESSAGE ( STATUS "<******************************>" )
231 MESSAGE ( STATUS "CFlags: ${CMAKE_C_FLAGS}" )
232 MESSAGE ( STATUS "LDFLAGS: ${CMAKE_LINK_FLAGS}" )
233 MESSAGE ( STATUS "PREFIX: ${CMAKE_INSTALL_PREFIX}" )
234 MESSAGE ( STATUS "ETC directory: ${CMAKE_CONF_PATH}" )
235 MESSAGE ( STATUS "DOC directory: ${CMAKE_DOC_PATH}" )
236 MESSAGE ( STATUS "LOCALE directory: ${CMAKE_INSTALL_LOCALEDIR}" )
237 MESSAGE ( STATUS "DATA directory: ${CMAKE_INSTALL_DATADIR}" )
238 ###############################################################################