69 lines
2.4 KiB
CMake
69 lines
2.4 KiB
CMake
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()
|
|
|
|
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/extern/log.c/src/log.c")
|
|
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")
|