]> git.lizzy.rs Git - minetest.git/blob - src/CMakeLists.txt
Faster lighting at map generation time
[minetest.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 # Use cmake_config.h
9 add_definitions ( -DUSE_CMAKE_CONFIG_H )
10
11 if(WIN32)
12         # Windows
13         # Surpress some useless warnings
14         add_definitions ( /D "_CRT_SECURE_NO_DEPRECATE" /W1 )
15         # Zlib stuff
16         set(ZLIB_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/../../zlib/zlib-1.2.5"
17                         CACHE PATH "Zlib include directory")
18         set(ZLIB_LIBRARIES "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.lib"
19                         CACHE PATH "Path to zlibwapi.lib")
20         set(ZLIB_DLL "${PROJECT_SOURCE_DIR}/../../zlib125dll/dll32/zlibwapi.dll"
21                         CACHE PATH "Path to zlibwapi.dll (for installation)")
22 else()
23         # Unix probably
24         if(BUILD_CLIENT)
25                 find_package(X11 REQUIRED)
26                 find_package(OpenGL REQUIRED)
27                 find_package(JPEG REQUIRED)
28                 find_package(BZip2 REQUIRED)
29                 find_package(PNG REQUIRED)
30         endif(BUILD_CLIENT)
31         find_package(ZLIB REQUIRED)
32         set(PLATFORM_LIBS -lpthread)
33         set(CLIENT_PLATFORM_LIBS -lXxf86vm)
34 endif()
35
36 configure_file(
37         "${PROJECT_SOURCE_DIR}/cmake_config.h.in"
38         "${PROJECT_BINARY_DIR}/cmake_config.h"
39 )
40
41 set(minetest_SRCS
42         guiMainMenu.cpp
43         porting.cpp
44         guiMessageMenu.cpp
45         materials.cpp
46         guiTextInputMenu.cpp
47         guiInventoryMenu.cpp
48         irrlichtwrapper.cpp
49         guiPauseMenu.cpp
50         defaultsettings.cpp
51         mapnode.cpp
52         tile.cpp
53         voxel.cpp
54         mapblockobject.cpp
55         inventory.cpp
56         debug.cpp
57         serialization.cpp
58         light.cpp
59         filesys.cpp
60         connection.cpp
61         environment.cpp
62         client.cpp
63         server.cpp
64         socket.cpp
65         mapblock.cpp
66         mapsector.cpp
67         heightmap.cpp
68         map.cpp
69         player.cpp
70         utility.cpp
71         main.cpp
72         test.cpp
73 )
74
75 set(minetestserver_SRCS
76         porting.cpp
77         materials.cpp
78         defaultsettings.cpp
79         mapnode.cpp
80         voxel.cpp
81         mapblockobject.cpp
82         inventory.cpp
83         debug.cpp
84         serialization.cpp
85         light.cpp
86         filesys.cpp
87         connection.cpp
88         environment.cpp
89         server.cpp
90         socket.cpp
91         mapblock.cpp
92         mapsector.cpp
93         heightmap.cpp
94         map.cpp
95         player.cpp
96         utility.cpp
97         servermain.cpp
98         test.cpp
99 )
100
101 include_directories(
102         ${PROJECT_BINARY_DIR}
103         ${IRRLICHT_INCLUDE_DIR}
104         ${ZLIB_INCLUDE_DIR}
105         ${CMAKE_BUILD_TYPE}
106         "${PROJECT_SOURCE_DIR}/jthread"
107         ${PNG_INCLUDE_DIR}
108 )
109
110 set(EXECUTABLE_OUTPUT_PATH ../bin)
111
112 set(JTHREAD_LIBRARIES "jthread")
113 set(JTHREAD_SRCS "")
114
115 if(BUILD_CLIENT)
116         add_executable(minetest ${minetest_SRCS} ${JTHREAD_SRCS})
117         target_link_libraries(
118                 minetest
119                 ${ZLIB_LIBRARIES}
120                 ${IRRLICHT_LIBRARY}
121                 ${OPENGL_LIBRARIES}
122                 ${JPEG_LIBRARIES}
123                 ${BZIP2_LIBRARIES}
124                 ${PNG_LIBRARIES}
125                 ${X11_LIBRARIES}
126                 ${JTHREAD_LIBRARIES}
127                 ${PLATFORM_LIBS}
128                 ${CLIENT_PLATFORM_LIBS}
129         )
130 endif(BUILD_CLIENT)
131
132 if(BUILD_SERVER)
133         add_executable(minetestserver ${minetestserver_SRCS} ${JTHREAD_SRCS})
134         target_link_libraries(
135                 minetestserver
136                 ${ZLIB_LIBRARIES}
137                 ${JTHREAD_LIBRARIES}
138                 ${PLATFORM_LIBS}
139         )
140 endif(BUILD_SERVER)
141
142 #
143 # Set some optimizations and tweaks
144 #
145
146 if(MSVC)
147         # Visual Studio
148
149         # EHa enables SEH exceptions (used for catching segfaults)
150         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")
151         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\"")
152
153         # Debug build doesn't catch exceptions by itself
154         # Add some optimizations because otherwise it's VERY slow
155         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
156         
157         if(BUILD_SERVER)
158                 set_target_properties(minetestserver PROPERTIES
159                                 COMPILE_FLAGS "/D SERVER")
160         endif(BUILD_SERVER)
161
162 else()
163         # Probably GCC
164         
165         if(WARN_ALL)
166                 set(WARNING_FLAGS "-Wall")
167         else()
168                 set(WARNING_FLAGS "")
169         endif()
170
171         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
172         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall")
173         
174         if(BUILD_SERVER)
175                 set_target_properties(minetestserver PROPERTIES
176                                 COMPILE_FLAGS "-DSERVER")
177         endif(BUILD_SERVER)
178
179 endif()
180
181 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
182 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
183
184 #
185 # Installation
186 #
187
188 if(BUILD_CLIENT)
189         install(TARGETS minetest DESTINATION ${BINDIR})
190
191         file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
192
193         install(FILES ${images} DESTINATION ${DATADIR})
194
195         if(WIN32)
196                 if(DEFINED IRRLICHT_DLL)
197                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
198                 endif()
199                 if(DEFINED ZLIB_DLL)
200                         install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
201                 endif()
202         endif()
203 endif(BUILD_CLIENT)
204
205 if(BUILD_SERVER)
206         install(TARGETS minetestserver DESTINATION ${BINDIR})
207 endif(BUILD_SERVER)
208
209 # Subdirectories
210
211 add_subdirectory(jthread)
212
213 #end