diff --git a/dep/CMakeLists.txt b/dep/CMakeLists.txt index f8f96b471..12b0dda86 100644 --- a/dep/CMakeLists.txt +++ b/dep/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(cubeb) add_subdirectory(glad) add_subdirectory(imgui) add_subdirectory(libcue) diff --git a/dep/cubeb/CMakeLists.txt b/dep/cubeb/CMakeLists.txt index c88579391..378cc5866 100644 --- a/dep/cubeb/CMakeLists.txt +++ b/dep/cubeb/CMakeLists.txt @@ -5,16 +5,6 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) project(cubeb VERSION 0.0.0) -option(BUILD_SHARED_LIBS "Build shared libraries" OFF) -option(BUILD_TESTS "Build tests" ON) -option(BUILD_RUST_LIBS "Build rust backends" OFF) -option(BUILD_TOOLS "Build tools" ON) - -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING - "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) -endif() - if(POLICY CMP0063) cmake_policy(SET CMP0063 NEW) endif() @@ -22,34 +12,6 @@ set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if(NOT COMMAND add_sanitizers) - list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/sanitizers-cmake/cmake") - find_package(Sanitizers) - if(NOT COMMAND add_sanitizers) - message(FATAL_ERROR "Could not find sanitizers-cmake: run\n\tgit submodule update --init --recursive\nin base git checkout") - endif() -endif() - -if(BUILD_TESTS) - if(NOT TARGET gtest_main) - if(NOT EXISTS "${PROJECT_SOURCE_DIR}/googletest/CMakeLists.txt") - message(FATAL_ERROR "Could not find googletest: run\n\tgit submodule update --init --recursive\nin base git checkout") - endif() - add_definitions(-DGTEST_HAS_TR1_TUPLE=0) - set(gtest_force_shared_crt ON CACHE BOOL "") - add_subdirectory(googletest) - endif() -endif() - -if (BUILD_RUST_LIBS) - if(EXISTS "${PROJECT_SOURCE_DIR}/src/cubeb-pulse-rs") - set(USE_PULSE_RUST 1) - endif() - if(EXISTS "${PROJECT_SOURCE_DIR}/src/cubeb-coreaudio-rs") - set(USE_AUDIOUNIT_RUST 1) - endif() -endif() - # On OS/2, visibility attribute is not supported. if(NOT OS2) set(CMAKE_C_VISIBILITY_PRESET hidden) @@ -72,65 +34,14 @@ add_library(cubeb src/cubeb_utils.cpp $) target_include_directories(cubeb - PUBLIC $ $ -) + PUBLIC $) + target_include_directories(cubeb PRIVATE src) target_compile_definitions(cubeb PRIVATE OUTSIDE_SPEEX) target_compile_definitions(cubeb PRIVATE FLOATING_POINT) target_compile_definitions(cubeb PRIVATE EXPORT=) target_compile_definitions(cubeb PRIVATE RANDOM_PREFIX=speex) -add_sanitizers(cubeb) - -include(GenerateExportHeader) -generate_export_header(cubeb EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/exports/cubeb_export.h) -target_include_directories(cubeb - PUBLIC $ -) - -if(UNIX) - include(GNUInstallDirs) -else() - set(CMAKE_INSTALL_LIBDIR "lib") - set(CMAKE_INSTALL_BINDIR "bin") - set(CMAKE_INSTALL_DATADIR "share") - set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATADIR}/doc") - set(CMAKE_INSTALL_INCLUDEDIR "include") -endif() - -install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(DIRECTORY ${CMAKE_BINARY_DIR}/exports/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) - -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - COMPATIBILITY SameMajorVersion -) - -configure_package_config_file( - "Config.cmake.in" - "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" -) - -install(TARGETS cubeb - EXPORT "${PROJECT_NAME}Targets" - DESTINATION ${CMAKE_INSTALL_PREFIX} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} -) -install( - FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" -) -install( - EXPORT "${PROJECT_NAME}Targets" - NAMESPACE "${PROJECT_NAME}::" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" -) - add_library(speex OBJECT src/speex/resample.c) set_target_properties(speex PROPERTIES POSITION_INDEPENDENT_CODE TRUE) @@ -231,102 +142,3 @@ if(USE_KAI) target_link_libraries(cubeb PRIVATE kai) endif() -if(USE_PULSE_RUST) - include(ExternalProject) - set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/rust) - ExternalProject_Add( - cubeb_pulse_rs - DOWNLOAD_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND cargo build COMMAND cargo build --release - BINARY_DIR "${CMAKE_SOURCE_DIR}/src/cubeb-pulse-rs" - INSTALL_COMMAND "" - LOG_BUILD ON) - add_dependencies(cubeb cubeb_pulse_rs) - target_compile_definitions(cubeb PRIVATE USE_PULSE_RUST) - target_link_libraries(cubeb PRIVATE - debug "${CMAKE_SOURCE_DIR}/src/cubeb-pulse-rs/target/debug/libcubeb_pulse.a" - optimized "${CMAKE_SOURCE_DIR}/src/cubeb-pulse-rs/target/release/libcubeb_pulse.a" pulse) -endif() - -if(USE_AUDIOUNIT_RUST) - include(ExternalProject) - set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/rust) - ExternalProject_Add( - cubeb_coreaudio_rs - DOWNLOAD_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND cargo build COMMAND cargo build --release - BINARY_DIR "${CMAKE_SOURCE_DIR}/src/cubeb-coreaudio-rs" - INSTALL_COMMAND "" - LOG_BUILD ON) - add_dependencies(cubeb cubeb_coreaudio_rs) - target_compile_definitions(cubeb PRIVATE USE_AUDIOUNIT_RUST) - target_link_libraries(cubeb PRIVATE - debug "${CMAKE_SOURCE_DIR}/src/cubeb-coreaudio-rs/target/debug/libcubeb_coreaudio.a" - optimized "${CMAKE_SOURCE_DIR}/src/cubeb-coreaudio-rs/target/release/libcubeb_coreaudio.a") -endif() - -find_package(Doxygen) -if(DOXYGEN_FOUND) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile @ONLY) - add_custom_target(doc ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs - COMMENT "Generating API documentation with Doxygen" VERBATIM) -endif() - -if(BUILD_TESTS) - enable_testing() - - macro(cubeb_add_test NAME) - add_executable(test_${NAME} test/test_${NAME}.cpp) - target_include_directories(test_${NAME} PRIVATE ${gtest_SOURCE_DIR}/include) - target_include_directories(test_${NAME} PRIVATE src) - target_link_libraries(test_${NAME} PRIVATE cubeb gtest_main) - add_test(${NAME} test_${NAME}) - add_sanitizers(test_${NAME}) - install(TARGETS test_${NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}) - endmacro(cubeb_add_test) - - cubeb_add_test(sanity) - cubeb_add_test(tone) - cubeb_add_test(audio) - cubeb_add_test(record) - cubeb_add_test(devices) - cubeb_add_test(callback_ret) - - add_executable(test_resampler test/test_resampler.cpp src/cubeb_resampler.cpp $) - target_include_directories(test_resampler PRIVATE ${gtest_SOURCE_DIR}/include) - target_include_directories(test_resampler PRIVATE src) - target_compile_definitions(test_resampler PRIVATE OUTSIDE_SPEEX) - target_compile_definitions(test_resampler PRIVATE FLOATING_POINT) - target_compile_definitions(test_resampler PRIVATE EXPORT=) - target_compile_definitions(test_resampler PRIVATE RANDOM_PREFIX=speex) - target_link_libraries(test_resampler PRIVATE cubeb gtest_main) - add_test(resampler test_resampler) - add_sanitizers(test_resampler) - install(TARGETS test_resampler DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}) - - cubeb_add_test(duplex) - - if (USE_WASAPI) - cubeb_add_test(overload_callback) - cubeb_add_test(loopback) - endif() - - cubeb_add_test(latency test_latency) - cubeb_add_test(ring_array) - - cubeb_add_test(utils) - cubeb_add_test(ring_buffer) - cubeb_add_test(device_changed_callback) -endif() - -if(BUILD_TOOLS) - add_executable(cubeb-test tools/cubeb-test.cpp) - target_include_directories(cubeb-test PRIVATE src) - target_link_libraries(cubeb-test PRIVATE cubeb) - add_sanitizers(cubeb-test) - install(TARGETS cubeb-test DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}) -endif() diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index e2a5afc50..c6141390a 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -16,6 +16,8 @@ add_library(common cd_xa.cpp cd_xa.h cpu_detect.h + cubeb_audio_stream.cpp + cubeb_audio_stream.h fifo_queue.h file_system.cpp file_system.h @@ -52,7 +54,7 @@ add_library(common target_include_directories(common PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..") target_include_directories(common PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..") -target_link_libraries(common PRIVATE glad libcue Threads::Threads) +target_link_libraries(common PRIVATE glad libcue Threads::Threads cubeb) if(WIN32) target_sources(common PRIVATE