cocos-engine-external/sources/LabSound/LabSound.cmake

218 lines
7.4 KiB
CMake

# LabSound
#
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (C) 2020, The LabSound Authors. All rights reserved.
#
# Will create a target named LabSound
option(LIBSAMPLERATE_EXAMPLES "" OFF)
option(LIBSAMPLERATE_INSTALL "" ON)
option(BUILD_TESTING "" OFF) # suppress testing of libsamplerate
# include(${LABSOUND_ROOT}/third_party/libsamplerate/CMakeLists.txt)
file(GLOB labsnd_core_h "${LABSOUND_ROOT}/include/LabSound/core/*")
file(GLOB labsnd_extended_h "${LABSOUND_ROOT}/include/LabSound/extended/*")
file(GLOB labsnd_core "${LABSOUND_ROOT}/src/core/*")
file(GLOB labsnd_extended "${LABSOUND_ROOT}/src/extended/*")
file(GLOB labsnd_int_h "${LABSOUND_ROOT}/src/internal/*")
file(GLOB labsnd_int_src "${LABSOUND_ROOT}/src/internal/src/*")
file(GLOB ooura_src "${LABSOUND_ROOT}/third_party/ooura/src/*")
# backend selection
if (IOS)
option(LABSOUND_USE_MINIAUDIO "Use miniaudio" ON)
option(LABSOUND_USE_RTAUDIO "Use RtAudio" OFF)
elseif (APPLE)
option(LABSOUND_USE_MINIAUDIO "Use miniaudio" OFF)
option(LABSOUND_USE_RTAUDIO "Use RtAudio" ON)
elseif (WIN32)
option(LABSOUND_USE_MINIAUDIO "Use miniaudio" ON)
option(LABSOUND_USE_RTAUDIO "Use RtAudio" OFF)
elseif (ANDROID)
option(LABSOUND_USE_MINIAUDIO "Use miniaudio" ON)
option(LABSOUND_USE_RTAUDIO "Use RtAudio" OFF)
elseif (UNIX)
option(LABSOUND_USE_MINIAUDIO "Use miniaudio" OFF)
option(LABSOUND_USE_RTAUDIO "Use RtAudio" ON)
else ()
message(FATAL, " Untested platform. Please try miniaudio and report results on the LabSound issues page")
endif()
if (LABSOUND_USE_MINIAUDIO AND LABSOUND_USE_RTAUDIO)
message(FATAL, " Specify only one backend")
elseif(NOT LABSOUND_USE_MINIAUDIO AND NOT LABSOUND_USE_RTAUDIO)
message(FATAL, " Specify at least one backend")
endif()
if (LABSOUND_USE_MINIAUDIO)
message(STATUS "Using miniaudio backend")
if (IOS)
set(labsnd_backend
"${LABSOUND_ROOT}/src/backends/miniaudio/AudioDevice_Miniaudio.mm"
"${LABSOUND_ROOT}/src/backends/miniaudio/AudioDevice_Miniaudio.h"
"${LABSOUND_ROOT}/third_party/miniaudio/miniaudio.h"
)
else()
set(labsnd_backend
"${LABSOUND_ROOT}/src/backends/miniaudio/AudioDevice_Miniaudio.cpp"
"${LABSOUND_ROOT}/src/backends/miniaudio/AudioDevice_Miniaudio.h"
"${LABSOUND_ROOT}/third_party/miniaudio/miniaudio.h"
)
endif()
elseif (LABSOUND_USE_RTAUDIO)
message(STATUS "Using RtAudio backend")
set(labsnd_backend
"${LABSOUND_ROOT}/src/backends/RtAudio/AudioDevice_RtAudio.cpp"
"${LABSOUND_ROOT}/src/backends/RtAudio/AudioDevice_RtAudio.h"
"${LABSOUND_ROOT}/src/backends/RtAudio/RtAudio.cpp"
"${LABSOUND_ROOT}/src/backends/RtAudio/RtAudio.h"
)
endif()
# FFT
if (IOS)
set(labsnd_fft_src "${LABSOUND_ROOT}/src/backends/FFTFrameAppleAcclerate.cpp")
elseif (APPLE)
set(labsnd_fft_src "${LABSOUND_ROOT}/src/backends/FFTFrameAppleAcclerate.cpp")
elseif (WIN32)
file(GLOB labsnd_fft_src "${LABSOUND_ROOT}/third_party/kissfft/src/*")
elseif (UNIX)
file(GLOB labsnd_fft_src "${LABSOUND_ROOT}/third_party/kissfft/src/*")
endif()
# TODO ooura or kissfft? benchmark and choose. Then benchmark vs FFTFrameAppleAcclerate
set(ooura_src
"${LABSOUND_ROOT}/third_party/ooura/src/fftsg.cpp"
"${LABSOUND_ROOT}/third_party/ooura/fftsg.h")
set(LABSOUND_SOURCES
"${LABSOUND_ROOT}/include/LabSound/LabSound.h"
${labsnd_core_h} ${labsnd_core}
${labsnd_extended_h} ${labsnd_extended}
${labsnd_int_h} ${labsnd_int_src}
${labsnd_backend} ${ooura_src} ${labsnd_fft_src}
)
# if (APPLE)
# set_target_properties(LabSound PROPERTIES
# FRAMEWORK TRUE
# FRAMEWORK_VERSION A
# MACOSX_FRAMEWORK_IDENTIFIER com.Lab.LabSound
# VERSION 0.13.0
# SOVERSION 1.0.0
# PUBLIC_HEADER "${labsnd_core_h} ${labsnd_extended_h}"
# )
# set_property(SOURCE ${labsnd_core_h}
# PROPERTY MACOSX_PACKAGE_LOCATION Headers/LabSound/core)
# set_property(SOURCE ${labsnd_extended_h}
# PROPERTY MACOSX_PACKAGE_LOCATION Headers/LabSound/extended)
# endif()
# set(proj LabSound)
# set(proj cocos_engine)
# set(LABSOUND_INCLUDE
# ${LABSOUND_ROOT}/include)
list(APPEND LABSOUND_INCLUDE
${LABSOUND_ROOT}/src
${LABSOUND_ROOT}/include
${LABSOUND_ROOT}/third_party
${LABSOUND_ROOT}/third_party/libnyquist/include
${LABSOUND_ROOT}/third_party/ooura
${LABSOUND_ROOT}/third_party/ooura/src
${LABSOUND_ROOT}/third_party/kissfft/src
)
if (LABSOUND_USE_MINIAUDIO)
list(APPEND LABSOUND_INCLUDE
${LABSOUND_ROOT}/third_party/miniaudio)
endif()
# if (MSVC_IDE)
# # hack to get around the "Debug" and "Release" directories cmake tries to add on Windows
# set_target_properties(${ENGINE_NAME} PROPERTIES IMPORT_PREFIX "../")
# endif()
# set_target_properties(LabSound
# PROPERTIES
# LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
# ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
# RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
# )
# set_target_properties(LabSound PROPERTIES OUTPUT_NAME_DEBUG LabSound_d)
# if (WIN32)
# target_compile_definitions(${ENGINE_NAME} PRIVATE __WINDOWS_WASAPI__=1)
# elseif (APPLE)
# target_compile_definitions(${ENGINE_NAME} PRIVATE __MACOSX_CORE__=1)
# else()
# set(LABSOUND_PLATFORM_LINK_LIBRARIES dl)
# if (LABSOUND_JACK)
# target_compile_definitions(${ENGINE_NAME} PRIVATE __UNIX_JACK__=1)
# set(LIBNYQUIST_JACK ON)
# elseif (LABSOUND_PULSE)
# target_compile_definitions(${ENGINE_NAME} PRIVATE __LINUX_PULSE__=1)
# set(LIBNYQUIST_PULSE ON)
# elseif (LABSOUND_ASOUND)
# target_compile_definitions(${ENGINE_NAME} PRIVATE __LINUX_ALSA__=1)
# set(LIBNYQUIST_ASOUND ON)
# else()
# message(FATAL, "On Linux, one of LABSOUND_JACK, LABSOUND_PULSE, or LABSOUND_ASOUND must be set ON.")
# endif()
# endif()
# target_link_libraries(LabSound
# libnyquist libwavpack
# samplerate
# ${LABSOUND_PLATFORM_LINK_LIBRARIES})
# install(TARGETS LabSound
# LIBRARY DESTINATION lib
# ARCHIVE DESTINATION lib
# FRAMEWORK DESTINATION lib
# RUNTIME DESTINATION bin)
# install(FILES "${LABSOUND_ROOT}/include/LabSound.h"
# DESTINATION include)
# install(FILES ${labsnd_core_h}
# DESTINATION include/core)
# install(FILES ${labsnd_extended_h}
# DESTINATION include/extended)
# install(DIRECTORY
# assets/hrtf
# assets/images
# assets/impulse
# assets/json
# assets/pd
# assets/samples
# DESTINATION share/LabSound)
# source_group(include FILES "${LABSOUND_ROOT}/include/LabSound")
# source_group(include\\core FILES ${labsnd_core_h})
# source_group(include\\extended FILES ${labsnd_extended_h})
# source_group(src\\backends FILES ${labsnd_backend})
# source_group(src\\core FILES ${labsnd_core})
# source_group(src\\extended FILES ${labsnd_extended})
# source_group(src\\internal FILES ${labsnd_int_h})
# source_group(src\\internal\\src FILES ${labsnd_int_src})
# source_group(third_party\\kissfft FILES ${third_kissfft})
# source_group(third_party\\ooura FILES ${ooura_src})
# source_group(third_party\\rtaudio FILES ${third_rtaudio})
# configure_file("${LABSOUND_ROOT}/cmake/LabSoundConfig.cmake.in"
# "${PROJECT_BINARY_DIR}/LabSoundConfig.cmake" @ONLY)
# install(FILES
# "${PROJECT_BINARY_DIR}/LabSoundConfig.cmake"
# DESTINATION "${CMAKE_INSTALL_PREFIX}"
# )
# add_library(Lab::Sound ALIAS LabSound)