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