]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/CMakeLists.txt
0adb599d915c118d2c7d9ad405172cd39b7a8c32
[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 -Wpedantic -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         day.c
55         environment.c
56         map.c
57         node.c
58         perlin.c
59         signal_handlers.c
60         util.c
61 )
62
63 add_executable(Dragonblocks
64         ${COMMON_SOURCES}
65         client/blockmesh.c
66         client/camera.c
67         client/client.c
68         client/client_commands.c
69         client/client_map.c
70         client/client_node.c
71         client/client_player.c
72         client/cube.c
73         client/debug_menu.c
74         client/facecache.c
75         client/font.c
76         client/frustum.c
77         client/game.c
78         client/gui.c
79         client/input.c
80         client/mesh.c
81         client/object.c
82         client/scene.c
83         client/shader.c
84         client/sky.c
85         client/texture.c
86         client/vertex.c
87         client/window.c
88 )
89
90 target_link_libraries(Dragonblocks
91         ${OPENGL_LIBRARIES}
92         ${GLEW_LIBRARIES}
93         glfw
94         ${FREETYPE_LIBRARIES}
95 )
96
97 target_include_directories(Dragonblocks PUBLIC
98         ${FREETYPE_INCLUDE_DIRS}
99 )
100
101 add_executable(DragonblocksServer
102         ${COMMON_SOURCES}
103         server/biomes.c
104         server/database.c
105         server/mapgen.c
106         server/server.c
107         server/server_commands.c
108         server/server_map.c
109         server/trees.c
110         server/voxelctx.c
111 )
112
113 target_link_libraries(DragonblocksServer
114         sqlite3
115 )
116
117 add_custom_target(version
118         COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
119 )
120
121 add_dependencies(Dragonblocks version)
122 add_dependencies(DragonblocksServer version)
123
124 if (CMAKE_BUILD_TYPE STREQUAL "Release")
125         add_compile_definitions(RELEASE)
126 endif()