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)