'wavcapture.c',
))
-softmmu_ss.add(when: [coreaudio, 'CONFIG_AUDIO_COREAUDIO'], if_true: files('coreaudio.c'))
-softmmu_ss.add(when: [dsound, 'CONFIG_AUDIO_DSOUND'],
- if_true: files('dsoundaudio.c', 'audio_win_int.c'))
+softmmu_ss.add(when: coreaudio, if_true: files('coreaudio.c'))
+softmmu_ss.add(when: dsound, if_true: files('dsoundaudio.c', 'audio_win_int.c'))
audio_modules = {}
foreach m : [
- ['CONFIG_AUDIO_ALSA', 'alsa', alsa, 'alsaaudio.c'],
- ['CONFIG_AUDIO_OSS', 'oss', oss, 'ossaudio.c'],
- ['CONFIG_AUDIO_PA', 'pa', pulse, 'paaudio.c'],
- ['CONFIG_AUDIO_SDL', 'sdl', sdl, 'sdlaudio.c'],
- ['CONFIG_AUDIO_JACK', 'jack', jack, 'jackaudio.c'],
- ['CONFIG_SPICE', 'spice', spice, 'spiceaudio.c']
+ ['alsa', alsa, files('alsaaudio.c')],
+ ['oss', oss, files('ossaudio.c')],
+ ['pa', pulse, files('paaudio.c')],
+ ['sdl', sdl, files('sdlaudio.c')],
+ ['jack', jack, files('jackaudio.c')],
+ ['spice', spice, files('spiceaudio.c')]
]
- if config_host.has_key(m[0])
+ if m[1].found()
module_ss = ss.source_set()
- module_ss.add(when: m[2], if_true: files(m[3]))
- audio_modules += {m[1] : module_ss}
+ module_ss.add(m[1], m[2])
+ audio_modules += {m[0] : module_ss}
endif
endforeach
static="no"
cross_compile="no"
cross_prefix=""
-audio_drv_list=""
+audio_drv_list="default"
block_drv_rw_whitelist=""
block_drv_ro_whitelist=""
block_drv_whitelist_tools="no"
netmap="no"
sdl="auto"
sdl_image="auto"
-coreaudio="auto"
virtiofsd="auto"
virtfs="auto"
libudev="auto"
prefix="/usr/local"
qemu_suffix="qemu"
slirp="auto"
-oss_lib=""
bsd="no"
linux="no"
solaris="no"
case $targetos in
MINGW32*)
mingw32="yes"
- audio_possible_drivers="dsound sdl"
- if check_include dsound.h; then
- audio_drv_list="dsound"
- else
- audio_drv_list=""
- fi
supported_os="yes"
plugins="no"
pie="no"
;;
GNU/kFreeBSD)
bsd="yes"
- audio_drv_list="oss try-sdl"
- audio_possible_drivers="oss sdl pa"
;;
FreeBSD)
bsd="yes"
bsd_user="yes"
make="${MAKE-gmake}"
- audio_drv_list="oss try-sdl"
- audio_possible_drivers="oss sdl pa"
# needed for kinfo_getvmmap(3) in libutil.h
netmap="" # enable netmap autodetect
;;
DragonFly)
bsd="yes"
make="${MAKE-gmake}"
- audio_drv_list="oss try-sdl"
- audio_possible_drivers="oss sdl pa"
;;
NetBSD)
bsd="yes"
make="${MAKE-gmake}"
- audio_drv_list="oss try-sdl"
- audio_possible_drivers="oss sdl"
- oss_lib="-lossaudio"
;;
OpenBSD)
bsd="yes"
make="${MAKE-gmake}"
- audio_drv_list="try-sdl"
- audio_possible_drivers="sdl"
;;
Darwin)
bsd="yes"
darwin="yes"
- audio_drv_list="try-coreaudio try-sdl"
- audio_possible_drivers="coreaudio sdl"
# Disable attempts to use ObjectiveC features in os/object.h since they
# won't work when we're compiling with gcc as a C compiler.
QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
solaris="yes"
make="${MAKE-gmake}"
smbd="${SMBD-/usr/sfw/sbin/smbd}"
- if test -f /usr/include/sys/soundcard.h ; then
- audio_drv_list="oss try-sdl"
- fi
- audio_possible_drivers="oss sdl"
# needed for CMSG_ macros in sys/socket.h
QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
# needed for TIOCWIN* defines in termios.h
QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
;;
Linux)
- audio_drv_list="try-pa oss"
- audio_possible_drivers="oss alsa sdl pa"
linux="yes"
linux_user="yes"
vhost_user=${default_feature:-yes}
--disable-strip disable stripping binaries
--disable-werror disable compilation abort on warning
--disable-stack-protector disable compiler-provided stack protection
- --audio-drv-list=LIST set audio drivers list:
- Available drivers: $audio_possible_drivers
+ --audio-drv-list=LIST set audio drivers list
--block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
--block-drv-rw-whitelist=L
set block driver read-write whitelist
fi
fi
-##########################################
-# Disable features only meaningful for system-mode emulation
-if test "$softmmu" = "no"; then
- audio_drv_list=""
-fi
-
##########################################
# L2TPV3 probe
fi
fi
-##########################################
-# detect CoreAudio
-if test "$coreaudio" != "no" ; then
- coreaudio_libs="-framework CoreAudio"
- cat > $TMPC << EOF
-#include <CoreAudio/CoreAudio.h>
-int main(void)
-{
- return (int)AudioGetCurrentHostTime();
-}
-EOF
- if compile_prog "" "$coreaudio_libs" ; then
- coreaudio=yes
- else
- coreaudio=no
- fi
-fi
-
-##########################################
-# Sound support libraries probe
-
-audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
-for drv in $audio_drv_list; do
- case $drv in
- alsa | try-alsa)
- if $pkg_config alsa --exists; then
- alsa_libs=$($pkg_config alsa --libs)
- alsa_cflags=$($pkg_config alsa --cflags)
- alsa=yes
- if test "$drv" = "try-alsa"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa/alsa/')
- fi
- else
- if test "$drv" = "try-alsa"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa//')
- else
- error_exit "$drv check failed" \
- "Make sure to have the $drv libs and headers installed."
- fi
- fi
- ;;
-
- pa | try-pa)
- if $pkg_config libpulse --exists; then
- libpulse=yes
- pulse_libs=$($pkg_config libpulse --libs)
- pulse_cflags=$($pkg_config libpulse --cflags)
- if test "$drv" = "try-pa"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa/pa/')
- fi
- else
- if test "$drv" = "try-pa"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa//')
- else
- error_exit "$drv check failed" \
- "Make sure to have the $drv libs and headers installed."
- fi
- fi
- ;;
-
- sdl)
- if test "$sdl" = "no"; then
- error_exit "sdl not found or disabled, can not use sdl audio driver"
- fi
- ;;
-
- try-sdl)
- if test "$sdl" = "no"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl//')
- else
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl/sdl/')
- fi
- ;;
-
- coreaudio | try-coreaudio)
- if test "$coreaudio" = "no"; then
- if test "$drv" = "try-coreaudio"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-coreaudio//')
- else
- error_exit "$drv check failed" \
- "Make sure to have the $drv is available."
- fi
- else
- coreaudio_libs="-framework CoreAudio"
- if test "$drv" = "try-coreaudio"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-coreaudio/coreaudio/')
- fi
- fi
- ;;
-
- dsound)
- dsound_libs="-lole32 -ldxguid"
- ;;
-
- oss)
- oss_libs="$oss_lib"
- ;;
-
- jack | try-jack)
- if $pkg_config jack --exists; then
- libjack=yes
- jack_libs=$($pkg_config jack --libs)
- if test "$drv" = "try-jack"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack/jack/')
- fi
- else
- if test "$drv" = "try-jack"; then
- audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack//')
- else
- error_exit "$drv check failed" \
- "Make sure to have the $drv libs and headers installed."
- fi
- fi
- ;;
-
- *)
- echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
- error_exit "Unknown driver '$drv' selected" \
- "Possible drivers are: $audio_possible_drivers"
- }
- ;;
- esac
-done
-
##########################################
# plugin linker support probe
if test "$gprof" = "yes" ; then
echo "CONFIG_GPROF=y" >> $config_host_mak
fi
-echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
-for drv in $audio_drv_list; do
- def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
- echo "$def=y" >> $config_host_mak
-done
-if test "$alsa" = "yes" ; then
- echo "CONFIG_ALSA=y" >> $config_host_mak
-fi
-echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
-echo "ALSA_CFLAGS=$alsa_cflags" >> $config_host_mak
-if test "$libpulse" = "yes" ; then
- echo "CONFIG_LIBPULSE=y" >> $config_host_mak
-fi
-echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
-echo "PULSE_CFLAGS=$pulse_cflags" >> $config_host_mak
-echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
-echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
-echo "OSS_LIBS=$oss_libs" >> $config_host_mak
-if test "$libjack" = "yes" ; then
- echo "CONFIG_LIBJACK=y" >> $config_host_mak
-fi
-echo "JACK_LIBS=$jack_libs" >> $config_host_mak
echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
if test "$block_drv_whitelist_tools" = "yes" ; then
-Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
-Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
$(if test "$default_feature" = no; then echo "-Dauto_features=disabled"; fi) \
- -Dtcg_interpreter=$tcg_interpreter \
+ -Daudio_drv_list=$audio_drv_list -Dtcg_interpreter=$tcg_interpreter \
$cross_arg \
"$PWD" "$source_path"
if config_host.has_key('CONFIG_VDE')
vde = declare_dependency(link_args: config_host['VDE_LIBS'].split())
endif
+
pulse = not_found
-if 'CONFIG_LIBPULSE' in config_host
- pulse = declare_dependency(compile_args: config_host['PULSE_CFLAGS'].split(),
- link_args: config_host['PULSE_LIBS'].split())
+if not get_option('pa').auto() or (targetos == 'linux' and have_system)
+ pulse = dependency('libpulse', required: get_option('pa'),
+ method: 'pkg-config', kwargs: static_kwargs)
endif
alsa = not_found
-if 'CONFIG_ALSA' in config_host
- alsa = declare_dependency(compile_args: config_host['ALSA_CFLAGS'].split(),
- link_args: config_host['ALSA_LIBS'].split())
+if not get_option('alsa').auto() or (targetos == 'linux' and have_system)
+ alsa = dependency('alsa', required: get_option('alsa'),
+ method: 'pkg-config', kwargs: static_kwargs)
endif
jack = not_found
-if 'CONFIG_LIBJACK' in config_host
- jack = declare_dependency(link_args: config_host['JACK_LIBS'].split())
+if not get_option('jack').auto() or have_system
+ jack = dependency('jack', required: get_option('jack'),
+ method: 'pkg-config', kwargs: static_kwargs)
endif
+
spice = not_found
spice_headers = not_found
spice_protocol = not_found
endif
oss = not_found
-if 'CONFIG_AUDIO_OSS' in config_host
- oss = declare_dependency(link_args: config_host['OSS_LIBS'].split())
+if not get_option('oss').auto() or have_system
+ if not cc.has_header('sys/soundcard.h')
+ # not found
+ elif targetos == 'netbsd'
+ oss = cc.find_library('ossaudio', required: get_option('oss'),
+ kwargs: static_kwargs)
+ else
+ oss = declare_dependency()
+ endif
+
+ if not oss.found()
+ if get_option('oss').enabled()
+ error('OSS not found')
+ else
+ warning('OSS not found, disabling')
+ endif
+ endif
endif
dsound = not_found
-if 'CONFIG_AUDIO_DSOUND' in config_host
- dsound = declare_dependency(link_args: config_host['DSOUND_LIBS'].split())
+if not get_option('dsound').auto() or (targetos == 'windows' and have_system)
+ if cc.has_header('dsound.h')
+ dsound = declare_dependency(link_args: ['-lole32', '-ldxguid'])
+ endif
+
+ if not dsound.found()
+ if get_option('dsound').enabled()
+ error('DirectSound not found')
+ else
+ warning('DirectSound not found, disabling')
+ endif
+ endif
endif
+
coreaudio = not_found
-if 'CONFIG_AUDIO_COREAUDIO' in config_host
- coreaudio = declare_dependency(link_args: config_host['COREAUDIO_LIBS'].split())
+if not get_option('coreaudio').auto() or (targetos == 'darwin' and have_system)
+ coreaudio = dependency('appleframeworks', modules: 'CoreAudio',
+ required: get_option('coreaudio'))
+ if coreaudio.found() and not cc.links('''
+ #include <CoreAudio/CoreAudio.h>
+ int main(void)
+ {
+ return (int)AudioGetCurrentHostTime();
+ }''')
+ coreaudio = not_found
+ endif
+
+ if not coreaudio.found()
+ if get_option('coreaudio').enabled()
+ error('CoreAudio not found')
+ else
+ warning('CoreAudio not found, disabling')
+ endif
+ endif
endif
opengl = not_found
endif
endif
+#################
+# config-host.h #
+#################
+
+audio_drivers_selected = []
+if have_system
+ audio_drivers_available = {
+ 'alsa': alsa.found(),
+ 'coreaudio': coreaudio.found(),
+ 'dsound': dsound.found(),
+ 'jack': jack.found(),
+ 'oss': oss.found(),
+ 'pa': pulse.found(),
+ 'sdl': sdl.found(),
+ }
+
+ # Default to native drivers first, OSS second, SDL third
+ audio_drivers_priority = \
+ [ 'pa', 'coreaudio', 'dsound', 'oss' ] + \
+ (targetos == 'linux' ? [] : [ 'sdl' ])
+ audio_drivers_default = []
+ foreach k: audio_drivers_priority
+ if audio_drivers_available[k]
+ audio_drivers_default += k
+ endif
+ endforeach
+
+ foreach k: get_option('audio_drv_list')
+ if k == 'default'
+ audio_drivers_selected += audio_drivers_default
+ elif not audio_drivers_available[k]
+ error('Audio driver "@0@" not available.'.format(k))
+ else
+ audio_drivers_selected += k
+ endif
+ endforeach
+endif
+foreach k: audio_drivers_selected
+ config_host_data.set('CONFIG_AUDIO_' + k.to_upper(), true)
+endforeach
+config_host_data.set('CONFIG_AUDIO_DRIVERS',
+ '"' + '", "'.join(audio_drivers_selected) + '", ')
+
if get_option('cfi')
cfi_flags=[]
# Check for dependency on LTO
have_host_block_device = (targetos != 'darwin' or
cc.has_header('IOKit/storage/IOMedia.h'))
-#################
-# config-host.h #
-#################
-
have_virtfs = (targetos == 'linux' and
have_system and
libattr.found() and
ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target
-arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
+arrays = ['CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
strings = ['HOST_DSOSUF', 'CONFIG_IASL']
foreach k, v: config_host
if ignored.contains(k)
endif
summary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')}
if have_system
- summary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']}
+ summary_info += {'Audio drivers': ' '.join(audio_drivers_selected)}
endif
summary_info += {'Trace backends': config_host['TRACE_BACKENDS']}
if config_host['TRACE_BACKENDS'].split().contains('simple')
summary_info += {'VNC JPEG support': jpeg}
summary_info += {'VNC PNG support': png}
endif
+if targetos not in ['darwin', 'haiku', 'windows']
+ summary_info += {'OSS support': oss}
+elif targetos == 'darwin'
+ summary_info += {'CoreAudio support': coreaudio}
+elif targetos == 'windows'
+ summary_info += {'DirectSound support': dsound}
+endif
+if targetos == 'linux'
+ summary_info += {'ALSA support': alsa}
+ summary_info += {'PulseAudio support': pulse}
+endif
+summary_info += {'JACK support': jack}
summary_info += {'brlapi support': brlapi}
summary_info += {'vde support': config_host.has_key('CONFIG_VDE')}
summary_info += {'netmap support': config_host.has_key('CONFIG_NETMAP')}
description: 'search PATH for firmware files')
option('sphinx_build', type : 'string', value : '',
description: 'Use specified sphinx-build [$sphinx_build] for building document (default to be empty)')
-
option('default_devices', type : 'boolean', value : true,
description: 'Include a default selection of devices in emulators')
+option('audio_drv_list', type: 'array', value: ['default'],
+ choices: ['alsa', 'coreaudio', 'default', 'dsound', 'jack', 'oss', 'pa', 'sdl'],
+ description: 'Set audio driver list')
+
option('docs', type : 'feature', value : 'auto',
description: 'Documentations build support')
option('gettext', type : 'feature', value : 'auto',
option('fuse_lseek', type : 'feature', value : 'auto',
description: 'SEEK_HOLE/SEEK_DATA support for FUSE exports')
+option('alsa', type: 'feature', value: 'auto',
+ description: 'ALSA sound support')
+option('coreaudio', type: 'feature', value: 'auto',
+ description: 'CoreAudio sound support')
+option('dsound', type: 'feature', value: 'auto',
+ description: 'DirectSound sound support')
+option('jack', type: 'feature', value: 'auto',
+ description: 'JACK sound support')
+option('oss', type: 'feature', value: 'auto',
+ description: 'OSS sound support')
+option('pa', type: 'feature', value: 'auto',
+ description: 'PulseAudio sound support')
+
option('vhost_user_blk_server', type: 'feature', value: 'auto',
description: 'build vhost-user-blk server')
option('virtfs', type: 'feature', value: 'auto',