]> git.lizzy.rs Git - dragonfireclient.git/blob - src/CMakeLists.txt
Allow "all" to be specified in player config file for privileges
[dragonfireclient.git] / src / CMakeLists.txt
1 project(minetest)
2 cmake_minimum_required( VERSION 2.6 )
3
4 if(RUN_IN_PLACE)
5         add_definitions ( -DRUN_IN_PLACE )
6 endif(RUN_IN_PLACE)
7
8 if(NOT MSVC)
9         set(USE_GPROF 0 CACHE BOOL "Use -pg flag for g++")
10 endif()
11
12 # Use cmake_config.h
13 add_definitions ( -DUSE_CMAKE_CONFIG_H )
14
15 if(WIN32)
16         # Windows
17         if(MSVC) # MSVC Specifics
18                 # Surpress some useless warnings
19                 add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
20         else() # Probably MinGW = GCC
21                 set(PLATFORM_LIBS ws2_32.lib)
22         endif()
23         # Zlib stuff
24         set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
25                         CACHE PATH "Zlib include directory")
26         set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
27                         CACHE FILEPATH "Path to zlibwapi.lib")
28         set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
29                         CACHE FILEPATH "Path to zlibwapi.dll (for installation)")
30 else()
31         # Unix probably
32         if(BUILD_CLIENT)
33                 find_package(X11 REQUIRED)
34                 find_package(OpenGL REQUIRED)
35                 find_package(JPEG REQUIRED)
36                 find_package(BZip2 REQUIRED)
37                 find_package(PNG REQUIRED)
38         endif(BUILD_CLIENT)
39         find_package(ZLIB REQUIRED)
40         set(PLATFORM_LIBS -lpthread)
41         #set(CLIENT_PLATFORM_LIBS -lXxf86vm)
42         # This way Xxf86vm is found on OpenBSD too
43         find_library(XXF86VM_LIBRARY Xxf86vm)
44         set(CLIENT_PLATFORM_LIBS ${XXF86VM_LIBRARY})
45 endif()
46
47 configure_file(
48         "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
49         "${PROJECT_BINARY_DIR}/cmake_config.h"
50 )
51
52 set(common_SRCS
53         collision.cpp
54         nodemetadata.cpp
55         serverobject.cpp
56         noise.cpp
57         mineral.cpp
58         porting.cpp
59         materials.cpp
60         defaultsettings.cpp
61         mapnode.cpp
62         voxel.cpp
63         mapblockobject.cpp
64         inventory.cpp
65         debug.cpp
66         serialization.cpp
67         light.cpp
68         filesys.cpp
69         connection.cpp
70         environment.cpp
71         server.cpp
72         servercommand.cpp
73         socket.cpp
74         mapblock.cpp
75         mapsector.cpp
76         map.cpp
77         player.cpp
78         utility.cpp
79         test.cpp
80 )
81
82 # Client sources
83 set(minetest_SRCS
84         ${common_SRCS}
85         keycode.cpp
86         clouds.cpp
87         clientobject.cpp
88         guiFurnaceMenu.cpp
89         guiMainMenu.cpp
90         guiMessageMenu.cpp
91         guiTextInputMenu.cpp
92         guiInventoryMenu.cpp
93         guiPauseMenu.cpp
94         client.cpp
95         tile.cpp
96         game.cpp
97         main.cpp
98 )
99
100 # Server sources
101 set(minetestserver_SRCS
102         ${common_SRCS}
103         servermain.cpp
104 )
105
106 include_directories(
107         ${PROJECT_BINARY_DIR}
108         ${IRRLICHT_INCLUDE_DIR}
109         ${ZLIB_INCLUDE_DIR}
110         ${CMAKE_BUILD_TYPE}
111         ${PNG_INCLUDE_DIR}
112         "${PROJECT_SOURCE_DIR}/jthread"
113 )
114
115 set(EXECUTABLE_OUTPUT_PATH ../bin)
116
117 if(BUILD_CLIENT)
118         add_executable(minetest ${minetest_SRCS})
119         target_link_libraries(
120                 minetest
121                 ${ZLIB_LIBRARIES}
122                 ${IRRLICHT_LIBRARY}
123                 ${OPENGL_LIBRARIES}
124                 ${JPEG_LIBRARIES}
125                 ${BZIP2_LIBRARIES}
126                 ${PNG_LIBRARIES}
127                 ${X11_LIBRARIES}
128                 ${PLATFORM_LIBS}
129                 ${CLIENT_PLATFORM_LIBS}
130                 jthread
131         )
132 endif(BUILD_CLIENT)
133
134 if(BUILD_SERVER)
135         add_executable(minetestserver ${minetestserver_SRCS})
136         target_link_libraries(
137                 minetestserver
138                 ${ZLIB_LIBRARIES}
139                 ${PLATFORM_LIBS}
140                 jthread
141         )
142 endif(BUILD_SERVER)
143
144 #
145 # Set some optimizations and tweaks
146 #
147
148 if(MSVC)
149         # Visual Studio
150
151         # EHa enables SEH exceptions (used for catching segfaults)
152         set(CMAKE_CXX_FLAGS_RELEASE "/EHa /MD /O2 /Ob2 /Oi /Ot /Oy /GL /FD /MT /GS- /arch:SSE /fp:fast /D NDEBUG /D _HAS_ITERATOR_DEBUGGING=0 /TP")
153         #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
154         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
155
156         # Debug build doesn't catch exceptions by itself
157         # Add some optimizations because otherwise it's VERY slow
158         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
159         
160         if(BUILD_SERVER)
161                 set_target_properties(minetestserver PROPERTIES
162                                 COMPILE_DEFINITIONS "SERVER")
163         endif(BUILD_SERVER)
164
165 else()
166         # Probably GCC
167         
168         if(WARN_ALL)
169                 set(WARNING_FLAGS "-Wall")
170         else()
171                 set(WARNING_FLAGS "")
172         endif()
173
174         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
175         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall")
176
177         if(USE_GPROF)
178                 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
179         endif()
180         
181         if(BUILD_SERVER)
182                 set_target_properties(minetestserver PROPERTIES
183                                 COMPILE_DEFINITIONS "SERVER")
184         endif(BUILD_SERVER)
185
186 endif()
187
188 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
189 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
190
191 #
192 # Installation
193 #
194
195 # Example configuration file
196 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../minetest.conf.example" DESTINATION ${EXAMPLE_CONF_DIR})
197
198 if(BUILD_CLIENT)
199         install(TARGETS minetest DESTINATION ${BINDIR})
200
201         file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
202
203         install(FILES ${images} DESTINATION ${DATADIR})
204
205         if(WIN32)
206                 if(DEFINED IRRLICHT_DLL)
207                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
208                 endif()
209                 if(DEFINED ZLIB_DLL)
210                         install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
211                 endif()
212         endif()
213 endif(BUILD_CLIENT)
214
215 if(BUILD_SERVER)
216         install(TARGETS minetestserver DESTINATION ${BINDIR})
217 endif(BUILD_SERVER)
218
219 # Subdirectories
220
221 add_subdirectory(jthread)
222
223 #end