]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/CMakeLists.txt
Add configuration files for client and server
[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 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
31         link_directories("/usr/local/lib")
32         include_directories("/usr/local/include")
33 endif()
34
35 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
36         link_directories("/usr/X11R6/lib")
37         include_directories("/usr/X11R6/include")
38 endif()
39
40 add_compile_options(-Wall -Wextra -Werror)
41
42 set(DEPS_SOURCES
43         "${DEPS_DIR}/dragontype/array.c"
44         "${DEPS_DIR}/dragontype/bintree.c"
45         "${DEPS_DIR}/dragontype/list.c"
46         "${DEPS_DIR}/dragontype/number.c"
47         "${DEPS_DIR}/dragontype/queue.c"
48         "${DEPS_DIR}/dragonport/asprintf.c"
49         "${DEPS_DIR}/perlin/perlin.c"
50 )
51
52 set(COMMON_SOURCES
53         ${DEPS_SOURCES}
54         config.c
55         day.c
56         environment.c
57         map.c
58         node.c
59         perlin.c
60         signal_handlers.c
61         util.c
62 )
63
64 add_executable(Dragonblocks
65         ${COMMON_SOURCES}
66         client/blockmesh.c
67         client/camera.c
68         client/client.c
69         client/client_commands.c
70         client/client_config.c
71         client/client_map.c
72         client/client_node.c
73         client/client_player.c
74         client/cube.c
75         client/debug_menu.c
76         client/facecache.c
77         client/font.c
78         client/frustum.c
79         client/game.c
80         client/gui.c
81         client/input.c
82         client/mesh.c
83         client/object.c
84         client/scene.c
85         client/shader.c
86         client/sky.c
87         client/texture.c
88         client/vertex.c
89         client/window.c
90 )
91
92 target_link_libraries(Dragonblocks
93         ${OPENGL_LIBRARIES}
94         ${GLEW_LIBRARIES}
95         glfw
96         ${FREETYPE_LIBRARIES}
97 )
98
99 target_include_directories(Dragonblocks PUBLIC
100         ${FREETYPE_INCLUDE_DIRS}
101 )
102
103 add_executable(DragonblocksServer
104         ${COMMON_SOURCES}
105         server/biomes.c
106         server/database.c
107         server/mapgen.c
108         server/server.c
109         server/server_commands.c
110         server/server_config.c
111         server/server_map.c
112         server/trees.c
113         server/voxelctx.c
114 )
115
116 target_link_libraries(DragonblocksServer
117         sqlite3
118 )
119
120 add_custom_target(version
121         COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
122 )
123
124 add_dependencies(Dragonblocks version)
125 add_dependencies(DragonblocksServer version)
126
127 if (CMAKE_BUILD_TYPE STREQUAL "Release")
128         add_compile_definitions(RELEASE)
129 endif()