# Variables
-set(DEPS_DIR "${CMAKE_SOURCE_DIR}/../deps/")
+set(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deps/")
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
# Dependencies
find_package(OpenGL REQUIRED)
-find_package(GLEW REQUIRED)
-find_package(glfw3 3.3 REQUIRED)
-find_package(Freetype REQUIRED)
+
+if(NOT GLEW_LIBRARIES OR NOT GLEW_INCLUDE_DIRS)
+ find_package(GLEW REQUIRED)
+endif()
+
+if(NOT GLFW_LIBRARIES OR NOT GLFW_INCLUDE_DIRS)
+ find_package(glfw3 3.3 REQUIRED)
+ set(GLFW_LIBRARIES glfw)
+ set(GLFW_INCLUDE_DIRS)
+endif()
+
+if(NOT FREETYPE_LIBRARIES OR NOT FREETYPE_INCLUDE_DIRS)
+ find_package(Freetype REQUIRED)
+endif()
+
+if(NOT ZLIB_LIBRARIES OR NOT ZLIB_INCLUDE_DIRS)
+ find_package(ZLIB REQUIRED)
+ set(ZLIB_LIBRARIES ZLIB::ZLIB)
+ set(ZLIB_INCLUDE_DIRS)
+endif()
# Options
add_compile_definitions("USE_DRAGONNET")
add_compile_definitions("RESSOURCE_PATH=\"${RESSOURCE_PATH}\"")
-add_compile_options(-Wall -Wextra -Werror -Wno-address-of-packed-member -fmax-errors=4)
+add_compile_options(-Wall -Wextra -Werror -Wno-address-of-packed-member -Wno-implicit-fallthrough -fmax-errors=4)
link_libraries(
pthread
m
- z
+ ${ZLIB_LIBRARIES}
)
include_directories(SYSTEM ${DEPS_DIR})
-include_directories(BEFORE ${CMAKE_SOURCE_DIR})
+include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
+include_directories(${ZLIB_INCLUDE_DIRS})
# System specific options
# Common sources
set(COMMON_SOURCES
+ "${CMAKE_CURRENT_BINARY_DIR}/types.c"
"${DEPS_DIR}/asprintf/asprintf.c"
"${DEPS_DIR}/dragonnet/addr.c"
"${DEPS_DIR}/dragonnet/listen.c"
"${DEPS_DIR}/dragonstd/tree.c"
"${DEPS_DIR}/dragonstd/bits/compare.c"
"${DEPS_DIR}/linenoise/linenoise.c"
+ "${DEPS_DIR}/linenoise/stringbuf.c"
+ "${DEPS_DIR}/linenoise/utf8.c"
"${DEPS_DIR}/perlin/perlin.c"
color.c
config.c
day.c
environment.c
+ facedir.c
interrupt.c
+ item.c
node.c
perlin.c
physics.c
terrain.c
- types.c
)
# Client
client/client_auth.c
client/client_config.c
client/client_entity.c
+ client/client_inventory.c
+ client/client_item.c
client/client_node.c
client/client_player.c
client/client_terrain.c
client/gl_debug.c
client/gui.c
client/input.c
+ client/interact.c
client/light.c
client/mesh.c
client/model.c
+ client/raycast.c
+ client/screenshot.c
client/shader.c
client/sky.c
client/terrain_gfx.c
target_link_libraries(dragonblocks
${OPENGL_LIBRARIES}
${GLEW_LIBRARIES}
- glfw
+ ${GLFW_LIBRARIES}
${FREETYPE_LIBRARIES}
)
target_include_directories(dragonblocks PUBLIC
+ ${GLEW_INCLUDE_DIRS}
+ ${GLFW_INCLUDE_DIRS}
${FREETYPE_INCLUDE_DIRS}
)
server/schematic.c
server/server.c
server/server_config.c
+ server/server_item.c
+ server/server_node.c
server/server_player.c
server/server_terrain.c
server/terrain_gen.c
- server/trees.c
- server/voxelctx.c
+ server/tree.c
+ server/tree_physics.c
+ server/voxel_depth_search.c
+ server/voxel_procedural.c
)
target_link_libraries(dragonblocks_server
# Version
add_custom_target(version
- COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
+ COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
add_dependencies(dragonblocks version)
# Types
add_custom_command(
- OUTPUT "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
- COMMAND "${CMAKE_SOURCE_DIR}/mktypes.sh"
- MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/types.def"
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+ 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}"
)
add_custom_target(types
- DEPENDS "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
)
add_dependencies(dragonblocks types)