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