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)
19 find_package(GLEW REQUIRED)
20 find_package(glfw3 3.3 REQUIRED)
21 find_package(Freetype REQUIRED)
25 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
26 add_compile_definitions("ENABLE_GL_DEBUG")
29 add_compile_definitions("USE_DRAGONNET")
30 add_compile_definitions("RESSOURCE_PATH=\"${RESSOURCE_PATH}\"")
32 add_compile_options(-Wall -Wextra -Werror -Wno-address-of-packed-member -fmax-errors=4)
40 include_directories(SYSTEM ${DEPS_DIR})
41 include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
42 include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
44 # System specific options
46 if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
47 link_directories("/usr/local/lib")
48 include_directories("/usr/local/include")
51 if("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
52 link_directories("/usr/X11R6/lib")
53 include_directories("/usr/X11R6/include")
59 "${CMAKE_CURRENT_BINARY_DIR}/types.c"
60 "${DEPS_DIR}/asprintf/asprintf.c"
61 "${DEPS_DIR}/dragonnet/addr.c"
62 "${DEPS_DIR}/dragonnet/listen.c"
63 "${DEPS_DIR}/dragonnet/peer.c"
64 "${DEPS_DIR}/dragonnet/recv.c"
65 "${DEPS_DIR}/dragonnet/recv_thread.c"
66 "${DEPS_DIR}/dragonnet/send.c"
67 "${DEPS_DIR}/dragonstd/array.c"
68 "${DEPS_DIR}/dragonstd/flag.c"
69 "${DEPS_DIR}/dragonstd/list.c"
70 "${DEPS_DIR}/dragonstd/map.c"
71 "${DEPS_DIR}/dragonstd/queue.c"
72 "${DEPS_DIR}/dragonstd/refcount.c"
73 "${DEPS_DIR}/dragonstd/tree.c"
74 "${DEPS_DIR}/dragonstd/bits/compare.c"
75 "${DEPS_DIR}/linenoise/linenoise.c"
76 "${DEPS_DIR}/perlin/perlin.c"
92 add_executable(dragonblocks
97 client/client_config.c
98 client/client_entity.c
99 client/client_inventory.c
102 client/client_player.c
103 client/client_terrain.c
126 target_link_libraries(dragonblocks
130 ${FREETYPE_LIBRARIES}
133 target_include_directories(dragonblocks PUBLIC
134 ${FREETYPE_INCLUDE_DIRS}
139 add_executable(dragonblocks_server
145 server/server_config.c
148 server/server_player.c
149 server/server_terrain.c
152 server/tree_physics.c
153 server/voxel_depth_search.c
154 server/voxel_procedural.c
157 target_link_libraries(dragonblocks_server
163 add_custom_target(version
164 COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
165 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
168 add_dependencies(dragonblocks version)
169 add_dependencies(dragonblocks_server version)
174 OUTPUT types.c types.h
175 MAIN_DEPENDENCY types.def
176 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
177 COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
178 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
181 add_custom_target(types
182 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
185 add_dependencies(dragonblocks types)
186 add_dependencies(dragonblocks_server types)