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