cmake_minimum_required(VERSION 3.28) project(voice-chat VERSION 0.1.0 LANGUAGES C) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED True) # Pull all submodules if haven't already find_package(Git QUIET) if(GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") option(GIT_SUBMODULE "Check submodules during build" ON) if(GIT_SUBMODULE) message(STATUS "Submodule update") execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULT_VARIABLE GIT_SUBMOD_RESULT) if(NOT GIT_SUBMOD_RESULT EQUAL "0") message(FATAL_ERROR "git submodule update --init --recursive failed with ${GIT_SUBMOD_RESULT}, please checkout submodules") endif() endif() endif() if(NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/libevent/CMakeLists.txt") message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.") endif() if(NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/openssl/Configure") message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.") endif() set(EXTERN "${PROJECT_SOURCE_DIR}/extern") add_executable(${PROJECT_NAME} src/main.c "${EXTERN}/log.c/src/log.c" ) target_include_directories(${PROJECT_NAME} PRIVATE "${PROJECT_SOURCE_DIR}/src" ) set(BUILD_DYNAMIC_LIBS ON CACHE BOOL "" FORCE) set(BUILD_STATIC_LIBS ON CACHE BOOL "" FORCE) # miniaudio target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_SOURCE_DIR}/extern/miniaudio") # math target_link_libraries(${PROJECT_NAME} PRIVATE m) # openssl # TODO: run ./extern/openssl/Configure and make target_link_directories(${PROJECT_NAME} PRIVATE "${EXTERN}/openssl") target_link_libraries(${PROJECT_NAME} PRIVATE ssl crypto) target_include_directories(${PROJECT_NAME} PRIVATE "${EXTERN}/openssl/include") # libevent add_subdirectory("${EXTERN}/libevent") target_include_directories(${PROJECT_NAME} PRIVATE "${EXTERN}/libevent/include") # log.c target_include_directories(${PROJECT_NAME} PRIVATE "${EXTERN}/log.c/src")