]> git.lizzy.rs Git - dragonblocks_alpha.git/blobdiff - src/CMakeLists.txt
Use correct u64 printf fmt
[dragonblocks_alpha.git] / src / CMakeLists.txt
index e8d1b542acd5808a5ff5e635e514351f38c0a06c..6b28b7f2c5c870a97e8ef37186775b0b3228ec0a 100644 (file)
@@ -3,7 +3,7 @@ project(Dragonblocks)
 
 # 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)
@@ -16,9 +16,26 @@ endif()
 # 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
 
@@ -29,16 +46,18 @@ endif()
 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
 
@@ -55,6 +74,7 @@ endif()
 # 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"
@@ -71,17 +91,20 @@ set(COMMON_SOURCES
        "${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
@@ -93,6 +116,8 @@ add_executable(dragonblocks
        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
@@ -105,9 +130,12 @@ add_executable(dragonblocks
        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
@@ -118,11 +146,13 @@ add_executable(dragonblocks
 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}
 )
 
@@ -135,11 +165,15 @@ add_executable(dragonblocks_server
        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
@@ -149,7 +183,8 @@ 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)
@@ -158,14 +193,15 @@ add_dependencies(dragonblocks_server 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)