mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00

Up-to-date with revision 24c8d575e588d557d28f4011becb753421346860. Resolves issues building with Visual Studio. Enabled PortAudio when building with Visual Studio and clang-cl. docs: Removed note about duplicate GUID symbols in PortAudio when built with MSVC.
123 lines
4.7 KiB
CMake
123 lines
4.7 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
|
cmake_policy(VERSION 3.13)
|
|
|
|
project(PortAudioCpp VERSION 19.8 LANGUAGES CXX)
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
|
|
|
# Todo (multi-generator): Add support for multiple generators like: - {Debug,
|
|
# Release} x {Static, Dynamic} x {MT, MD (Windows only)}
|
|
|
|
# ##############################################################################
|
|
# sources and headers
|
|
# ##############################################################################
|
|
|
|
set(portaudiocpp-sources
|
|
source/portaudiocpp/BlockingStream.cxx
|
|
source/portaudiocpp/CFunCallbackStream.cxx
|
|
source/portaudiocpp/CallbackInterface.cxx
|
|
source/portaudiocpp/CallbackStream.cxx
|
|
source/portaudiocpp/CppFunCallbackStream.cxx
|
|
source/portaudiocpp/Device.cxx
|
|
source/portaudiocpp/DirectionSpecificStreamParameters.cxx
|
|
source/portaudiocpp/Exception.cxx
|
|
source/portaudiocpp/HostApi.cxx
|
|
source/portaudiocpp/InterfaceCallbackStream.cxx
|
|
source/portaudiocpp/MemFunCallbackStream.cxx
|
|
source/portaudiocpp/Stream.cxx
|
|
source/portaudiocpp/StreamParameters.cxx
|
|
source/portaudiocpp/System.cxx
|
|
source/portaudiocpp/SystemDeviceIterator.cxx
|
|
source/portaudiocpp/SystemHostApiIterator.cxx)
|
|
|
|
# since we don't GLOBing this variable must be kept up to date otherwise user
|
|
# installations are broken.
|
|
set(portaudiocpp-header-files
|
|
include/portaudiocpp/AutoSystem.hxx
|
|
include/portaudiocpp/BlockingStream.hxx
|
|
include/portaudiocpp/CFunCallbackStream.hxx
|
|
include/portaudiocpp/CallbackInterface.hxx
|
|
include/portaudiocpp/CallbackStream.hxx
|
|
include/portaudiocpp/CppFunCallbackStream.hxx
|
|
include/portaudiocpp/Device.hxx
|
|
include/portaudiocpp/DirectionSpecificStreamParameters.hxx
|
|
include/portaudiocpp/Exception.hxx
|
|
include/portaudiocpp/HostApi.hxx
|
|
include/portaudiocpp/InterfaceCallbackStream.hxx
|
|
include/portaudiocpp/MemFunCallbackStream.hxx
|
|
include/portaudiocpp/PortAudioCpp.hxx
|
|
include/portaudiocpp/SampleDataFormat.hxx
|
|
include/portaudiocpp/Stream.hxx
|
|
include/portaudiocpp/StreamParameters.hxx
|
|
include/portaudiocpp/System.hxx
|
|
include/portaudiocpp/SystemDeviceIterator.hxx
|
|
include/portaudiocpp/SystemHostApiIterator.hxx)
|
|
|
|
if(WIN32)
|
|
find_package(ASIO MODULE)
|
|
if(ASIO_FOUND)
|
|
list(APPEND portaudiocpp-sources source/portaudiocpp/AsioDeviceAdapter.cxx)
|
|
list(APPEND portaudiocpp-header-files
|
|
include/portaudiocpp/AsioDeviceAdapter.hxx)
|
|
endif()
|
|
endif()
|
|
|
|
# ##############################################################################
|
|
# portaudiocpp-targets
|
|
# ##############################################################################
|
|
|
|
add_library(portaudiocpp ${portaudiocpp-sources})
|
|
add_library(PortAudio::portaudiocpp ALIAS portaudiocpp) # For subdirectory build
|
|
|
|
find_package(PortAudio MODULE REQUIRED)
|
|
|
|
target_link_libraries(portaudiocpp PUBLIC PortAudio::portaudio)
|
|
target_include_directories(
|
|
portaudiocpp PUBLIC $<INSTALL_INTERFACE:include>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
|
|
set_target_properties(portaudiocpp PROPERTIES SOVERSION 2)
|
|
# Todo (modernize): update the code at least to c++14
|
|
# target_compile_features(portaudiocpp PUBLIC cxx_std_14)
|
|
|
|
# ## Export ###
|
|
include(GNUInstallDirs)
|
|
|
|
install(
|
|
TARGETS portaudiocpp
|
|
EXPORT PortAudioCppTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
INCLUDES
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/portaudiocpp)
|
|
|
|
install(FILES ${portaudiocpp-header-files}
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/portaudiocpp)
|
|
|
|
install(
|
|
EXPORT PortAudioCppTargets
|
|
FILE PortAudioCppTargets.cmake
|
|
NAMESPACE PortAudio::
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PortAudio)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
configure_package_config_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/cmake/PortAudioCppConfig.cmake.in
|
|
"${CMAKE_CURRENT_BINARY_DIR}/PortAudioCppConfig.cmake"
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PortAudio)
|
|
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/PortAudioCppConfigVersion.cmake"
|
|
COMPATIBILITY SameMajorVersion
|
|
)
|
|
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PortAudioCppConfig.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/PortAudioCppConfigVersion.cmake"
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PortAudio)
|
|
|
|
#use relative path, since CMAKE can't reconfigure on install with different prefix path
|
|
set(PC_PREFIX "\${pcfiledir}/../..")
|
|
configure_file(cmake/portaudiocpp.pc.in "${CMAKE_CURRENT_BINARY_DIR}/portaudiocpp.pc" @ONLY)
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/portaudiocpp.pc"
|
|
CONFIGURATIONS Release RelWithDebInfo
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|