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