dragonblocks_alpha/src/CMakeLists.txt

205 lines
4.9 KiB
CMake
Raw Normal View History

2022-04-25 03:43:59 -07:00
cmake_minimum_required(VERSION 3.14)
2021-07-16 04:45:24 -07:00
project(Dragonblocks)
2022-02-12 14:17:32 -08:00
# Variables
2022-04-25 03:43:59 -07:00
set(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deps")
2022-02-12 14:17:32 -08:00
2021-07-16 04:45:24 -07:00
if(NOT CMAKE_BUILD_TYPE)
2022-02-12 14:17:32 -08:00
set(CMAKE_BUILD_TYPE Debug)
2021-07-16 04:45:24 -07:00
endif()
2022-04-25 03:43:59 -07:00
if(NOT ASSET_PATH)
set(ASSET_PATH "../assets/")
2022-02-12 14:17:32 -08:00
endif()
# Dependencies
2022-04-25 06:45:50 -07:00
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
2022-04-25 03:43:59 -07:00
set(SKIP_INSTALL_ALL ON)
set(BUILD_SHARED_LIBS OFF)
2022-04-25 06:45:50 -07:00
2022-04-25 03:43:59 -07:00
set(ZLIB_LIBRARY zlibstatic)
2022-04-25 06:45:50 -07:00
set(ZLIB_INCLUDE_DIR "${DEPS_DIR}/zlib")
2022-04-25 03:43:59 -07:00
set(FT_DISABLE_ZLIB OFF)
set(FT_DISABLE_BZIP2 ON)
set(FT_DISABLE_PNG ON)
set(FT_DISABLE_HARFBUZZ ON)
set(FT_DISABLE_BROTLI ON)
add_subdirectory("${DEPS_DIR}/glfw" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/glfw")
add_subdirectory("${DEPS_DIR}/glew-cmake" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/glew")
add_subdirectory("${DEPS_DIR}/sqlite3-cmake" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/sqlite3")
add_subdirectory("${DEPS_DIR}/perlin" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/perlin")
add_subdirectory("${DEPS_DIR}/asprintf" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/asprintf")
add_subdirectory("${DEPS_DIR}/dragonnet" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/dragonnet")
add_subdirectory("${DEPS_DIR}/dragonstd" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/dragonstd")
add_subdirectory("${DEPS_DIR}/getline" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/getline")
add_subdirectory("${DEPS_DIR}/stpcpy" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/stpcpy")
add_subdirectory("${DEPS_DIR}/linenoise" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/linenoise")
add_subdirectory("${DEPS_DIR}/zlib" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/zlib")
add_subdirectory("${DEPS_DIR}/freetype" EXCLUDE_FROM_ALL "${CMAKE_CURRENT_BINARY_DIR}/freetype")
2022-02-12 14:17:32 -08:00
# Options
2022-04-17 04:35:41 -07:00
if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
add_compile_definitions("ENABLE_GL_DEBUG")
endif()
2022-02-12 14:17:32 -08:00
add_compile_definitions("USE_DRAGONNET")
2022-04-25 03:43:59 -07:00
add_compile_definitions("GLEW_STATIC")
add_compile_definitions("ASSET_PATH=\"${ASSET_PATH}\"")
2022-04-25 07:45:24 -07:00
add_compile_definitions("__USE_MINGW_ANSI_STDIO")
2022-04-25 03:43:59 -07:00
add_compile_options(
-Wall
-Wextra
-Werror
-Wno-address-of-packed-member
-fmax-errors=4
2021-07-16 04:45:24 -07:00
)
2022-02-12 14:17:32 -08:00
# System specific options
2021-07-16 04:45:24 -07:00
2022-04-17 04:35:41 -07:00
if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
2021-10-29 11:38:01 -07:00
link_directories("/usr/local/lib")
include_directories("/usr/local/include")
endif()
2022-04-17 04:35:41 -07:00
if("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
2021-10-29 11:06:00 -07:00
link_directories("/usr/X11R6/lib")
include_directories("/usr/X11R6/include")
endif()
2022-02-12 14:17:32 -08:00
# Common sources
2021-07-16 04:45:24 -07:00
2022-04-25 03:43:59 -07:00
add_library(dragonblocks
"${CMAKE_CURRENT_BINARY_DIR}/types.c"
2022-04-25 03:43:59 -07:00
common/color.c
common/config.c
common/day.c
common/environment.c
common/facedir.c
common/interrupt.c
common/item.c
common/node.c
common/perlin.c
common/physics.c
common/terrain.c
)
target_include_directories(dragonblocks
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
PUBLIC "${DEPS_DIR}/linmath.h"
PUBLIC "${DEPS_DIR}/endian.h"
PUBLIC "${DEPS_DIR}/stb"
)
target_link_libraries(dragonblocks
PUBLIC pthread
PUBLIC m
2022-04-25 07:08:06 -07:00
PUBLIC ${CMAKE_DL_LIBS}
2022-04-25 03:43:59 -07:00
PUBLIC perlin
PUBLIC dragonnet
PUBLIC dragonstd
PUBLIC getline
PUBLIC zlibstatic
PUBLIC stpcpy
2021-07-16 04:45:24 -07:00
)
2022-02-12 14:17:32 -08:00
# Client
2022-04-25 03:43:59 -07:00
add_executable(dragonblocks_client
2021-07-16 04:45:24 -07:00
client/camera.c
client/client.c
2022-02-12 14:17:32 -08:00
client/client_auth.c
client/client_config.c
2022-04-15 14:45:01 -07:00
client/client_entity.c
2022-04-19 14:30:07 -07:00
client/client_inventory.c
client/client_item.c
2021-07-16 04:45:24 -07:00
client/client_node.c
client/client_player.c
2022-04-15 14:45:01 -07:00
client/client_terrain.c
2021-07-16 04:45:24 -07:00
client/cube.c
2021-08-24 12:22:32 -07:00
client/debug_menu.c
client/facecache.c
2021-07-16 04:45:24 -07:00
client/font.c
2021-10-01 03:47:27 -07:00
client/frustum.c
2021-07-16 04:45:24 -07:00
client/game.c
2021-09-25 06:16:58 -07:00
client/gui.c
2021-07-16 04:45:24 -07:00
client/input.c
2022-04-18 13:18:40 -07:00
client/interact.c
2022-04-17 04:35:41 -07:00
client/light.c
2021-07-16 04:45:24 -07:00
client/mesh.c
2022-04-15 14:45:01 -07:00
client/model.c
client/opengl.c
2022-04-18 13:18:40 -07:00
client/raycast.c
2022-04-19 14:30:07 -07:00
client/screenshot.c
2021-07-16 04:45:24 -07:00
client/shader.c
2021-09-26 09:22:49 -07:00
client/sky.c
2022-04-15 14:45:01 -07:00
client/terrain_gfx.c
2021-07-16 04:45:24 -07:00
client/texture.c
client/window.c
)
2022-04-25 03:43:59 -07:00
target_link_libraries(dragonblocks_client
PUBLIC dragonblocks
PUBLIC libglew_static
PUBLIC glfw
PUBLIC asprintf
PUBLIC linenoise
PUBLIC freetype
2021-07-16 04:45:24 -07:00
)
2022-02-12 14:17:32 -08:00
# Server
2022-04-15 14:45:01 -07:00
add_executable(dragonblocks_server
server/biomes.c
server/database.c
2022-04-15 14:45:01 -07:00
server/schematic.c
2021-07-16 04:45:24 -07:00
server/server.c
server/server_config.c
2022-04-20 09:07:46 -07:00
server/server_item.c
server/server_node.c
2022-02-12 14:17:32 -08:00
server/server_player.c
2022-04-15 14:45:01 -07:00
server/server_terrain.c
server/terrain_gen.c
server/tree.c
server/tree_physics.c
server/voxel_depth_search.c
server/voxel_procedural.c
2021-07-16 04:45:24 -07:00
)
2022-04-15 14:45:01 -07:00
target_link_libraries(dragonblocks_server
2022-04-25 03:43:59 -07:00
PUBLIC dragonblocks
PUBLIC sqlite3
2021-07-16 04:45:24 -07:00
)
2022-02-12 14:17:32 -08:00
# Version
2022-04-15 14:45:01 -07:00
add_custom_target(version
COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
2021-08-24 12:22:32 -07:00
)
2022-04-15 14:45:01 -07:00
add_dependencies(dragonblocks version)
2021-08-24 12:22:32 -07:00
2022-02-12 14:17:32 -08:00
# Types
add_custom_command(
OUTPUT types.c types.h
MAIN_DEPENDENCY types.def
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
2022-02-12 14:17:32 -08:00
)
2022-04-15 14:45:01 -07:00
add_custom_target(types
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
2022-02-12 14:17:32 -08:00
)
2022-04-15 14:45:01 -07:00
add_dependencies(dragonblocks types)