]> git.lizzy.rs Git - dragonfireclient.git/blob - src/CMakeLists.txt
added a delay to menu loop
[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         sha1.cpp
99         base64.cpp
100 )
101
102 # Server sources
103 set(minetestserver_SRCS
104         ${common_SRCS}
105         servermain.cpp
106 )
107
108 include_directories(
109         ${PROJECT_BINARY_DIR}
110         ${IRRLICHT_INCLUDE_DIR}
111         ${ZLIB_INCLUDE_DIR}
112         ${CMAKE_BUILD_TYPE}
113         ${PNG_INCLUDE_DIR}
114         "${PROJECT_SOURCE_DIR}/jthread"
115 )
116
117 set(EXECUTABLE_OUTPUT_PATH ../bin)
118
119 if(BUILD_CLIENT)
120         add_executable(minetest ${minetest_SRCS})
121         target_link_libraries(
122                 minetest
123                 ${ZLIB_LIBRARIES}
124                 ${IRRLICHT_LIBRARY}
125                 ${OPENGL_LIBRARIES}
126                 ${JPEG_LIBRARIES}
127                 ${BZIP2_LIBRARIES}
128                 ${PNG_LIBRARIES}
129                 ${X11_LIBRARIES}
130                 ${PLATFORM_LIBS}
131                 ${CLIENT_PLATFORM_LIBS}
132                 jthread
133         )
134 endif(BUILD_CLIENT)
135
136 if(BUILD_SERVER)
137         add_executable(minetestserver ${minetestserver_SRCS})
138         target_link_libraries(
139                 minetestserver
140                 ${ZLIB_LIBRARIES}
141                 ${PLATFORM_LIBS}
142                 jthread
143         )
144 endif(BUILD_SERVER)
145
146 #
147 # Set some optimizations and tweaks
148 #
149
150 if(MSVC)
151         # Visual Studio
152
153         # EHa enables SEH exceptions (used for catching segfaults)
154         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")
155         #set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\" /NODEFAULTLIB:\"libcmt.lib\"")
156         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG")
157
158         # Debug build doesn't catch exceptions by itself
159         # Add some optimizations because otherwise it's VERY slow
160         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
161         
162         if(BUILD_SERVER)
163                 set_target_properties(minetestserver PROPERTIES
164                                 COMPILE_DEFINITIONS "SERVER")
165         endif(BUILD_SERVER)
166
167 else()
168         # Probably GCC
169         
170         if(WARN_ALL)
171                 set(WARNING_FLAGS "-Wall")
172         else()
173                 set(WARNING_FLAGS "")
174         endif()
175
176         set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-unused-but-set-variable")
177
178         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
179         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall")
180
181         if(USE_GPROF)
182                 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
183         endif()
184         
185         if(BUILD_SERVER)
186                 set_target_properties(minetestserver PROPERTIES
187                                 COMPILE_DEFINITIONS "SERVER")
188         endif(BUILD_SERVER)
189
190 endif()
191
192 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
193 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
194
195 #
196 # Installation
197 #
198
199 # Example configuration file
200 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../minetest.conf.example" DESTINATION ${EXAMPLE_CONF_DIR})
201
202 if(BUILD_CLIENT)
203         install(TARGETS minetest DESTINATION ${BINDIR})
204
205         file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
206
207         install(FILES ${images} DESTINATION ${DATADIR})
208
209         if(WIN32)
210                 if(DEFINED IRRLICHT_DLL)
211                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
212                 endif()
213                 if(DEFINED ZLIB_DLL)
214                         install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
215                 endif()
216         endif()
217 endif(BUILD_CLIENT)
218
219 if(BUILD_SERVER)
220         install(TARGETS minetestserver DESTINATION ${BINDIR})
221 endif(BUILD_SERVER)
222
223 # Subdirectories
224
225 add_subdirectory(jthread)
226
227 #end