arduino_midi_player/Midi/music-box-pc-master/rtaudio/meson.build
2025-03-24 14:30:56 +08:00

137 lines
3.7 KiB
Meson

project('RtAudio', 'cpp',
version: '5.2.0',
default_options: ['warning_level=3',
'c_std=c99',
'cpp_std=c++11',
'default_library=both'])
fs = import('fs')
pkg = import('pkgconfig')
rt_h = fs.read('RtAudio.h').strip().split('\n')
foreach line : rt_h
if line.startswith('#define RTAUDIO_VERSION')
rt_version = line.substring(-6,-1)
endif
endforeach
assert(meson.project_version() == rt_version, 'Meson\'s RtAudio version does not match the version in header file.')
ac_file = fs.read('configure.ac').strip().split('\n')
foreach line : ac_file
if line.startswith('m4_define([lt_current],')
lt_current = line.substring(-2,-1).to_int()
elif line.startswith('m4_define([lt_revision],')
lt_revision = line.substring(-2,-1).to_int()
elif line.startswith('m4_define([lt_age],')
lt_age = line.substring(-2,-1).to_int()
endif
endforeach
so_version = '@0@.@1@.@2@'.format(lt_current - lt_age, lt_age, lt_revision)
src = ['RtAudio.cpp', 'rtaudio_c.cpp']
incdir = include_directories('include')
install_headers('RtAudio.h', 'rtaudio_c.h', subdir: 'rtaudio')
compiler = meson.get_compiler('cpp')
deps = []
defines = ['-DRTAUDIO_EXPORT']
if compiler.has_function('gettimeofday', prefix: '#include <sys/time.h>')
defines += '-DHAVE_GETTIMEOFDAY'
endif
if get_option('debug') == true
defines += '-D__RTAUDIO_DEBUG__'
endif
deps += dependency('threads')
alsa_dep = dependency('alsa', required: get_option('alsa'))
if alsa_dep.found()
defines += '-D__LINUX_ALSA__'
deps += alsa_dep
endif
jack_dep = dependency('jack', required: get_option('jack'))
if jack_dep.found()
defines += '-D__UNIX_JACK__'
deps += jack_dep
endif
if get_option('oss') == true
defines += '-D__LINUX_OSS__'
endif
pulsesimple_dep = dependency('libpulse-simple', required: get_option('pulse'))
if pulsesimple_dep.found()
defines += '-D__LINUX_PULSE__'
deps += pulsesimple_dep
endif
core_dep = dependency('appleframeworks', modules: ['CoreAudio', 'CoreFoundation'], required: get_option('core'))
if core_dep.found()
defines += '-D__MACOSX_CORE__'
deps += core_dep
endif
dsound_dep = compiler.find_library('dsound', required: get_option('dsound'))
if dsound_dep.found()
defines += '-D__WINDOWS_DS__'
deps += dsound_dep
endif
wasapi_found = compiler.check_header('audioclient.h', required: get_option('wasapi'))
if wasapi_found
deps += compiler.find_library('mfplat', required: true)
deps += compiler.find_library('mfuuid', required: true)
deps += compiler.find_library('ksuser', required: true)
deps += compiler.find_library('wmcodecdspuuid', required: true)
defines += '-D__WINDOWS_WASAPI__'
endif
asio_found = compiler.check_header('windows.h', required: get_option('asio'))
if asio_found
src += ['include/asio.cpp',
'include/asiolist.cpp',
'include/asiodrivers.cpp',
'include/iasiothiscallresolver.cpp']
defines += '-D__WINDOWS_ASIO__'
endif
if host_machine.system() == 'windows'
deps += compiler.find_library('ole32', required: true)
deps += compiler.find_library('winmm', required: true)
endif
rtaudio = library('rtaudio', src,
version: so_version,
include_directories: incdir,
cpp_args: defines,
dependencies: deps,
gnu_symbol_visibility: 'hidden',
install: true)
rtaudio_dep = declare_dependency(include_directories : '.',
link_with : rtaudio)
meson.override_dependency('rtaudio', rtaudio_dep)
subdir('tests')
subdir('doc')
pkg.generate(rtaudio,
description: 'RtAudio - a set of C++ classes that provide a common API for realtime audio input/output',
subdirs: 'rtaudio')
summary({'ALSA': alsa_dep.found(),
'OSS': get_option('oss'),
'JACK': jack_dep.found(),
'PulseAudio': pulsesimple_dep.found(),
'CoreAudio': core_dep.found(),
'DirectAudio': dsound_dep.found(),
'WASAPI': wasapi_found,
'ASIO': asio_found}, bool_yn: true, section: 'Audio Backends')