]> git.lizzy.rs Git - dragonfireclient.git/blob - src/CMakeLists.txt
added sand to map generator
[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 # 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(common_SRCS
42         noise.cpp
43         mineral.cpp
44         porting.cpp
45         materials.cpp
46         defaultsettings.cpp
47         mapnode.cpp
48         voxel.cpp
49         mapblockobject.cpp
50         inventory.cpp
51         debug.cpp
52         serialization.cpp
53         light.cpp
54         filesys.cpp
55         connection.cpp
56         environment.cpp
57         server.cpp
58         socket.cpp
59         mapblock.cpp
60         mapsector.cpp
61         heightmap.cpp
62         map.cpp
63         player.cpp
64         utility.cpp
65         test.cpp
66 )
67
68 set(minetest_SRCS
69         ${common_SRCS}
70         guiMainMenu.cpp
71         guiMessageMenu.cpp
72         guiTextInputMenu.cpp
73         guiInventoryMenu.cpp
74         guiPauseMenu.cpp
75         irrlichtwrapper.cpp
76         client.cpp
77         main.cpp
78 )
79
80 set(minetestserver_SRCS
81         ${common_SRCS}
82         servermain.cpp
83 )
84
85 include_directories(
86         ${PROJECT_BINARY_DIR}
87         ${IRRLICHT_INCLUDE_DIR}
88         ${ZLIB_INCLUDE_DIR}
89         ${CMAKE_BUILD_TYPE}
90         "${PROJECT_SOURCE_DIR}/jthread"
91         ${PNG_INCLUDE_DIR}
92 )
93
94 set(EXECUTABLE_OUTPUT_PATH ../bin)
95
96 set(JTHREAD_LIBRARIES "jthread")
97 set(JTHREAD_SRCS "")
98
99 if(BUILD_CLIENT)
100         add_executable(minetest ${minetest_SRCS} ${JTHREAD_SRCS})
101         target_link_libraries(
102                 minetest
103                 ${ZLIB_LIBRARIES}
104                 ${IRRLICHT_LIBRARY}
105                 ${OPENGL_LIBRARIES}
106                 ${JPEG_LIBRARIES}
107                 ${BZIP2_LIBRARIES}
108                 ${PNG_LIBRARIES}
109                 ${X11_LIBRARIES}
110                 ${JTHREAD_LIBRARIES}
111                 ${PLATFORM_LIBS}
112                 ${CLIENT_PLATFORM_LIBS}
113         )
114 endif(BUILD_CLIENT)
115
116 if(BUILD_SERVER)
117         add_executable(minetestserver ${minetestserver_SRCS} ${JTHREAD_SRCS})
118         target_link_libraries(
119                 minetestserver
120                 ${ZLIB_LIBRARIES}
121                 ${JTHREAD_LIBRARIES}
122                 ${PLATFORM_LIBS}
123         )
124 endif(BUILD_SERVER)
125
126 #
127 # Set some optimizations and tweaks
128 #
129
130 if(MSVC)
131         # Visual Studio
132
133         # EHa enables SEH exceptions (used for catching segfaults)
134         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")
135         set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /NODEFAULTLIB:\"libcmtd.lib\"")
136
137         # Debug build doesn't catch exceptions by itself
138         # Add some optimizations because otherwise it's VERY slow
139         set(CMAKE_CXX_FLAGS_DEBUG "/MDd /Zi /Ob0 /Od /RTC1")
140         
141         if(BUILD_SERVER)
142                 set_target_properties(minetestserver PROPERTIES
143                                 COMPILE_FLAGS "/D SERVER")
144         endif(BUILD_SERVER)
145
146 else()
147         # Probably GCC
148         
149         if(WARN_ALL)
150                 set(WARNING_FLAGS "-Wall")
151         else()
152                 set(WARNING_FLAGS "")
153         endif()
154
155         set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
156         set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall")
157         
158         if(BUILD_SERVER)
159                 set_target_properties(minetestserver PROPERTIES
160                                 COMPILE_FLAGS "-DSERVER")
161         endif(BUILD_SERVER)
162
163 endif()
164
165 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}")
166 #MESSAGE(STATUS "CMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}")
167
168 #
169 # Installation
170 #
171
172 if(BUILD_CLIENT)
173         install(TARGETS minetest DESTINATION ${BINDIR})
174
175         file(GLOB images "${CMAKE_CURRENT_SOURCE_DIR}/../data/*.png")
176
177         install(FILES ${images} DESTINATION ${DATADIR})
178
179         if(WIN32)
180                 if(DEFINED IRRLICHT_DLL)
181                         install(FILES ${IRRLICHT_DLL} DESTINATION ${BINDIR})
182                 endif()
183                 if(DEFINED ZLIB_DLL)
184                         install(FILES ${ZLIB_DLL} DESTINATION ${BINDIR})
185                 endif()
186         endif()
187 endif(BUILD_CLIENT)
188
189 if(BUILD_SERVER)
190         install(TARGETS minetestserver DESTINATION ${BINDIR})
191 endif(BUILD_SERVER)
192
193 # Subdirectories
194
195 add_subdirectory(jthread)
196
197 #end