1 cmake_minimum_required(VERSION 3.14)
6 set(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deps")
8 if(NOT CMAKE_BUILD_TYPE)
9 set(CMAKE_BUILD_TYPE Debug)
13 set(ASSET_PATH "../assets/")
18 set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
20 set(SKIP_INSTALL_ALL ON)
21 set(BUILD_SHARED_LIBS OFF)
23 set(ZLIB_LIBRARY zlibstatic)
24 set(ZLIB_INCLUDE_DIR "${DEPS_DIR}/zlib")
26 set(FT_DISABLE_ZLIB OFF)
27 set(FT_DISABLE_BZIP2 ON)
28 set(FT_DISABLE_PNG ON)
29 set(FT_DISABLE_HARFBUZZ ON)
30 set(FT_DISABLE_BROTLI ON)
32 add_subdirectory("${DEPS_DIR}/glfw" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/glfw")
33 add_subdirectory("${DEPS_DIR}/glew-cmake" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/glew")
34 add_subdirectory("${DEPS_DIR}/sqlite3-cmake" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/sqlite3")
35 add_subdirectory("${DEPS_DIR}/perlin" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/perlin")
36 add_subdirectory("${DEPS_DIR}/asprintf" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/asprintf")
37 add_subdirectory("${DEPS_DIR}/dragonnet" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/dragonnet")
38 add_subdirectory("${DEPS_DIR}/dragonstd" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/dragonstd")
39 add_subdirectory("${DEPS_DIR}/getline" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/getline")
40 add_subdirectory("${DEPS_DIR}/stpcpy" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/stpcpy")
41 add_subdirectory("${DEPS_DIR}/linenoise" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/linenoise")
42 add_subdirectory("${DEPS_DIR}/zlib" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/zlib")
43 add_subdirectory("${DEPS_DIR}/freetype" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/freetype")
47 if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
48 add_compile_definitions("ENABLE_GL_DEBUG")
51 add_compile_definitions("USE_DRAGONNET")
52 add_compile_definitions("GLEW_STATIC")
53 add_compile_definitions("ASSET_PATH=\"${ASSET_PATH}\"")
54 add_compile_definitions("__USE_MINGW_ANSI_STDIO")
60 -Wno-address-of-packed-member
64 # System specific options
66 if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
67 link_directories("/usr/local/lib")
68 include_directories("/usr/local/include")
71 if("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
72 link_directories("/usr/X11R6/lib")
73 include_directories("/usr/X11R6/include")
78 add_library(dragonblocks
79 "${CMAKE_CURRENT_BINARY_DIR}/types.c"
93 target_include_directories(dragonblocks
94 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
95 PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
96 PUBLIC "${DEPS_DIR}/linmath.h"
97 PUBLIC "${DEPS_DIR}/endian.h"
98 PUBLIC "${DEPS_DIR}/stb"
101 target_link_libraries(dragonblocks
104 PUBLIC ${CMAKE_DL_LIBS}
115 add_executable(dragonblocks_client
119 client/client_config.c
120 client/client_entity.c
121 client/client_inventory.c
124 client/client_player.c
125 client/client_terrain.c
148 target_link_libraries(dragonblocks_client
150 PUBLIC libglew_static
159 add_executable(dragonblocks_server
164 server/server_config.c
167 server/server_player.c
168 server/server_terrain.c
171 server/tree_physics.c
172 server/voxel_depth_search.c
173 server/voxel_procedural.c
176 target_link_libraries(dragonblocks_server
183 add_custom_target(version
184 COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
185 WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
188 add_dependencies(dragonblocks version)
193 OUTPUT types.c types.h
194 MAIN_DEPENDENCY types.def
195 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
196 COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
197 WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
200 add_custom_target(types
201 DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
204 add_dependencies(dragonblocks types)