add_library( ${TARGET} STATIC ) def_vars() set( CMAKE_MODULE_PATH ${TARGET_ROOT}/cmake_support ) # Define the platform specific interface options if( CMAKE_SYSTEM_NAME MATCHES "Windows" ) cmd_option( ${_OPT}use_pa_ds "Use the portaudio DirectSound interface if available" YES ) cmd_option( ${_OPT}use_pa_wasapi "Use the portaudio WASAPI interface if available" YES ) cmd_option( ${_OPT}use_pa_wmme "Use the portaudio WMME interface if available" YES ) set( ASIOSDK_DIR $ENV{ASIOSDK_DIR} ) # not GUI string(REPLACE "\\" "/" ASIOSDK_DIR "${ASIOSDK_DIR}") else() # Look for OSS if the user wants it cmd_option( ${_OPT}use_pa_oss "Use the OSS audio interface if available" YES ) if( ${_OPT}use_pa_oss ) find_path( OSS_INCLUDE NAMES sys/soundcard.h ) mark_as_advanced( FORCE OSS_INCLUDE ) if( OSS_INCLUDE ) set( OSS_INCLUDE_DIRS ${OSS_INCLUDE} ) endif() find_library( OSS_LIBRARY NAMES ossaudio ) mark_as_advanced( FORCE OSS_LIBRARY ) if( OSS_LIBRARY ) set( OSS_LIBRARIES ${OSS_LIBRARY} ) endif() if( NOT OSS_INCLUDE_DIRS ) set_cache_value( ${_OPT}use_pa_oss NO ) endif() endif() if( CMAKE_SYSTEM_NAME MATCHES "Darwin" ) cmd_option( ${_OPT}use_pa_coreaudio "Use the portaudio CoreAudio interface if available" YES ) elseif( CMAKE_SYSTEM_NAME MATCHES "Linux|FreeBSD" ) cmd_option( ${_OPT}use_pa_alsa "Use the portaudio ALSA interface if available" YES ) if( ${_OPT}use_pa_alsa ) find_package( ALSA ) if( NOT ALSA_FOUND ) set_cache_value( ${_OPT}use_pa_alsa NO ) endif() endif() endif() endif() # JACK can be dynamically loaded, linked to, or off cmd_option( ${_OPT}use_pa_jack "Use the JACK audio interface if available [loaded, linked, off]" "linked" STRINGS "loaded" "linked" "off" ) if( NOT ${_OPT}use_pa_jack STREQUAL "off" ) # Find it find_package( Jack ) if( NOT JACK_FOUND) set_cache_value( ${_OPT}use_pa_jack "off" ) endif() endif() if( ASIOSDK_DIR ) list( APPEND ASIOSDK_SOURCES PRIVATE ${ASIOSDK_DIR}/common/asio.cpp ${ASIOSDK_DIR}/host/asiodrivers.cpp ${ASIOSDK_DIR}/host/pc/asiolist.cpp ) endif() list( APPEND SOURCES PRIVATE ${TARGET_ROOT}/src/common/pa_allocation.c ${TARGET_ROOT}/src/common/pa_converters.c ${TARGET_ROOT}/src/common/pa_cpuload.c ${TARGET_ROOT}/src/common/pa_debugprint.c ${TARGET_ROOT}/src/common/pa_dither.c ${TARGET_ROOT}/src/common/pa_dynload.c ${TARGET_ROOT}/src/common/pa_front.c ${TARGET_ROOT}/src/common/pa_process.c ${TARGET_ROOT}/src/common/pa_ringbuffer.c ${TARGET_ROOT}/src/common/pa_stream.c ${TARGET_ROOT}/src/common/pa_trace.c $<$: ${TARGET_ROOT}/src/os/win/pa_win_coinitialize.c ${TARGET_ROOT}/src/os/win/pa_win_hostapis.c ${TARGET_ROOT}/src/os/win/pa_win_util.c ${TARGET_ROOT}/src/os/win/pa_win_waveformat.c ${TARGET_ROOT}/src/os/win/pa_win_wdmks_utils.c $<$: ${TARGET_ROOT}/src/os/win/pa_x86_plain_converters.c > > $<$: ${TARGET_ROOT}/src/hostapi/coreaudio/pa_mac_core.c ${TARGET_ROOT}/src/hostapi/coreaudio/pa_mac_core_blocking.c ${TARGET_ROOT}/src/hostapi/coreaudio/pa_mac_core_utilities.c > $<$: ${TARGET_ROOT}/src/os/unix/pa_unix_hostapis.c ${TARGET_ROOT}/src/os/unix/pa_unix_util.c > $<$: ${TARGET_ROOT}/src/hostapi/dsound/pa_win_ds.c ${TARGET_ROOT}/src/hostapi/dsound/pa_win_ds_dynlink.c > $<$: ${TARGET_ROOT}/src/hostapi/wasapi/pa_win_wasapi.c > $<$: ${TARGET_ROOT}/src/hostapi/asio/iasiothiscallresolver.cpp ${TARGET_ROOT}/src/hostapi/asio/pa_asio.cpp > $<$: ${TARGET_ROOT}/src/hostapi/wmme/pa_win_wmme.c > $<$: ${TARGET_ROOT}/src/hostapi/alsa/pa_linux_alsa.c > $<$: ${TARGET_ROOT}/src/hostapi/oss/pa_unix_oss.c > $<$>: ${TARGET_ROOT}/src/hostapi/jack/pa_jack.c ${TARGET_ROOT}/src/hostapi/jack/pa_jack_dynload.c > ) list( APPEND INCLUDES PRIVATE ${TARGET_ROOT}/src/common $<$: ${TARGET_ROOT}/src/os/win > $<$: ${TARGET_ROOT}/src/os/unix > $<$: ${TARGET_ROOT}/src/hostapi/dsound > $<$: ${TARGET_ROOT}/src/hostapi/asio ${ASIOSDK_DIR}/common ${ASIOSDK_DIR}/host ${ASIOSDK_DIR}/host/pc > $<$: ${TARGET_ROOT}/src/hostapi/coreaudio > $<$: ${ALSA_INCLUDE_DIRS} > $<$: ${OSS_INCLUDE_DIRS} > $<$>: ${TARGET_ROOT}/src/hostapi/jack ${JACK_INCLUDE_DIRS} > PUBLIC ${TARGET_ROOT}/include ) list( APPEND DEFINES PUBLIC $<$: PA_USE_DS=1 > $<$: PA_USE_WASAPI=1 > $<$: PA_USE_WMME=1 > $<$: PA_USE_ASIO=1 > $<$: PA_USE_COREAUDIO=1 > $<$: PA_USE_ALSA=1 > $<$: PA_USE_OSS=1 HAVE_SYS_SOUNDCARD_H=1 > $<$>: PA_USE_JACK=1 > $<$: PA_DYNAMIC_JACK=1 > ) list( APPEND LIBRARIES INTERFACE $<$: ${ALSA_LIBRARIES} > $<$: ${OSS_LIBRARIES} > $<$>: ${JACK_LIBRARIES} > ) organize_source( "${TARGET_ROOT}" "" "${SOURCES}" ) if( ASIOSDK_DIR ) organize_source( "${ASIOSDK_DIR}" "" "${ASIOSDK_SOURCES}" ) endif() target_sources( ${TARGET} PRIVATE ${SOURCES} ${ASIOSDK_SOURCES} ) target_compile_definitions( ${TARGET} PRIVATE ${DEFINES} ) target_include_directories( ${TARGET} PRIVATE ${INCLUDES} ) target_link_libraries( ${TARGET} PRIVATE ${LIBRARIES} )