]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/CMakeLists.txt
Add trees
[dragonblocks_alpha.git] / src / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.12)
2
3 project(Dragonblocks)
4
5 if(NOT CMAKE_BUILD_TYPE)
6   set(CMAKE_BUILD_TYPE Debug)
7 endif()
8
9 find_package(OpenGL REQUIRED)
10 find_package(GLEW REQUIRED)
11 find_package(glfw3 3.3 REQUIRED)
12 find_package(Freetype REQUIRED)
13
14 link_libraries(
15         pthread
16         m
17         z
18 )
19
20 set(DEPS_DIR "${CMAKE_SOURCE_DIR}/../deps/")
21
22 include_directories(SYSTEM
23         ${DEPS_DIR}
24 )
25
26 include_directories(BEFORE
27         ${CMAKE_SOURCE_DIR}
28 )
29
30 add_compile_options(-Wall -Wextra -Wpedantic -Werror -fmax-errors=4)
31
32 set(DEPS_SOURCES
33         "${DEPS_DIR}/dragontype/array.c"
34         "${DEPS_DIR}/dragontype/bintree.c"
35         "${DEPS_DIR}/dragontype/list.c"
36         "${DEPS_DIR}/dragontype/number.c"
37         "${DEPS_DIR}/dragontype/queue.c"
38         "${DEPS_DIR}/dragonport/asprintf.c"
39         "${DEPS_DIR}/perlin/perlin.c"
40 )
41
42 set(COMMON_SOURCES
43         ${DEPS_SOURCES}
44         day.c
45         environment.c
46         map.c
47         node.c
48         perlin.c
49         signal_handlers.c
50         util.c
51 )
52
53 add_executable(Dragonblocks
54         ${COMMON_SOURCES}
55         client/blockmesh.c
56         client/camera.c
57         client/client.c
58         client/client_commands.c
59         client/client_map.c
60         client/client_node.c
61         client/client_player.c
62         client/cube.c
63         client/debug_menu.c
64         client/facecache.c
65         client/font.c
66         client/frustum.c
67         client/game.c
68         client/gui.c
69         client/input.c
70         client/mesh.c
71         client/object.c
72         client/scene.c
73         client/shader.c
74         client/sky.c
75         client/texture.c
76         client/vertex.c
77         client/window.c
78 )
79
80 target_link_libraries(Dragonblocks
81         ${OPENGL_LIBRARIES}
82         ${GLEW_LIBRARIES}
83         glfw
84         ${FREETYPE_LIBRARIES}
85 )
86
87 target_include_directories(Dragonblocks PUBLIC
88         ${FREETYPE_INCLUDE_DIRS}
89 )
90
91 add_executable(DragonblocksServer
92         ${COMMON_SOURCES}
93         server/biomes.c
94         server/database.c
95         server/mapgen.c
96         server/server.c
97         server/server_commands.c
98         server/server_map.c
99         server/trees.c
100         server/voxelctx.c
101 )
102
103 target_link_libraries(DragonblocksServer
104         sqlite3
105 )
106
107 add_custom_target(version
108         COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
109 )
110
111 add_dependencies(Dragonblocks version)
112 add_dependencies(DragonblocksServer version)
113
114 if (CMAKE_BUILD_TYPE STREQUAL "Release")
115         add_compile_definitions(RELEASE)
116 endif()