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