36 lines
1.4 KiB
CMake
36 lines
1.4 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
project(sonus-consumer LANGUAGES CXX)
|
|
|
|
foreach(dependency miniaudio OpenSSL SQLite3 raylib)
|
|
set(CMAKE_DISABLE_FIND_PACKAGE_${dependency} TRUE)
|
|
endforeach()
|
|
find_package(sonus CONFIG REQUIRED)
|
|
get_target_property(sonus_links sonus::sonus INTERFACE_LINK_LIBRARIES)
|
|
if(sonus_links MATCHES "miniaudio|OpenSSL|SQLite|raylib")
|
|
message(FATAL_ERROR "Sonus exposes a private dependency: ${sonus_links}")
|
|
endif()
|
|
foreach(dependency modulus::miniaudio modulus::openssl modulus::sqlite modulus::raylib)
|
|
if(TARGET ${dependency})
|
|
message(FATAL_ERROR "Sonus discovered an unrelated bridge: ${dependency}")
|
|
endif()
|
|
endforeach()
|
|
|
|
option(SONUS_TEST_INSTALLED_CONFIG "Check installed Modulus component discovery" OFF)
|
|
if(SONUS_TEST_INSTALLED_CONFIG)
|
|
find_package(modulus CONFIG REQUIRED OPTIONAL_COMPONENTS miniaudio unsupported)
|
|
if(modulus_miniaudio_FOUND OR modulus_unsupported_FOUND)
|
|
message(FATAL_ERROR "Unavailable optional components must not be found")
|
|
endif()
|
|
find_package(modulus CONFIG QUIET COMPONENTS unsupported)
|
|
if(modulus_FOUND)
|
|
message(FATAL_ERROR "An unknown required component must reject the package")
|
|
endif()
|
|
find_package(modulus CONFIG REQUIRED)
|
|
endif()
|
|
|
|
add_executable(sonus-consumer main.cpp)
|
|
target_link_libraries(sonus-consumer PRIVATE sonus::sonus)
|
|
target_compile_features(sonus-consumer PRIVATE cxx_std_23)
|
|
enable_testing()
|
|
add_test(NAME sonus-consumer COMMAND sonus-consumer)
|