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 -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}/linenoise/linenoise.c"
94 "${DEPS_DIR}/linenoise/stringbuf.c"
95 "${DEPS_DIR}/linenoise/utf8.c"
96 "${DEPS_DIR}/perlin/perlin.c"
112 add_executable(dragonblocks
117 client/client_config.c
118 client/client_entity.c
119 client/client_inventory.c
122 client/client_player.c
123 client/client_terrain.c
146 target_link_libraries(dragonblocks
150 ${FREETYPE_LIBRARIES}
153 target_include_directories(dragonblocks PUBLIC
156 ${FREETYPE_INCLUDE_DIRS}
161 add_executable(dragonblocks_server
167 server/server_config.c
170 server/server_player.c
171 server/server_terrain.c
174 server/tree_physics.c
175 server/voxel_depth_search.c
176 server/voxel_procedural.c
179 target_link_libraries(dragonblocks_server
185 add_custom_target(version
186 COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
187 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
190 add_dependencies(dragonblocks version)
191 add_dependencies(dragonblocks_server version)
196 OUTPUT types.c types.h
197 MAIN_DEPENDENCY types.def
198 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
199 COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
200 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
203 add_custom_target(types
204 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
207 add_dependencies(dragonblocks types)
208 add_dependencies(dragonblocks_server types)