diff options
Diffstat (limited to 'cmake/CMakeLists.txt')
| -rw-r--r-- | cmake/CMakeLists.txt | 74 | 
1 files changed, 74 insertions, 0 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt new file mode 100644 index 0000000..a613698 --- /dev/null +++ b/cmake/CMakeLists.txt @@ -0,0 +1,74 @@ +cmake_minimum_required(VERSION 3.20) + +project(fscord) + +set(FSCORD_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/..") +set(FSCORD_INC_DIR "${FSCORD_ROOT_DIR}/src" "${FSCORD_ROOT_DIR}/external") +set(FSCORD_SRC_DIR  "${FSCORD_ROOT_DIR}/src") + +set(CMAKE_C_COMPILER "clang") +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../data/fscord) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../data/fscord) +add_executable(fscord) +if(CMAKE_C_COMPILER_ID MATCHES "Clang|GNU") +    target_compile_options(fscord PRIVATE -Wall -pedantic-errors) +endif() +target_sources(fscord PUBLIC +    ${FSCORD_SRC_DIR}/client/main.c +    ${FSCORD_SRC_DIR}/basic/arena.c +    ${FSCORD_SRC_DIR}/basic/math.c +    ${FSCORD_SRC_DIR}/basic/string32.c +    ${FSCORD_SRC_DIR}/client/draw.c +    ${FSCORD_SRC_DIR}/client/sound.c +    ${FSCORD_SRC_DIR}/client/font.c +    ${FSCORD_SRC_DIR}/client/login.c +    ${FSCORD_SRC_DIR}/client/session.c +    ${FSCORD_SRC_DIR}/client/string32_handles.c +    ${FSCORD_SRC_DIR}/client/server_connection.c +    ${FSCORD_SRC_DIR}/crypto/aes_gcm.c +    ${FSCORD_SRC_DIR}/crypto/rsa.c +    ${FSCORD_SRC_DIR}/os/sdl/sdl_window.c +    ${FSCORD_SRC_DIR}/os/linux/linux_sound.c +    ${FSCORD_SRC_DIR}/os/linux/linux_library.c +    ${FSCORD_SRC_DIR}/os/linux/linux_memory.c +    ${FSCORD_SRC_DIR}/os/linux/linux_net_secure_stream.c +    ${FSCORD_SRC_DIR}/os/linux/linux_time.c +    ${FSCORD_SRC_DIR}/os/linux/linux_file.c +    ${FSCORD_ROOT_DIR}/external/stb/stb_truetype.c +    ${FSCORD_ROOT_DIR}/external/stb/stb_image.c +    ${FSCORD_ROOT_DIR}/external/stb/stb_image_write.c +) +target_include_directories(fscord PUBLIC ${FSCORD_INC_DIR}) +target_link_libraries(fscord SDL3 GL asound ssl crypto m) + + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../data/fscord_server) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../data/fscord_server) +add_executable(fscord_server) +if(CMAKE_C_COMPILER_ID MATCHES "Clang|GNU") +    target_compile_options(fscord PRIVATE -Wall -pedantic-errors) +endif() +set_property(TARGET fscord_server PROPERTY C_STANDARD 99) +target_sources(fscord_server PUBLIC +    ${FSCORD_SRC_DIR}/basic/arena.c +    ${FSCORD_SRC_DIR}/basic/string32.c +    ${FSCORD_SRC_DIR}/os/linux/linux_memory.c +    ${FSCORD_SRC_DIR}/os/linux/linux_net_secure_stream.c +    ${FSCORD_SRC_DIR}/os/linux/linux_time.c +    ${FSCORD_SRC_DIR}/os/linux/linux_file.c +    ${FSCORD_SRC_DIR}/crypto/aes_gcm.c +    ${FSCORD_SRC_DIR}/crypto/rsa.c +    ${FSCORD_SRC_DIR}/server/main.c +    ${FSCORD_SRC_DIR}/server/client_connections.c +    ${FSCORD_SRC_DIR}/server/c2s_handler.c +    ${FSCORD_SRC_DIR}/server/s2c_sender.c +) +target_include_directories(fscord_server PUBLIC ${FSCORD_INC_DIR}) +target_link_libraries(fscord_server ssl crypto) +  | 
