1 cmake_minimum_required(VERSION 3.12)
6 set(DEPS_DIR "${CMAKE_SOURCE_DIR}/../deps/")
8 if(NOT CMAKE_BUILD_TYPE)
9 set(CMAKE_BUILD_TYPE Debug)
12 if(NOT RESSOURCE_PATH)
13 set(RESSOURCE_PATH "../")
18 find_package(OpenGL REQUIRED)
19 find_package(GLEW REQUIRED)
20 find_package(glfw3 3.3 REQUIRED)
21 find_package(Freetype REQUIRED)
25 add_compile_definitions("RESSOURCE_PATH=\"${RESSOURCE_PATH}\"")
26 add_compile_definitions("USE_DRAGONNET")
28 add_compile_options(-Wall -Wextra -Werror -fmax-errors=4)
36 include_directories(SYSTEM ${DEPS_DIR})
37 include_directories(BEFORE ${CMAKE_SOURCE_DIR})
39 # System specific options
41 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
42 link_directories("/usr/local/lib")
43 include_directories("/usr/local/include")
46 if ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD")
47 link_directories("/usr/X11R6/lib")
48 include_directories("/usr/X11R6/include")
54 "${DEPS_DIR}/dragonnet/addr.c"
55 "${DEPS_DIR}/dragonnet/listen.c"
56 "${DEPS_DIR}/dragonnet/peer.c"
57 "${DEPS_DIR}/dragonnet/recv.c"
58 "${DEPS_DIR}/dragonnet/recv_thread.c"
59 "${DEPS_DIR}/dragonnet/send.c"
60 "${DEPS_DIR}/dragonport/asprintf.c"
61 "${DEPS_DIR}/dragonstd/array.c"
62 "${DEPS_DIR}/dragonstd/bintree.c"
63 "${DEPS_DIR}/dragonstd/flag.c"
64 "${DEPS_DIR}/dragonstd/list.c"
65 "${DEPS_DIR}/dragonstd/queue.c"
66 "${DEPS_DIR}/linenoise/linenoise.c"
67 "${DEPS_DIR}/perlin/perlin.c"
81 add_executable(Dragonblocks
87 client/client_config.c
90 client/client_player.c
109 target_link_libraries(Dragonblocks
113 ${FREETYPE_LIBRARIES}
116 target_include_directories(Dragonblocks PUBLIC
117 ${FREETYPE_INCLUDE_DIRS}
122 add_executable(DragonblocksServer
128 server/server_config.c
130 server/server_player.c
135 target_link_libraries(DragonblocksServer
141 add_custom_target(Version
142 COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
145 add_dependencies(Dragonblocks Version)
146 add_dependencies(DragonblocksServer Version)
151 OUTPUT "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
152 COMMAND "${CMAKE_SOURCE_DIR}/mktypes.sh"
153 MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/types.def"
154 WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
157 add_custom_target(DragonnetTypes
158 DEPENDS "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
161 add_dependencies(Dragonblocks DragonnetTypes)
162 add_dependencies(DragonblocksServer DragonnetTypes)