voice-chat/CMakeLists.txt

71 lines
2.5 KiB
CMake
Raw Permalink Normal View History

2026-01-14 22:33:58 -05:00
cmake_minimum_required(VERSION 3.28)
project(voice-chat
VERSION 0.1.0
LANGUAGES C)
2026-01-16 15:31:50 -05:00
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_STANDARD_REQUIRED True)
2026-01-15 09:31:55 -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()
2026-01-16 15:31:50 -05:00
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.")
2026-01-16 16:14:43 -05:00
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.")
2026-01-16 15:31:50 -05:00
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"
)
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
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")
2026-01-16 15:31:50 -05:00
# libevent
2026-01-17 04:01:19 -05:00
set(EVENT__DISABLE_TESTS ON CACHE BOOL "" FORCE)
set(EVENT__DISABLE_REGRESS ON CACHE BOOL "" FORCE)
2026-01-16 15:31:50 -05:00
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")