1 cmake_minimum_required(VERSION 3.12)
6 set(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deps/")
8 if(NOT CMAKE_BUILD_TYPE)
9 set(CMAKE_BUILD_TYPE Debug)
12 if(NOT RESSOURCE_PATH)
13 set(RESSOURCE_PATH "../")
18 find_package(OpenGL REQUIRED)
20 if(NOT GLEW_LIBRARIES OR NOT GLEW_INCLUDE_DIRS)
21 find_package(GLEW REQUIRED)
24 if(NOT GLFW_LIBRARIES OR NOT GLFW_INCLUDE_DIRS)
25 find_package(glfw3 3.3 REQUIRED)
26 set(GLFW_LIBRARIES glfw)
27 set(GLFW_INCLUDE_DIRS)
30 if(NOT FREETYPE_LIBRARIES OR NOT FREETYPE_INCLUDE_DIRS)
31 find_package(Freetype REQUIRED)
34 if(NOT ZLIB_LIBRARIES OR NOT ZLIB_INCLUDE_DIRS)
35 find_package(ZLIB REQUIRED)
36 set(ZLIB_LIBRARIES ZLIB::ZLIB)
37 set(ZLIB_INCLUDE_DIRS)
42 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
43 add_compile_definitions("ENABLE_GL_DEBUG")
46 add_compile_definitions("USE_DRAGONNET")
47 add_compile_definitions("RESSOURCE_PATH=\"${RESSOURCE_PATH}\"")
49 add_compile_options(-Wall -Wextra -Werror -Wno-address-of-packed-member -Wno-implicit-fallthrough -Wno-unused-parameter -Wno-maybe-uninitialized -fmax-errors=4)
57 include_directories(SYSTEM ${DEPS_DIR})
58 include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
59 include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
60 include_directories(${ZLIB_INCLUDE_DIRS})
62 # System specific options
64 if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
65 link_directories("/usr/local/lib")
66 include_directories("/usr/local/include")
69 if("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
70 link_directories("/usr/X11R6/lib")
71 include_directories("/usr/X11R6/include")
77 "${CMAKE_CURRENT_BINARY_DIR}/types.c"
78 "${DEPS_DIR}/asprintf/asprintf.c"
79 "${DEPS_DIR}/dragonnet/addr.c"
80 "${DEPS_DIR}/dragonnet/listen.c"
81 "${DEPS_DIR}/dragonnet/peer.c"
82 "${DEPS_DIR}/dragonnet/recv.c"
83 "${DEPS_DIR}/dragonnet/recv_thread.c"
84 "${DEPS_DIR}/dragonnet/send.c"
85 "${DEPS_DIR}/dragonstd/array.c"
86 "${DEPS_DIR}/dragonstd/flag.c"
87 "${DEPS_DIR}/dragonstd/list.c"
88 "${DEPS_DIR}/dragonstd/map.c"
89 "${DEPS_DIR}/dragonstd/queue.c"
90 "${DEPS_DIR}/dragonstd/refcount.c"
91 "${DEPS_DIR}/dragonstd/tree.c"
92 "${DEPS_DIR}/dragonstd/bits/compare.c"
93 "${DEPS_DIR}/getline/getline.c"
94 "${DEPS_DIR}/linenoise/linenoise.c"
95 "${DEPS_DIR}/linenoise/stringbuf.c"
96 "${DEPS_DIR}/linenoise/utf8.c"
97 "${DEPS_DIR}/perlin/perlin.c"
113 add_executable(dragonblocks
118 client/client_config.c
119 client/client_entity.c
120 client/client_inventory.c
123 client/client_player.c
124 client/client_terrain.c
147 target_link_libraries(dragonblocks
151 ${FREETYPE_LIBRARIES}
154 target_include_directories(dragonblocks PUBLIC
157 ${FREETYPE_INCLUDE_DIRS}
162 add_executable(dragonblocks_server
168 server/server_config.c
171 server/server_player.c
172 server/server_terrain.c
175 server/tree_physics.c
176 server/voxel_depth_search.c
177 server/voxel_procedural.c
180 target_link_libraries(dragonblocks_server
186 add_custom_target(version
187 COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
188 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
191 add_dependencies(dragonblocks version)
192 add_dependencies(dragonblocks_server version)
197 OUTPUT types.c types.h
198 MAIN_DEPENDENCY types.def
199 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
200 COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
201 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
204 add_custom_target(types
205 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
208 add_dependencies(dragonblocks types)
209 add_dependencies(dragonblocks_server types)