Previously in Audaspace there was choice between linear resampler (okay for preview, but not great for final mix), or "extremely high quality preset" for rendering the final mix; with nothing in between. I have just landed "medium" and "low" resampler quality levels in upstream Audaspace (see https://github.com/audaspace/audaspace/pull/18 with details and quality spectograms, also comparison with Audacity resampler). This PR updates Audaspace to latest upstream, and switches to use the newly added "medium" quality resampler. There's no audible difference (nor visible one in spectrograms), as far as I can tell. Timings, rendering out frames 1000-3000 of Sprite Fright Edit blender studio data set: - Windows (Ryzen 5950X, VS2022): 92 -> 73 sec - Mac (M1 Max, clang 15): 70 -> 62 sec i.e. using a faster audio resampler makes the _whole render process_ be 10-20% faster (however, this from VSE where it combines already pre-rendered image strips). Pull Request: https://projects.blender.org/blender/blender/pulls/116059
1188 lines
34 KiB
CMake
1188 lines
34 KiB
CMake
################################################################################
|
|
# Copyright 2009-2016 Jörg Müller
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
################################################################################
|
|
|
|
cmake_minimum_required(VERSION 3.5)
|
|
include(CMakeDependentOption)
|
|
|
|
if(POLICY CMP0054)
|
|
cmake_policy(SET CMP0054 NEW)
|
|
endif()
|
|
|
|
project(audaspace)
|
|
|
|
set(AUDASPACE_VERSION 1.4)
|
|
set(AUDASPACE_LONG_VERSION ${AUDASPACE_VERSION}.0)
|
|
|
|
if(DEFINED AUDASPACE_CMAKE_CFG)
|
|
include(${AUDASPACE_CMAKE_CFG})
|
|
endif()
|
|
|
|
if(NOT DEFINED AUDASPACE_STANDALONE)
|
|
set(AUDASPACE_STANDALONE TRUE)
|
|
endif()
|
|
|
|
# sources
|
|
|
|
set(SRC
|
|
src/devices/DefaultSynchronizer.cpp
|
|
src/devices/DeviceManager.cpp
|
|
src/devices/NULLDevice.cpp
|
|
src/devices/ReadDevice.cpp
|
|
src/devices/SoftwareDevice.cpp
|
|
src/devices/ThreadedDevice.cpp
|
|
src/Exception.cpp
|
|
src/file/File.cpp
|
|
src/file/FileManager.cpp
|
|
src/file/FileWriter.cpp
|
|
src/fx/Accumulator.cpp
|
|
src/fx/ADSR.cpp
|
|
src/fx/ADSRReader.cpp
|
|
src/fx/BaseIIRFilterReader.cpp
|
|
src/fx/ButterworthCalculator.cpp
|
|
src/fx/Butterworth.cpp
|
|
src/fx/CallbackIIRFilterReader.cpp
|
|
src/fx/Delay.cpp
|
|
src/fx/DelayReader.cpp
|
|
src/fx/DynamicIIRFilter.cpp
|
|
src/fx/DynamicIIRFilterReader.cpp
|
|
src/fx/DynamicMusic.cpp
|
|
src/fx/Effect.cpp
|
|
src/fx/EffectReader.cpp
|
|
src/fx/Envelope.cpp
|
|
src/fx/Fader.cpp
|
|
src/fx/FaderReader.cpp
|
|
src/fx/HighpassCalculator.cpp
|
|
src/fx/Highpass.cpp
|
|
src/fx/IIRFilter.cpp
|
|
src/fx/IIRFilterReader.cpp
|
|
src/fx/Limiter.cpp
|
|
src/fx/LimiterReader.cpp
|
|
src/fx/Loop.cpp
|
|
src/fx/LoopReader.cpp
|
|
src/fx/LowpassCalculator.cpp
|
|
src/fx/Lowpass.cpp
|
|
src/fx/Modulator.cpp
|
|
src/fx/ModulatorReader.cpp
|
|
src/fx/MutableReader.cpp
|
|
src/fx/MutableSound.cpp
|
|
src/fx/Pitch.cpp
|
|
src/fx/PitchReader.cpp
|
|
src/fx/PlaybackManager.cpp
|
|
src/fx/PlaybackCategory.cpp
|
|
src/fx/Reverse.cpp
|
|
src/fx/ReverseReader.cpp
|
|
src/fx/SoundList.cpp
|
|
src/fx/Source.cpp
|
|
src/fx/Sum.cpp
|
|
src/fx/Threshold.cpp
|
|
src/fx/Volume.cpp
|
|
src/fx/VolumeReader.cpp
|
|
src/fx/VolumeSound.cpp
|
|
src/fx/VolumeStorage.cpp
|
|
src/generator/Sawtooth.cpp
|
|
src/generator/SawtoothReader.cpp
|
|
src/generator/Silence.cpp
|
|
src/generator/SilenceReader.cpp
|
|
src/generator/Sine.cpp
|
|
src/generator/SineReader.cpp
|
|
src/generator/Square.cpp
|
|
src/generator/SquareReader.cpp
|
|
src/generator/Triangle.cpp
|
|
src/generator/TriangleReader.cpp
|
|
src/respec/ChannelMapper.cpp
|
|
src/respec/ChannelMapperReader.cpp
|
|
src/respec/Converter.cpp
|
|
src/respec/ConverterFunctions.cpp
|
|
src/respec/ConverterReader.cpp
|
|
src/respec/JOSResample.cpp
|
|
src/respec/JOSResampleReaderCoeffHigh.cpp
|
|
src/respec/JOSResampleReaderCoeffLow.cpp
|
|
src/respec/JOSResampleReaderCoeffMedium.cpp
|
|
src/respec/JOSResampleReader.cpp
|
|
src/respec/LinearResample.cpp
|
|
src/respec/LinearResampleReader.cpp
|
|
src/respec/Mixer.cpp
|
|
src/respec/ResampleReader.cpp
|
|
src/respec/SpecsChanger.cpp
|
|
src/sequence/AnimateableProperty.cpp
|
|
src/sequence/Double.cpp
|
|
src/sequence/DoubleReader.cpp
|
|
src/sequence/PingPong.cpp
|
|
src/sequence/Sequence.cpp
|
|
src/sequence/SequenceData.cpp
|
|
src/sequence/SequenceEntry.cpp
|
|
src/sequence/SequenceHandle.cpp
|
|
src/sequence/SequenceReader.cpp
|
|
src/sequence/Superpose.cpp
|
|
src/sequence/SuperposeReader.cpp
|
|
src/util/Barrier.cpp
|
|
src/util/Buffer.cpp
|
|
src/util/BufferReader.cpp
|
|
src/util/RingBuffer.cpp
|
|
src/util/StreamBuffer.cpp
|
|
src/util/ThreadPool.cpp
|
|
)
|
|
|
|
set(PRIVATE_HDR
|
|
src/sequence/SequenceHandle.h
|
|
)
|
|
|
|
set(PUBLIC_HDR
|
|
include/devices/DefaultSynchronizer.h
|
|
include/devices/DeviceManager.h
|
|
include/devices/I3DDevice.h
|
|
include/devices/I3DHandle.h
|
|
include/devices/IDeviceFactory.h
|
|
include/devices/IDevice.h
|
|
include/devices/IHandle.h
|
|
include/devices/ISynchronizer.h
|
|
include/devices/NULLDevice.h
|
|
include/devices/ReadDevice.h
|
|
include/devices/SoftwareDevice.h
|
|
include/devices/ThreadedDevice.h
|
|
include/Exception.h
|
|
include/file/File.h
|
|
include/file/FileInfo.h
|
|
include/file/FileManager.h
|
|
include/file/FileWriter.h
|
|
include/file/IFileInput.h
|
|
include/file/IFileOutput.h
|
|
include/file/IWriter.h
|
|
include/fx/Accumulator.h
|
|
include/fx/ADSR.h
|
|
include/fx/ADSRReader.h
|
|
include/fx/BaseIIRFilterReader.h
|
|
include/fx/ButterworthCalculator.h
|
|
include/fx/Butterworth.h
|
|
include/fx/CallbackIIRFilterReader.h
|
|
include/fx/Delay.h
|
|
include/fx/DelayReader.h
|
|
include/fx/DynamicIIRFilter.h
|
|
include/fx/DynamicIIRFilterReader.h
|
|
include/fx/DynamicMusic.h
|
|
include/fx/Effect.h
|
|
include/fx/EffectReader.h
|
|
include/fx/Envelope.h
|
|
include/fx/Fader.h
|
|
include/fx/FaderReader.h
|
|
include/fx/HighpassCalculator.h
|
|
include/fx/Highpass.h
|
|
include/fx/IDynamicIIRFilterCalculator.h
|
|
include/fx/IIRFilter.h
|
|
include/fx/IIRFilterReader.h
|
|
include/fx/Limiter.h
|
|
include/fx/LimiterReader.h
|
|
include/fx/Loop.h
|
|
include/fx/LoopReader.h
|
|
include/fx/LowpassCalculator.h
|
|
include/fx/Lowpass.h
|
|
include/fx/Modulator.h
|
|
include/fx/ModulatorReader.h
|
|
include/fx/MutableReader.h
|
|
include/fx/MutableSound.h
|
|
include/fx/Pitch.h
|
|
include/fx/PitchReader.h
|
|
include/fx/PlaybackManager.h
|
|
include/fx/PlaybackCategory.h
|
|
include/fx/Reverse.h
|
|
include/fx/ReverseReader.h
|
|
include/fx/SoundList.h
|
|
include/fx/Source.h
|
|
include/fx/Sum.h
|
|
include/fx/Threshold.h
|
|
include/fx/Volume.h
|
|
include/fx/VolumeReader.h
|
|
include/fx/VolumeSound.h
|
|
include/fx/VolumeStorage.h
|
|
include/generator/Sawtooth.h
|
|
include/generator/SawtoothReader.h
|
|
include/generator/Silence.h
|
|
include/generator/SilenceReader.h
|
|
include/generator/Sine.h
|
|
include/generator/SineReader.h
|
|
include/generator/Square.h
|
|
include/generator/SquareReader.h
|
|
include/generator/Triangle.h
|
|
include/generator/TriangleReader.h
|
|
include/IReader.h
|
|
include/ISound.h
|
|
include/plugin/PluginManager.h
|
|
include/respec/ChannelMapper.h
|
|
include/respec/ChannelMapperReader.h
|
|
include/respec/ConverterFunctions.h
|
|
include/respec/Converter.h
|
|
include/respec/ConverterReader.h
|
|
include/respec/JOSResample.h
|
|
include/respec/JOSResampleReader.h
|
|
include/respec/LinearResample.h
|
|
include/respec/LinearResampleReader.h
|
|
include/respec/Mixer.h
|
|
include/respec/ResampleReader.h
|
|
include/respec/Specification.h
|
|
include/respec/SpecsChanger.h
|
|
include/sequence/AnimateableProperty.h
|
|
include/sequence/Double.h
|
|
include/sequence/DoubleReader.h
|
|
include/sequence/PingPong.h
|
|
include/sequence/SequenceData.h
|
|
include/sequence/SequenceEntry.h
|
|
include/sequence/Sequence.h
|
|
include/sequence/SequenceReader.h
|
|
include/sequence/Superpose.h
|
|
include/sequence/SuperposeReader.h
|
|
include/util/Barrier.h
|
|
include/util/Buffer.h
|
|
include/util/BufferReader.h
|
|
include/util/ILockable.h
|
|
include/util/Math3D.h
|
|
include/util/RingBuffer.h
|
|
include/util/StreamBuffer.h
|
|
include/util/ThreadPool.h
|
|
)
|
|
|
|
set(HDR ${PRIVATE_HDR} ${PUBLIC_HDR})
|
|
|
|
set(INCLUDE ${CMAKE_CURRENT_BINARY_DIR} include)
|
|
|
|
if(WIN32)
|
|
set(LIBRARIES)
|
|
if(AUDASPACE_STANDALONE)
|
|
set(DLLS)
|
|
set(LIBRARY_PATH "../lib" CACHE PATH "Path which contains the libraries.")
|
|
file(GLOB LIBRARY_DIRS ${LIBRARY_PATH}/*)
|
|
list(APPEND CMAKE_PREFIX_PATH ${LIBRARY_DIRS})
|
|
endif()
|
|
else()
|
|
set(LIBRARIES ${CMAKE_DL_LIBS} -lpthread)
|
|
endif()
|
|
|
|
set(STATIC_PLUGINS "")
|
|
|
|
# dependencies
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
set(PACKAGE_OPTION QUIET)
|
|
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
|
|
|
|
option(BUILD_DEMOS "Build and install demos" TRUE)
|
|
|
|
option(SHARED_LIBRARY "Build Shared Library" TRUE)
|
|
|
|
option(WITH_C "Build C Module" TRUE)
|
|
option(WITH_DOCS "Build C++ HTML Documentation with Doxygen" TRUE)
|
|
option(WITH_FFMPEG "Build With FFMPEG" TRUE)
|
|
option(WITH_FFTW "Build With FFTW" TRUE)
|
|
option(WITH_JACK "Build With Plugin" TRUE)
|
|
option(WITH_LIBSNDFILE "Build With LibSndFile" TRUE)
|
|
option(WITH_OPENAL "Build With OpenAL" TRUE)
|
|
option(WITH_PYTHON "Build With Python Library" TRUE)
|
|
option(WITH_SDL "Build With SDL" TRUE)
|
|
option(WITH_STRICT_DEPENDENCIES "Error and abort instead of warning if a library is not found." FALSE)
|
|
if(APPLE)
|
|
option(WITH_COREAUDIO "Build With CoreAudio" TRUE)
|
|
endif()
|
|
if(NOT WIN32 AND NOT APPLE)
|
|
option(WITH_PULSEAUDIO "Build With PulseAudio" TRUE)
|
|
endif()
|
|
if(WIN32)
|
|
option(WITH_WASAPI "Build With WASAPI" TRUE)
|
|
endif()
|
|
|
|
if(WITH_STRICT_DEPENDENCIES)
|
|
set(PACKAGE_OPTION REQUIRED)
|
|
endif()
|
|
endif()
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
if(WIN32 OR APPLE)
|
|
set(DEFAULT_PLUGIN_PATH "." CACHE STRING "Default plugin installation and loading path.")
|
|
set(DOCUMENTATION_INSTALL_PATH "doc" CACHE PATH "Path where the documentation is installed.")
|
|
else()
|
|
set(DEFAULT_PLUGIN_PATH "${CMAKE_INSTALL_PREFIX}/share/audaspace/plugins" CACHE STRING "Default plugin installation and loading path.")
|
|
set(DOCUMENTATION_INSTALL_PATH "share/doc/audaspace" CACHE PATH "Path where the documentation is installed.")
|
|
endif()
|
|
endif()
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
cmake_dependent_option(SEPARATE_C "Build C Binding as separate library" TRUE "WITH_C" FALSE)
|
|
cmake_dependent_option(PLUGIN_COREAUDIO "Build CoreAudio Plugin" TRUE "WITH_COREAUDIO;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_FFMPEG "Build FFMPEG Plugin" TRUE "WITH_FFMPEG;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_JACK "Build JACK Plugin" TRUE "WITH_JACK;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_LIBSNDFILE "Build LibSndFile Plugin" TRUE "WITH_LIBSNDFILE;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_OPENAL "Build OpenAL Plugin" TRUE "WITH_OPENAL;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_PULSEAUDIO "Build PulseAudio Plugin" TRUE "WITH_PULSEAUDIO;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_SDL "Build SDL Plugin" TRUE "WITH_SDL;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(PLUGIN_WASAPI "Build WASAPI Plugin" TRUE "WITH_WASAPI;SHARED_LIBRARY" FALSE)
|
|
cmake_dependent_option(WITH_PYTHON_MODULE "Build Python Module" TRUE "WITH_PYTHON" FALSE)
|
|
cmake_dependent_option(USE_SDL2 "Use SDL2 instead of 1 if available" TRUE "WITH_SDL" FALSE)
|
|
cmake_dependent_option(DYNLOAD_JACK "Dynamically load JACK" FALSE "WITH_JACK" FALSE)
|
|
cmake_dependent_option(DYNLOAD_PULSEAUDIO "Dynamically load PulseAudio" FALSE "WITH_PULSEAUDIO" FALSE)
|
|
cmake_dependent_option(WITH_BINDING_DOCS "Build C/Python HTML Documentation with Sphinx" TRUE "WITH_PYTHON_MODULE" FALSE)
|
|
endif()
|
|
|
|
# compiler options
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
|
add_definitions(-std=c++11)
|
|
list(APPEND CMAKE_C_COMPILER_FLAGS "-fvisibility=hidden")
|
|
list(APPEND CMAKE_CXX_COMPILER_FLAGS "-fvisibility=hidden")
|
|
endif()
|
|
|
|
if(MSVC)
|
|
list(APPEND CMAKE_C_FLAGS_DEBUG "/Zi /Od")
|
|
list(APPEND CMAKE_CXX_FLAGS_DEBUG "/Zi /Od")
|
|
list(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG "/DEBUG")
|
|
list(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG "/DEBUG")
|
|
list(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG")
|
|
|
|
if(SHARED_LIBRARY)
|
|
include(GenerateExportHeader)
|
|
endif()
|
|
endif()
|
|
|
|
if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE)
|
|
endif()
|
|
endif()
|
|
|
|
if(MSVC)
|
|
add_definitions(
|
|
/D_USE_MATH_DEFINES
|
|
/EHsc
|
|
/DNOMINMAX
|
|
/D_STDINT_H
|
|
)
|
|
endif()
|
|
|
|
# platform specific options
|
|
|
|
if(MSYS OR MINGW)
|
|
add_definitions(-D_USE_MATH_DEFINES)
|
|
endif()
|
|
|
|
# C
|
|
if(WITH_C)
|
|
set(C_SRC
|
|
bindings/C/AUD_ThreadPool.cpp
|
|
bindings/C/AUD_Source.cpp
|
|
bindings/C/AUD_Device.cpp
|
|
bindings/C/AUD_DynamicMusic.cpp
|
|
bindings/C/AUD_Handle.cpp
|
|
bindings/C/AUD_PlaybackManager.cpp
|
|
bindings/C/AUD_Sequence.cpp
|
|
bindings/C/AUD_Sound.cpp
|
|
bindings/C/AUD_Special.cpp
|
|
)
|
|
set(C_HDR
|
|
bindings/C/AUD_ThreadPool.h
|
|
bindings/C/AUD_Source.h
|
|
bindings/C/AUD_Device.h
|
|
bindings/C/AUD_DynamicMusic.h
|
|
bindings/C/AUD_Handle.h
|
|
bindings/C/AUD_PlaybackManager.h
|
|
bindings/C/AUD_Sequence.h
|
|
bindings/C/AUD_Sound.h
|
|
bindings/C/AUD_Special.h
|
|
bindings/C/AUD_Types.h
|
|
)
|
|
|
|
if(WITH_FFTW)
|
|
list(APPEND C_SRC
|
|
bindings/C/AUD_HRTF.cpp
|
|
bindings/C/AUD_ImpulseResponse.cpp
|
|
)
|
|
|
|
list(APPEND C_HDR
|
|
bindings/C/AUD_HRTF.h
|
|
bindings/C/AUD_ImpulseResponse.h
|
|
)
|
|
endif()
|
|
|
|
if(NOT SEPARATE_C)
|
|
list(APPEND SRC ${C_SRC})
|
|
list(APPEND HDR ${C_HDR})
|
|
else()
|
|
set(AUDASPACE_C_LIBRARY -laudaspace-c)
|
|
endif()
|
|
endif()
|
|
|
|
# CoreAudio
|
|
if(WITH_COREAUDIO)
|
|
find_library(COREAUDIO_LIBRARY CoreAudio)
|
|
find_library(AUDIOUNIT_LIBRARY AudioUnit)
|
|
find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox)
|
|
find_path(AUDIOUNIT_INCLUDE_DIR AudioUnit/AudioUnit.h)
|
|
find_path(AUDIOTOOLBOX_INCLUDE_DIR AudioToolbox/CoreAudioClock.h)
|
|
|
|
if(COREAUDIO_LIBRARY AND AUDIOUNIT_LIBRARY AND AUDIOUNIT_INCLUDE_DIR)
|
|
set(COREAUDIO_LIBRARIES ${COREAUDIO_LIBRARY} ${AUDIOUNIT_LIBRARY} ${AUDIOTOOLBOX_LIBRARY})
|
|
set(COREAUDIO_INCLUDE_DIRS ${AUDIOUNIT_INCLUDE_DIR} ${AUDIOTOOLBOX_INCLUDE_DIR})
|
|
|
|
set(COREAUDIO_SRC
|
|
plugins/coreaudio/CoreAudioDevice.cpp
|
|
plugins/coreaudio/CoreAudioSynchronizer.cpp
|
|
)
|
|
set(COREAUDIO_HDR
|
|
plugins/coreaudio/CoreAudioDevice.h
|
|
plugins/coreaudio/CoreAudioSynchronizer.h
|
|
)
|
|
|
|
if(NOT PLUGIN_COREAUDIO)
|
|
list(APPEND INCLUDE ${COREAUDIO_INCLUDE_DIRS})
|
|
list(APPEND LIBRARIES ${COREAUDIO_LIBRARIES})
|
|
list(APPEND SRC ${COREAUDIO_SRC})
|
|
list(APPEND HDR ${COREAUDIO_HDR})
|
|
list(APPEND STATIC_PLUGINS CoreAudioDevice)
|
|
endif()
|
|
else()
|
|
if(WITH_STRICT_DEPENDENCIES)
|
|
message(FATAL_ERROR "CoreAudio not found!")
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_COREAUDIO FALSE CACHE BOOL "Build With CoreAudio" FORCE)
|
|
else()
|
|
set(WITH_COREAUDIO FALSE)
|
|
endif()
|
|
message(WARNING "CoreAudio not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# FFMPEG
|
|
if(WITH_FFMPEG)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(FFMPEG ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(FFMPEG_FOUND)
|
|
set(FFMPEG_SRC
|
|
plugins/ffmpeg/FFMPEG.cpp
|
|
plugins/ffmpeg/FFMPEGReader.cpp
|
|
plugins/ffmpeg/FFMPEGWriter.cpp
|
|
)
|
|
set(FFMPEG_HDR
|
|
plugins/ffmpeg/FFMPEG.h
|
|
plugins/ffmpeg/FFMPEGReader.h
|
|
plugins/ffmpeg/FFMPEGWriter.h
|
|
)
|
|
|
|
if(NOT PLUGIN_FFMPEG)
|
|
list(APPEND INCLUDE ${FFMPEG_INCLUDE_DIRS})
|
|
list(APPEND LIBRARIES ${FFMPEG_LIBRARIES})
|
|
list(APPEND SRC ${FFMPEG_SRC})
|
|
list(APPEND HDR ${FFMPEG_HDR})
|
|
list(APPEND STATIC_PLUGINS FFMPEG)
|
|
endif()
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB FFMPEG_DLLS ${LIBRARY_PATH}/ffmpeg/bin/*.dll)
|
|
list(APPEND DLLS ${FFMPEG_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_FFMPEG FALSE CACHE BOOL "Build With FFMPEG" FORCE)
|
|
else()
|
|
set(WITH_FFMPEG FALSE)
|
|
endif()
|
|
message(WARNING "FFMPEG not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# FFTW
|
|
if(WITH_FFTW)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(FFTW ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(FFTW_FOUND)
|
|
set(FFTW_SRC
|
|
src/fx/BinauralSound.cpp
|
|
src/fx/BinauralReader.cpp
|
|
src/fx/Convolver.cpp
|
|
src/fx/ConvolverReader.cpp
|
|
src/fx/ConvolverSound.cpp
|
|
src/fx/Equalizer.cpp
|
|
src/fx/FFTConvolver.cpp
|
|
src/fx/HRTF.cpp
|
|
src/fx/ImpulseResponse.cpp
|
|
src/util/FFTPlan.cpp
|
|
)
|
|
set(FFTW_HDR
|
|
include/fx/BinauralSound.h
|
|
include/fx/BinauralReader.h
|
|
include/fx/Convolver.h
|
|
include/fx/ConvolverReader.h
|
|
include/fx/ConvolverSound.h
|
|
include/fx/Equalizer.h
|
|
include/fx/FFTConvolver.h
|
|
include/fx/HRTF.h
|
|
include/fx/HRTFLoader.h
|
|
include/fx/ImpulseResponse.h
|
|
include/util/FFTPlan.h
|
|
)
|
|
|
|
add_definitions(-DWITH_CONVOLUTION)
|
|
|
|
list(APPEND INCLUDE ${FFTW_INCLUDE_DIR})
|
|
list(APPEND LIBRARIES ${FFTW_LIBRARY})
|
|
|
|
list(APPEND SRC ${FFTW_SRC})
|
|
list(APPEND HDR ${FFTW_HDR})
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB FFTW_DLLS ${LIBRARY_PATH}/fftw/bin/*.dll)
|
|
list(APPEND DLLS ${FFTW_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_FFTW FALSE CACHE BOOL "Build With FFTW" FORCE)
|
|
else()
|
|
set(WITH_FFTW FALSE)
|
|
endif()
|
|
message(WARNING "FFTW not found, convolution functionality will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# JACK
|
|
if(WITH_JACK)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(Jack ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(JACK_FOUND)
|
|
set(JACK_SRC
|
|
plugins/jack/JackDevice.cpp
|
|
plugins/jack/JackSynchronizer.cpp
|
|
plugins/jack/JackLibrary.cpp
|
|
)
|
|
set(JACK_HDR
|
|
plugins/jack/JackDevice.h
|
|
plugins/jack/JackSynchronizer.h
|
|
plugins/jack/JackLibrary.h
|
|
plugins/jack/JackSymbols.h
|
|
)
|
|
|
|
if(DYNLOAD_JACK)
|
|
add_definitions(-DDYNLOAD_JACK)
|
|
endif()
|
|
|
|
if(NOT PLUGIN_JACK)
|
|
list(APPEND INCLUDE ${JACK_INCLUDE_DIRS})
|
|
if(NOT DYNLOAD_JACK)
|
|
list(APPEND LIBRARIES ${JACK_LIBRARIES})
|
|
endif()
|
|
list(APPEND SRC ${JACK_SRC})
|
|
list(APPEND HDR ${JACK_HDR})
|
|
list(APPEND STATIC_PLUGINS JackDevice)
|
|
endif()
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB JACK_DLLS ${LIBRARY_PATH}/jack/bin/*.dll)
|
|
list(APPEND DLLS ${JACK_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_JACK FALSE CACHE BOOL "Build With JACK" FORCE)
|
|
else()
|
|
set(WITH_JACK FALSE)
|
|
endif()
|
|
message(WARNING "JACK not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# LibSndFile
|
|
if(WITH_LIBSNDFILE)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(LibSndFile ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(LIBSNDFILE_FOUND)
|
|
set(LIBSNDFILE_SRC
|
|
plugins/libsndfile/SndFile.cpp
|
|
plugins/libsndfile/SndFileReader.cpp
|
|
plugins/libsndfile/SndFileWriter.cpp
|
|
)
|
|
set(LIBSNDFILE_HDR
|
|
plugins/libsndfile/SndFile.h
|
|
plugins/libsndfile/SndFileReader.h
|
|
plugins/libsndfile/SndFileWriter.h
|
|
)
|
|
|
|
if(NOT PLUGIN_LIBSNDFILE)
|
|
list(APPEND INCLUDE ${LIBSNDFILE_INCLUDE_DIRS})
|
|
list(APPEND LIBRARIES ${LIBSNDFILE_LIBRARIES})
|
|
list(APPEND SRC ${LIBSNDFILE_SRC})
|
|
list(APPEND HDR ${LIBSNDFILE_HDR})
|
|
list(APPEND STATIC_PLUGINS SndFile)
|
|
endif()
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB LIBSNDFILE_DLLS ${LIBRARY_PATH}/libsndfile/bin/*.dll)
|
|
list(APPEND DLLS ${LIBSNDFILE_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_LIBSNDFILE FALSE CACHE BOOL "Build With LibSndFile" FORCE)
|
|
else()
|
|
set(WITH_LIBSNDFILE FALSE)
|
|
endif()
|
|
message(WARNING "LibSndFile not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# OpenAL
|
|
if(WITH_OPENAL)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(OpenAL ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(OPENAL_FOUND)
|
|
set(OPENAL_SRC
|
|
plugins/openal/OpenALDevice.cpp
|
|
plugins/openal/OpenALReader.cpp
|
|
)
|
|
set(OPENAL_HDR
|
|
plugins/openal/OpenALDevice.h
|
|
plugins/openal/OpenALReader.h
|
|
)
|
|
|
|
if(NOT PLUGIN_OPENAL)
|
|
list(APPEND INCLUDE ${OPENAL_INCLUDE_DIR})
|
|
list(APPEND LIBRARIES ${OPENAL_LIBRARY})
|
|
list(APPEND SRC ${OPENAL_SRC})
|
|
list(APPEND HDR ${OPENAL_HDR})
|
|
list(APPEND STATIC_PLUGINS OpenALDevice)
|
|
endif()
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB OPENAL_DLLS ${LIBRARY_PATH}/OpenAL/bin/*.dll)
|
|
list(APPEND DLLS ${OPENAL_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_OPENAL FALSE CACHE BOOL "Build With OpenAL" FORCE)
|
|
else()
|
|
set(WITH_OPENAL FALSE)
|
|
endif()
|
|
message(WARNING "OpenAL not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# PulseAudio
|
|
if(WITH_PULSEAUDIO)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(LibPulse ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(LIBPULSE_FOUND)
|
|
set(PULSEAUDIO_SRC
|
|
plugins/pulseaudio/PulseAudioDevice.cpp
|
|
plugins/pulseaudio/PulseAudioLibrary.cpp
|
|
)
|
|
set(PULSEAUDIO_HDR
|
|
plugins/pulseaudio/PulseAudioDevice.h
|
|
plugins/pulseaudio/PulseAudioLibrary.h
|
|
plugins/pulseaudio/PulseAudioSymbols.h
|
|
)
|
|
|
|
if(DYNLOAD_PULSEAUDIO)
|
|
add_definitions(-DDYNLOAD_PULSEAUDIO)
|
|
endif()
|
|
|
|
if(NOT PLUGIN_PULSEAUDIO)
|
|
list(APPEND INCLUDE ${LIBPULSE_INCLUDE_DIR})
|
|
if(NOT DYNLOAD_PULSEAUDIO)
|
|
list(APPEND LIBRARIES ${LIBPULSE_LIBRARY})
|
|
endif()
|
|
list(APPEND SRC ${PULSEAUDIO_SRC})
|
|
list(APPEND HDR ${PULSEAUDIO_HDR})
|
|
list(APPEND STATIC_PLUGINS PulseAudioDevice)
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_PULSEAUDIO FALSE CACHE BOOL "Build With PulseAudio" FORCE)
|
|
else()
|
|
set(WITH_PULSEAUDIO FALSE)
|
|
endif()
|
|
message(WARNING "PulseAudio not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# Python
|
|
if(WITH_PYTHON)
|
|
if(AUDASPACE_STANDALONE)
|
|
find_package(PythonLibs 3.2 ${PACKAGE_OPTION})
|
|
find_package(NumPy ${PACKAGE_OPTION})
|
|
endif()
|
|
|
|
if(PYTHONLIBS_FOUND AND NUMPY_FOUND)
|
|
list(APPEND INCLUDE ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIRS})
|
|
|
|
if(WITH_PYTHON_MODULE)
|
|
find_package(PythonInterp 3.2 ${PACKAGE_OPTION})
|
|
|
|
if(NOT PYTHONINTERP_FOUND)
|
|
set(WITH_PYTHON_MODULE FALSE)
|
|
message(WARNING "Python interpreter not found, module will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
set(AUDASPACE_PY_LIBRARY -laudaspace-py)
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB PYTHON_DLLS ${LIBRARY_PATH}/Python/bin/*.dll)
|
|
list(APPEND DLLS ${PYTHON_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_PYTHON FALSE CACHE BOOL "Build With Python Library" FORCE)
|
|
else()
|
|
set(WITH_PYTHON FALSE)
|
|
endif()
|
|
message(WARNING "Python & NumPy libraries not found, language binding will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# SDL
|
|
if(WITH_SDL)
|
|
if(AUDASPACE_STANDALONE)
|
|
if(USE_SDL2)
|
|
find_package(SDL2)
|
|
if(SDL2_FOUND)
|
|
set(SDL_INCLUDE_DIR ${SDL2_INCLUDE_DIR})
|
|
set(SDL_LIBRARY ${SDL2_LIBRARY})
|
|
set(SDL_FOUND TRUE)
|
|
else()
|
|
find_package(SDL ${PACKAGE_OPTION})
|
|
endif()
|
|
else()
|
|
find_package(SDL ${PACKAGE_OPTION})
|
|
endif()
|
|
endif()
|
|
|
|
if(SDL_FOUND)
|
|
set(SDL_SRC
|
|
plugins/sdl/SDLDevice.cpp
|
|
)
|
|
set(SDL_HDR
|
|
plugins/sdl/SDLDevice.h
|
|
)
|
|
|
|
if(NOT PLUGIN_SDL)
|
|
list(APPEND INCLUDE ${SDL_INCLUDE_DIR})
|
|
list(APPEND LIBRARIES ${SDL_LIBRARY})
|
|
list(APPEND SRC ${SDL_SRC})
|
|
list(APPEND HDR ${SDL_HDR})
|
|
list(APPEND STATIC_PLUGINS SDLDevice)
|
|
endif()
|
|
|
|
if(WIN32 AND AUDASPACE_STANDALONE)
|
|
file(GLOB SDL_DLLS ${LIBRARY_PATH}/sdl/bin/*.dll)
|
|
list(APPEND DLLS ${SDL_DLLS})
|
|
endif()
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_SDL FALSE CACHE BOOL "Build With SDL" FORCE)
|
|
else()
|
|
set(WITH_SDL FALSE)
|
|
endif()
|
|
message(WARNING "SDL not found, plugin will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
# WASAPI
|
|
if(WITH_WASAPI)
|
|
set(WASAPI_SRC
|
|
plugins/wasapi/WASAPIDevice.cpp
|
|
)
|
|
set(WASAPI_HDR
|
|
plugins/wasapi/WASAPIDevice.h
|
|
)
|
|
|
|
if(NOT PLUGIN_WASAPI)
|
|
list(APPEND LIBRARIES ksuser)
|
|
list(APPEND SRC ${WASAPI_SRC})
|
|
list(APPEND HDR ${WASAPI_HDR})
|
|
list(APPEND STATIC_PLUGINS WASAPIDevice)
|
|
endif()
|
|
endif()
|
|
|
|
# library configuration
|
|
|
|
if(SHARED_LIBRARY)
|
|
set(AUD_LIBRARY_TYPE AUD_SHARED_LIBRARY)
|
|
set(LIBRARY_TYPE SHARED)
|
|
add_definitions(-DAUD_BUILD_SHARED_LIBRARY)
|
|
else()
|
|
set(AUD_LIBRARY_TYPE AUD_STATIC_LIBRARY)
|
|
set(LIBRARY_TYPE STATIC)
|
|
endif()
|
|
|
|
# file configuration
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config/Audaspace.h.in ${CMAKE_CURRENT_BINARY_DIR}/Audaspace.h ESCAPE_QUOTES @ONLY)
|
|
|
|
list(APPEND HDR ${CMAKE_CURRENT_BINARY_DIR}/Audaspace.h)
|
|
|
|
set(STATIC_PLUGIN_CLASSES "")
|
|
set(STATIC_PLUGIN_REGISTERS "")
|
|
|
|
foreach(PLUGIN ${STATIC_PLUGINS})
|
|
list(APPEND STATIC_PLUGIN_CLASSES "STATIC_PLUGIN_CLASS(" ${PLUGIN} ")\n")
|
|
list(APPEND STATIC_PLUGIN_REGISTERS "\tSTATIC_PLUGIN_REGISTER(" ${PLUGIN} ")\n")
|
|
endforeach()
|
|
|
|
string(CONCAT STATIC_PLUGIN_CLASSES ${STATIC_PLUGIN_CLASSES})
|
|
string(CONCAT STATIC_PLUGIN_REGISTERS ${STATIC_PLUGIN_REGISTERS})
|
|
|
|
if(WIN32)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/plugin/PluginManagerWindows.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/PluginManager.cpp ESCAPE_QUOTES @ONLY)
|
|
if(WITH_FFTW)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/fx/HRTFLoaderWindows.cpp ${CMAKE_CURRENT_BINARY_DIR}/HRTFLoader.cpp COPYONLY)
|
|
endif()
|
|
else()
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/plugin/PluginManagerUnix.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/PluginManager.cpp ESCAPE_QUOTES @ONLY)
|
|
if(WITH_FFTW)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/fx/HRTFLoaderUnix.cpp ${CMAKE_CURRENT_BINARY_DIR}/HRTFLoader.cpp COPYONLY)
|
|
endif()
|
|
endif()
|
|
|
|
list(APPEND SRC ${CMAKE_CURRENT_BINARY_DIR}/PluginManager.cpp)
|
|
if(WITH_FFTW)
|
|
list(APPEND SRC ${CMAKE_CURRENT_BINARY_DIR}/HRTFLoader.cpp)
|
|
endif()
|
|
|
|
# directories
|
|
|
|
include_directories(${INCLUDE})
|
|
link_directories()
|
|
|
|
# install configuration
|
|
|
|
if(WIN32)
|
|
set(BIN_DESTINATION ".")
|
|
else()
|
|
set(BIN_DESTINATION "bin")
|
|
endif()
|
|
|
|
set(LIB_DESTINATION "lib${LIB_SUFFIX}")
|
|
|
|
# library
|
|
|
|
add_library(audaspace ${LIBRARY_TYPE} ${SRC} ${HDR})
|
|
target_link_libraries(audaspace ${LIBRARIES})
|
|
set_target_properties(audaspace PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
install(TARGETS audaspace
|
|
RUNTIME DESTINATION ${BIN_DESTINATION}
|
|
LIBRARY DESTINATION ${LIB_DESTINATION}
|
|
ARCHIVE DESTINATION ${LIB_DESTINATION}
|
|
)
|
|
|
|
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include/audaspace)
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Audaspace.h DESTINATION include/audaspace)
|
|
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/packages/pkgconfig/audaspace.pc.in ${CMAKE_CURRENT_BINARY_DIR}/audaspace.pc @ONLY)
|
|
|
|
if(NOT WIN32 AND NOT APPLE)
|
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/audaspace.pc DESTINATION "lib${LIB_SUFFIX}/pkgconfig")
|
|
endif()
|
|
endif()
|
|
|
|
# plugins
|
|
|
|
if(WITH_COREAUDIO AND PLUGIN_COREAUDIO)
|
|
add_definitions(-DCOREAUDIO_PLUGIN)
|
|
include_directories(${INCLUDE} ${COREAUDIO_INCLUDE_DIRS})
|
|
add_library(audcoreaudio SHARED ${COREAUDIO_SRC} ${COREAUDIO_HDR} ${HDR})
|
|
if(WITH_VERSIONED_PLUGINS)
|
|
set_target_properties(audcoreaudio PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
endif()
|
|
target_link_libraries(audcoreaudio audaspace ${COREAUDIO_LIBRARIES})
|
|
install(TARGETS audcoreaudio DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_FFMPEG AND PLUGIN_FFMPEG)
|
|
add_definitions(-DFFMPEG_PLUGIN)
|
|
include_directories(${INCLUDE} ${FFMPEG_INCLUDE_DIRS})
|
|
add_library(audffmpeg SHARED ${FFMPEG_SRC} ${FFMPEG_HDR} ${HDR})
|
|
target_link_libraries(audffmpeg audaspace ${FFMPEG_LIBRARIES})
|
|
set_target_properties(audffmpeg PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
install(TARGETS audffmpeg DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_JACK AND PLUGIN_JACK)
|
|
add_definitions(-DJACK_PLUGIN)
|
|
include_directories(${INCLUDE} ${JACK_INCLUDE_DIRS})
|
|
add_library(audjack SHARED ${JACK_SRC} ${JACK_HDR} ${HDR})
|
|
if(DYNLOAD_JACK)
|
|
target_link_libraries(audjack audaspace)
|
|
else()
|
|
target_link_libraries(audjack audaspace ${JACK_LIBRARIES})
|
|
endif()
|
|
set_target_properties(audjack PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
install(TARGETS audjack DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_LIBSNDFILE AND PLUGIN_LIBSNDFILE)
|
|
add_definitions(-DLIBSNDFILE_PLUGIN)
|
|
include_directories(${INCLUDE} ${LIBSNDFILE_INCLUDE_DIRS})
|
|
add_library(audlibsndfile SHARED ${LIBSNDFILE_SRC} ${LIBSNDFILE_HDR} ${HDR})
|
|
set_target_properties(audlibsndfile PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
target_link_libraries(audlibsndfile audaspace ${LIBSNDFILE_LIBRARIES})
|
|
install(TARGETS audlibsndfile DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_OPENAL AND PLUGIN_OPENAL)
|
|
add_definitions(-DOPENAL_PLUGIN)
|
|
include_directories(${INCLUDE} ${OPENAL_INCLUDE_DIR})
|
|
add_library(audopenal SHARED ${OPENAL_SRC} ${OPENAL_HDR} ${HDR})
|
|
set_target_properties(audopenal PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
target_link_libraries(audopenal audaspace ${OPENAL_LIBRARY})
|
|
install(TARGETS audopenal DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_PULSEAUDIO AND PLUGIN_PULSEAUDIO)
|
|
add_definitions(-DPULSEAUDIO_PLUGIN)
|
|
include_directories(${INCLUDE} ${LIBPULSE_INCLUDE_DIR})
|
|
add_library(audpulseaudio SHARED ${PULSEAUDIO_SRC} ${PULSEAUDIO_HDR} ${HDR})
|
|
set_target_properties(audpulseaudio PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
if(DYNLOAD_PULSEAUDIO)
|
|
target_link_libraries(audpulseaudio audaspace)
|
|
else()
|
|
target_link_libraries(audpulseaudio audaspace ${LIBPULSE_LIBRARY})
|
|
endif()
|
|
install(TARGETS audpulseaudio DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_SDL AND PLUGIN_SDL)
|
|
add_definitions(-DSDL_PLUGIN)
|
|
include_directories(${INCLUDE} ${SDL_INCLUDE_DIR})
|
|
add_library(audsdl SHARED ${SDL_SRC} ${SDL_HDR} ${HDR})
|
|
set_target_properties(audsdl PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
target_link_libraries(audsdl audaspace ${SDL_LIBRARY})
|
|
install(TARGETS audsdl DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
if(WITH_WASAPI AND PLUGIN_WASAPI)
|
|
add_definitions(-DWASAPI_PLUGIN)
|
|
include_directories(${INCLUDE})
|
|
add_library(audwasapi SHARED ${WASAPI_SRC} ${WASAPI_HDR} ${HDR})
|
|
if(WITH_VERSIONED_PLUGINS)
|
|
set_target_properties(audwasapi PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
endif()
|
|
target_link_libraries(audwasapi audaspace ksuser)
|
|
install(TARGETS audwasapi DESTINATION ${DEFAULT_PLUGIN_PATH})
|
|
endif()
|
|
|
|
# dlls
|
|
|
|
if(WIN32)
|
|
if(DLLS)
|
|
install(FILES ${DLLS} DESTINATION ${BIN_DESTINATION})
|
|
endif()
|
|
endif()
|
|
|
|
# demos
|
|
|
|
if(BUILD_DEMOS)
|
|
include_directories(${INCLUDE})
|
|
|
|
set(DEMOS audainfo audaplay audaconvert audaremap signalgen randsounds dynamicmusic playbackmanager)
|
|
|
|
add_executable(audainfo demos/audainfo.cpp)
|
|
target_link_libraries(audainfo audaspace)
|
|
|
|
add_executable(audaplay demos/audaplay.cpp)
|
|
target_link_libraries(audaplay audaspace)
|
|
|
|
add_executable(audaconvert demos/audaconvert.cpp)
|
|
target_link_libraries(audaconvert audaspace)
|
|
|
|
add_executable(audaremap demos/audaremap.cpp)
|
|
target_link_libraries(audaremap audaspace)
|
|
|
|
add_executable(signalgen demos/signalgen.cpp)
|
|
target_link_libraries(signalgen audaspace)
|
|
|
|
add_executable(randsounds demos/randsounds.cpp)
|
|
target_link_libraries(randsounds audaspace)
|
|
|
|
add_executable(dynamicmusic demos/dynamicmusic.cpp)
|
|
target_link_libraries(dynamicmusic audaspace)
|
|
|
|
add_executable(playbackmanager demos/playbackmanager.cpp)
|
|
target_link_libraries(playbackmanager audaspace)
|
|
|
|
if(WITH_FFTW)
|
|
list(APPEND DEMOS convolution binaural)
|
|
|
|
add_executable(convolution demos/convolution.cpp)
|
|
target_link_libraries(convolution audaspace)
|
|
|
|
add_executable(binaural demos/binaural.cpp)
|
|
target_link_libraries(binaural audaspace)
|
|
endif()
|
|
|
|
if(WITH_OPENAL)
|
|
list(APPEND DEMOS openaldevices)
|
|
|
|
add_executable(openaldevices demos/openaldevices.cpp)
|
|
if(PLUGIN_OPENAL)
|
|
target_link_libraries(openaldevices audaspace audopenal)
|
|
else()
|
|
target_link_libraries(openaldevices audaspace)
|
|
endif()
|
|
endif()
|
|
|
|
install(TARGETS ${DEMOS}
|
|
RUNTIME DESTINATION ${BIN_DESTINATION}
|
|
LIBRARY DESTINATION ${LIB_DESTINATION}
|
|
ARCHIVE DESTINATION ${LIB_DESTINATION}
|
|
)
|
|
endif()
|
|
|
|
# bindings
|
|
|
|
if(WITH_C)
|
|
if(SEPARATE_C)
|
|
add_library(audaspace-c ${LIBRARY_TYPE} ${C_SRC} ${C_HDR})
|
|
target_link_libraries(audaspace-c audaspace)
|
|
set_target_properties(audaspace-c PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
install(TARGETS audaspace-c
|
|
RUNTIME DESTINATION ${BIN_DESTINATION}
|
|
LIBRARY DESTINATION ${LIB_DESTINATION}
|
|
ARCHIVE DESTINATION ${LIB_DESTINATION}
|
|
)
|
|
endif()
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
install(FILES ${C_HDR} DESTINATION include/audaspace)
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_PYTHON)
|
|
set(PYTHON_SRC
|
|
bindings/python/PyAPI.cpp
|
|
bindings/python/PyDevice.cpp
|
|
bindings/python/PyDynamicMusic.cpp
|
|
bindings/python/PyHandle.cpp
|
|
bindings/python/PyPlaybackManager.cpp
|
|
bindings/python/PySequence.cpp
|
|
bindings/python/PySequenceEntry.cpp
|
|
bindings/python/PySound.cpp
|
|
bindings/python/PySource.cpp
|
|
bindings/python/PyThreadPool.cpp
|
|
)
|
|
set(PYTHON_HDR
|
|
bindings/python/PyAPI.h
|
|
bindings/python/PyDevice.h
|
|
bindings/python/PyDynamicMusic.h
|
|
bindings/python/PyHandle.h
|
|
bindings/python/PyPlaybackManager.h
|
|
bindings/python/PySequence.h
|
|
bindings/python/PySequenceEntry.h
|
|
bindings/python/PySound.h
|
|
bindings/python/PySource.h
|
|
bindings/python/PyThreadPool.h
|
|
)
|
|
|
|
if(WITH_FFTW)
|
|
list(APPEND PYTHON_SRC
|
|
bindings/python/PyHRTF.cpp
|
|
bindings/python/PyImpulseResponse.cpp
|
|
)
|
|
list(APPEND PYTHON_HDR
|
|
bindings/python/PyHRTF.h
|
|
bindings/python/PyImpulseResponse.h
|
|
)
|
|
endif()
|
|
|
|
add_library(audaspace-py ${LIBRARY_TYPE} ${PYTHON_SRC} ${PYTHON_HDR})
|
|
target_link_libraries(audaspace-py audaspace ${PYTHON_LIBRARIES})
|
|
set_target_properties(audaspace-py PROPERTIES SOVERSION ${AUDASPACE_VERSION})
|
|
|
|
if(AUDASPACE_STANDALONE)
|
|
install(TARGETS audaspace-py
|
|
RUNTIME DESTINATION ${BIN_DESTINATION}
|
|
LIBRARY DESTINATION ${LIB_DESTINATION}
|
|
ARCHIVE DESTINATION ${LIB_DESTINATION}
|
|
)
|
|
|
|
install(FILES ${PYTHON_HDR} DESTINATION include/audaspace/python)
|
|
endif()
|
|
|
|
if(WITH_PYTHON_MODULE)
|
|
set(PYTHON_SOURCE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bindings/python)
|
|
configure_file(${PYTHON_SOURCE_DIRECTORY}/setup.py.in ${CMAKE_CURRENT_BINARY_DIR}/setup.py ESCAPE_QUOTES @ONLY)
|
|
|
|
if(APPLE)
|
|
add_custom_command(OUTPUT build COMMAND MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} ${PYTHON_EXECUTABLE} setup.py build DEPENDS ${PYTHON_SRC} ${PYTHON_HDR} setup.py)
|
|
elseif(WIN32)
|
|
set(ENV{VS100COMNTOOLS} $ENV{VS120COMNTOOLS})
|
|
add_custom_command(OUTPUT build COMMAND ${PYTHON_EXECUTABLE} setup.py build DEPENDS ${PYTHON_SRC} ${PYTHON_HDR} setup.py)
|
|
else()
|
|
add_custom_command(OUTPUT build COMMAND ${PYTHON_EXECUTABLE} setup.py build DEPENDS ${PYTHON_SRC} ${PYTHON_HDR} setup.py)
|
|
endif()
|
|
add_custom_target(pythonmodule ALL DEPENDS build SOURCES ${PYTHON_SOURCE_DIRECTORY}/setup.py.in ${PYTHON_SRC} ${PYTHON_HDR})
|
|
add_dependencies(pythonmodule audaspace)
|
|
|
|
install(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} setup.py install --root=\$ENV{DESTDIR} --prefix=${CMAKE_INSTALL_PREFIX})")
|
|
endif()
|
|
endif()
|
|
|
|
# docs
|
|
|
|
if(WITH_DOCS)
|
|
find_package(Doxygen ${PACKAGE_OPTION})
|
|
|
|
if(DOXYGEN_FOUND AND DOXYGEN_DOT_FOUND)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
|
|
|
add_custom_target(audaspace_doc ALL ${DOXYGEN_EXECUTABLE} Doxyfile COMMENT "Building C++ HTML documentation with Doxygen.")
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_DOCS FALSE CACHE BOOL "Build C++ HTML Documentation with Doxygen" FORCE)
|
|
else()
|
|
set(WITH_DOCS FALSE)
|
|
endif()
|
|
message(WARNING "Doxygen (and/or dot) not found, documentation will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_BINDING_DOCS)
|
|
find_package(Sphinx ${PACKAGE_OPTION})
|
|
|
|
if(SPHINX_FOUND)
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bindings/doc/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY)
|
|
|
|
add_custom_target(bindings_doc ALL COMMAND ${PYTHON_EXECUTABLE} setup.py --build-docs ${SPHINX_EXECUTABLE} -q -b html -c "${CMAKE_CURRENT_BINARY_DIR}" -d "${CMAKE_CURRENT_BINARY_DIR}/_doctrees" "${CMAKE_CURRENT_SOURCE_DIR}/bindings/doc" "${CMAKE_CURRENT_BINARY_DIR}/doc/bindings" DEPENDS pythonmodule COMMENT "Building C/Python HTML documentation with Sphinx.")
|
|
else()
|
|
if(AUDASPACE_STANDALONE)
|
|
set(WITH_BINDING_DOCS FALSE CACHE BOOL "Build C/Python HTML Documentation with Sphinx" FORCE)
|
|
else()
|
|
set(WITH_BINDING_DOCS FALSE)
|
|
endif()
|
|
message(WARNING "Sphinx not found, binding documentation will not be built.")
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_DOCS OR WITH_BINDING_DOCS)
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/ DESTINATION ${DOCUMENTATION_INSTALL_PATH})
|
|
endif()
|