2026-01-14 22:33:58 -05:00
|
|
|
cmake_minimum_required(VERSION 3.28)
|
|
|
|
|
|
|
|
|
|
project(voice-chat
|
|
|
|
|
VERSION 0.1.0
|
|
|
|
|
LANGUAGES C)
|
|
|
|
|
|
|
|
|
|
set(C_STANDARD 23)
|
|
|
|
|
set(C_STANDARD_REQUIRED True)
|
|
|
|
|
|
|
|
|
|
add_executable(${PROJECT_NAME} src/main.c)
|
|
|
|
|
|
2026-01-15 09:31:55 -05:00
|
|
|
set(EXTERN "${PROJECT_SOURCE_DIR}/extern")
|
|
|
|
|
|
2026-01-15 00:04:42 -05:00
|
|
|
# Pull all submodules if haven't already
|
2026-01-15 09:31:55 -05:00
|
|
|
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/openssl/CMakeLists.txt")
|
2026-01-15 00:04:42 -05:00
|
|
|
# message(FATAL_ERROR "The submodules were not downloaded! GIT_SUBMODULE was turned off or failed. Please update submodules and try again.")
|
|
|
|
|
# endif()
|
2026-01-14 22:33:58 -05:00
|
|
|
|
|
|
|
|
set(BUILD_DYNAMIC_LIBS ON CACHE BOOL "" FORCE)
|
|
|
|
|
set(BUILD_STATIC_LIBS ON CACHE BOOL "" FORCE)
|
|
|
|
|
|
2026-01-15 09:31:55 -05:00
|
|
|
# miniaudio
|
2026-01-15 00:04:42 -05:00
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_SOURCE_DIR}/extern/miniaudio")
|
2026-01-14 22:49:49 -05:00
|
|
|
|
|
|
|
|
# math
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE m)
|
2026-01-15 09:31:55 -05:00
|
|
|
|
|
|
|
|
# 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")
|
|
|
|
|
|