]> git.lizzy.rs Git - dragonfireclient.git/blob - src/CMakeLists.txt
-
[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         serverobject.cpp
54         noise.cpp
55         mineral.cpp
56         porting.cpp
57         materials.cpp
58         defaultsettings.cpp
59         mapnode.cpp
60         voxel.cpp
61         mapblockobject.cpp
62         inventory.cpp
63         debug.cpp
64         serialization.cpp
65         light.cpp
66         filesys.cpp
67         connection.cpp
68         environment.cpp
69         server.cpp
70         socket.cpp
71         mapblock.cpp
72         mapsector.cpp
73         map.cpp
74         player.cpp
75         utility.cpp
76         test.cpp
77 )
78
79 # Client sources
80 set(minetest_SRCS
81         ${common_SRCS}
82         clientobject.cpp
83         guiMainMenu.cpp
84         guiMessageMenu.cpp
85         guiTextInputMenu.cpp
86         guiInventoryMenu.cpp
87         guiPauseMenu.cpp
88         irrlichtwrapper.cpp
89         client.cpp
90         tile.cpp
91         main.cpp
92 )
93
94 # Server sources
95 set(minetestserver_SRCS
96         ${common_SRCS}
97         servermain.cpp
98 )
99
100 include_directories(
101         ${PROJECT_BINARY_DIR}
102         ${IRRLICHT_INCLUDE_DIR}
103         ${ZLIB_INCLUDE_DIR}
104         ${CMAKE_BUILD_TYPE}
105         ${PNG_INCLUDE_DIR}
106         "${PROJECT_SOURCE_DIR}/jthread"
107         "${PROJECT_SOURCE_DIR}/lua/src"
108 )
109
110 set(EXECUTABLE_OUTPUT_PATH ../bin)
111
112 if(BUILD_CLIENT)
113         add_executable(minetest ${minetest_SRCS})
114         target_link_libraries(
115                 minetest
116                 ${ZLIB_LIBRARIES}
117                 ${IRRLICHT_LIBRARY}
118                 ${OPENGL_LIBRARIES}
119                 ${JPEG_LIBRARIES}
120                 ${BZIP2_LIBRARIES}
121                 ${PNG_LIBRARIES}
122                 ${X11_LIBRARIES}
123                 ${PLATFORM_LIBS}
124                 ${CLIENT_PLATFORM_LIBS}
125                 jthread
126                 lua
127         )
128         #${CMAKE_CURRENT_SOURCE_DIR}/lua/build/liblua
129 endif(BUILD_CLIENT)
130
131 if(BUILD_SERVER)
132         add_executable(minetestserver ${minetestserver_SRCS})
133         target_link_libraries(
134                 minetestserver
135                 ${ZLIB_LIBRARIES}
136                 ${PLATFORM_LIBS}
137                 jthread
138                 lua
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\" /NODEFAULTLIB:\"libcmt.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_DEFINITIONS "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(USE_GPROF)
175                 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")
176         endif()
177         
178         if(BUILD_SERVER)
179                 set_target_properties(minetestserver PROPERTIES
180                                 COMPILE_DEFINITIONS "SERVER")
181         endif(BUILD_SERVER)
182
183 endif()
184
185 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
186 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
187
188 #
189 # Installation
190 #
191
192 # Example configuration file
193 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../minetest.conf.example" DESTINATION ${EXAMPLE_CONF_DIR})
194
195 install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../data/scripts" DESTINATION ${DATADIR})
196
197 if(BUILD_CLIENT)
198         install(TARGETS minetest DESTINATION ${BINDIR})
199
200         file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
201
202         install(FILES ${images} DESTINATION ${DATADIR})
203
204         if(WIN32)
205                 if(DEFINED IRRLICHT_DLL)
206                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
207                 endif()
208                 if(DEFINED ZLIB_DLL)
209                         install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
210                 endif()
211         endif()
212 endif(BUILD_CLIENT)
213
214 if(BUILD_SERVER)
215         install(TARGETS minetestserver DESTINATION ${BINDIR})
216 endif(BUILD_SERVER)
217
218 # Subdirectories
219
220 add_subdirectory(jthread)
221 add_subdirectory(lua)
222
223 #end