218 lines
7.4 KiB
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)
|