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