diff --git a/releases.json b/releases.json index 32926f518..551530340 100644 --- a/releases.json +++ b/releases.json @@ -2701,6 +2701,7 @@ "openal" ], "versions": [ + "1.24.0-1", "1.23.1-3", "1.23.1-2", "1.23.1-1", diff --git a/subprojects/openal-soft.wrap b/subprojects/openal-soft.wrap index a5094f3d4..040edd7da 100644 --- a/subprojects/openal-soft.wrap +++ b/subprojects/openal-soft.wrap @@ -1,8 +1,8 @@ [wrap-file] -directory = openal-soft-1.23.1 -source_url = https://github.com/kcat/openal-soft/archive/refs/tags/1.23.1.tar.gz -source_filename = openal-soft-1.23.1.tar.gz -source_hash = dfddf3a1f61059853c625b7bb03de8433b455f2f79f89548cbcbd5edca3d4a4a +directory = openal-soft-1.24.0 +source_url = https://github.com/kcat/openal-soft/archive/refs/tags/1.24.0.tar.gz +source_filename = openal-soft-1.24.0.tar.gz +source_hash = d3753f7aba798574ce2dc934e3c47dc655cd7a4652c038f2a860b0e81ff6d3dc patch_directory = openal-soft [provide] diff --git a/subprojects/packagefiles/openal-soft/meson.build b/subprojects/packagefiles/openal-soft/meson.build index 36cb684de..cf74f39a7 100644 --- a/subprojects/packagefiles/openal-soft/meson.build +++ b/subprojects/packagefiles/openal-soft/meson.build @@ -1,18 +1,23 @@ project( 'openal-soft', 'cpp', - version: '1.23.1', + version: '1.24.0', meson_version: '>=0.58', - default_options: ['cpp_std=c++14', 'c_std=c11'], + default_options: ['cpp_std=c++17', 'c_std=c11'], ) cpp = meson.get_compiler('cpp') -dl_dep = cpp.find_library('dl', required: false) +if meson.version().version_compare('>= 0.62') + dl_dep = dependency('dl', required: false) +else + dl_dep = cpp.find_library('dl', required: false) +endif thread_dep = dependency('threads') alsa_dep = dependency('alsa', required: get_option('alsa')) apple_dep = dependency('appleframeworks', modules: ['AudioToolbox', 'CoreAudio', 'CoreFoundation'], required: host_machine.system() == 'darwin') jack_dep = dependency('jack', required: get_option('jack')) mm_dep = cpp.find_library('winmm', required: get_option('winmm')) +oboe_dep = dependency('oboe', required: get_option('oboe')) opensl_dep = dependency('opensl', required: get_option('opensl')) oss_dep = dependency('oss', required: get_option('oss')) pipewire_dep = dependency('libpipewire-0.3', required: get_option('pipewire')) @@ -23,6 +28,9 @@ sdl2_dep = dependency('sdl2', required: get_option('sdl2')) sndio_dep = dependency('sndio', required: get_option('sndio')) solaris_dep = dependency('audioio', required: get_option('solaris')) +#Disable SIMD on PPC for now. It's fixed in master, broken in releaee +add_project_arguments('-DPFFFT_SIMD_DISABLE', language: 'cpp') + if host_machine.system() == 'windows' add_project_arguments('-DNOMINMAX', language: 'cpp') if cpp.get_argument_syntax() == 'msvc' @@ -52,15 +60,16 @@ openal_args += '-DAL_API=@0@'.format(api) openal_args += '-DALC_API=@0@'.format(api) common_sources = files( + 'common/alassert.cpp', 'common/alcomplex.cpp', - 'common/alfstream.cpp', - 'common/almalloc.cpp', + 'common/alsem.cpp', 'common/alstring.cpp', + 'common/althrd_setname.cpp', 'common/dynload.cpp', + 'common/pffft.cpp', 'common/polyphase_resampler.cpp', 'common/ringbuffer.cpp', 'common/strutils.cpp', - 'common/threads.cpp', ) core_sources = files( @@ -89,6 +98,7 @@ core_sources = files( 'core/mastering.cpp', 'core/mixer.cpp', 'core/mixer/mixer_c.cpp', + 'core/storage_formats.cpp', 'core/uhjfilter.cpp', 'core/uiddefs.cpp', 'core/voice.cpp', @@ -97,6 +107,7 @@ core_sources = files( openal_sources = files( 'al/auxeffectslot.cpp', 'al/buffer.cpp', + 'al/debug.cpp', 'al/effect.cpp', 'al/effects/autowah.cpp', 'al/effects/chorus.cpp', @@ -142,6 +153,7 @@ alc_sources = files( 'alc/effects/pshifter.cpp', 'alc/effects/reverb.cpp', 'alc/effects/vmorpher.cpp', + 'alc/events.cpp', 'alc/panning.cpp', ) @@ -162,26 +174,22 @@ hrtf_h = custom_target( cdata = configuration_data() cdata.set('HAVE_WAVE', true) -cdata.set('HAVE_LIBDL', dl_dep.found()) cdata.set('HAVE_ALSA', alsa_dep.found()) cdata.set('HAVE_COREAUDIO', apple_dep.found()) cdata.set('HAVE_JACK', jack_dep.found()) +cdata.set('HAVE_OBOE', oboe_dep.found()) cdata.set('HAVE_OPENSL', opensl_dep.found()) cdata.set('HAVE_OSS', oss_dep.found()) cdata.set('HAVE_PIPEWIRE', pipewire_dep.found()) cdata.set('HAVE_PORTAUDIO', portaudio_dep.found()) cdata.set('HAVE_PULSEAUDIO', pulseaudio_dep.found()) -cdata.set('HAVE_RTKIT', rtkit_dep.found()) cdata.set('HAVE_SDL2', sdl2_dep.found()) cdata.set('HAVE_SNDIO', sndio_dep.found()) cdata.set('HAVE_SOLARIS', solaris_dep.found()) cdata.set('HAVE_WINMM', mm_dep.found()) -cdata.set('HAVE_DSOUND', cpp.has_header('dsound.h')) -cdata.set('HAVE_WASAPI', cpp.has_header('wasapi.h')) - -#ignore for now -cdata.set('ALSOFT_EAX', false) -cdata.set('HAVE_OBOE', false) +cdata.set('HAVE_DSOUND', cpp.has_header('dsound.h', dependencies: mm_dep)) +cdata.set('HAVE_WASAPI', cpp.has_header('wasapi.h', dependencies: mm_dep)) +configure_file(input: 'config_backends.h.in', output: 'config_backends.h', format: 'cmake', configuration: cdata) foreach b : ['alsa', 'coreaudio', 'jack', 'opensl', 'oss', 'pipewire', 'portaudio', 'pulseaudio', 'sdl2', 'sndio', 'solaris', 'winmm', 'dsound', 'wasapi'] if cdata.get('HAVE_@0@'.format(b.to_upper())) @@ -189,35 +197,78 @@ foreach b : ['alsa', 'coreaudio', 'jack', 'opensl', 'oss', 'pipewire', 'portaudi endif endforeach +cdata = configuration_data() +cdata.set('HAVE_SSE', cpp.check_header('xmmintrin.h')) +cdata.set('HAVE_SSE2', cpp.check_header('emmintrin.h')) +cdata.set('HAVE_SSE3', cpp.check_header('pmmintrin.h')) +cdata.set('HAVE_SSE4_1', cpp.check_header('smmintrin.h')) +cdata.set('HAVE_SSE_INTRINSICS', cpp.has_header_symbol('xmmintrin.h', '_mm_pause')) +cdata.set('HAVE_NEON', cpp.check_header('arm_neon.h')) + +if cdata.get('HAVE_SSE') + openal_args += cpp.get_supported_arguments('-msse', '-mfpmath=sse') + core_sources += 'core/mixer/mixer_sse.cpp' +endif + +if cdata.get('HAVE_SSE2') + openal_args += cpp.get_supported_arguments('-msse2') + core_sources += 'core/mixer/mixer_sse2.cpp' +endif + +if cdata.get('HAVE_SSE3') + openal_args += cpp.get_supported_arguments('-msse3') + core_sources += 'core/mixer/mixer_sse3.cpp' +endif + +if cdata.get('HAVE_SSE4_1') + openal_args += cpp.get_supported_arguments('-msse4.1') + core_sources += 'core/mixer/mixer_sse41.cpp' +endif + +if cdata.get('HAVE_NEON') + if cpp.sizeof('void*') == 4 + openal_args += cpp.get_supported_arguments('-mfpu=neon') + endif + core_sources += 'core/mixer/mixer_neon.cpp' +endif + +configure_file(input: 'config_simd.h.in', output: 'config_simd.h', format: 'cmake', configuration: cdata) + +cdata = configuration_data() + +#ignore for now +cdata.set('ALSOFT_EAX', false) +cdata.set('ALSOFT_UWP', false) + +cdata.set('HAVE_RTKIT', rtkit_dep.found()) if cdata.get('HAVE_RTKIT') alc_sources += files('core/dbus_wrap.cpp', 'core/rtkit.cpp') endif -foreach h : ['dlfcn.h', 'guiddef.h', 'initguid.h', 'malloc.h', 'pthread_np.h'] +foreach h : ['guiddef.h', 'pthread_np.h'] cdata.set('HAVE_@0@'.format(h.underscorify().to_upper()), cpp.has_header(h)) endforeach +cdata.set('HAVE_DLFCN_H', cpp.has_header('dlfcn.h', dependencies: dl_dep)) + #needs to be check_header for LLVM as well as MinGW cdata.set('HAVE_CPUID_H', cpp.check_header('cpuid.h')) cdata.set('HAVE_INTRIN_H', cpp.check_header('intrin.h')) -cdata.set('HAVE_SSE', cpp.check_header('xmmintrin.h')) -cdata.set('HAVE_SSE2', cpp.check_header('emmintrin.h')) -cdata.set('HAVE_SSE3', cpp.check_header('pmmintrin.h')) -cdata.set('HAVE_SSE4_1', cpp.check_header('smmintrin.h')) -cdata.set('HAVE_NEON', cpp.check_header('arm_neon.h')) #need to check for non windows because meson wrongly detects its presence under MinGW -cdata.set('HAVE_POSIX_MEMALIGN', cpp.has_function('posix_memalign') and host_machine.system() != 'windows') -cdata.set('HAVE__ALIGNED_MALLOC', cpp.has_function('_aligned_malloc')) cdata.set('HAVE_PROC_PIDPATH', cpp.has_function('proc_pidpath')) cdata.set('HAVE_PTHREAD_SETSCHEDPARAM', cpp.has_function('pthread_setschedparam', dependencies: thread_dep)) cdata.set('HAVE_PTHREAD_SETNAME_NP', cpp.has_function('pthread_setname_np', dependencies: thread_dep)) cdata.set('HAVE_PTHREAD_SET_NAME_NP', cpp.has_function('pthread_set_name_np', dependencies: thread_dep)) -cdata.set('HAVE_GETOPT', cpp.has_function('getopt')) cdata.set('HAVE_CPUID_INTRINSIC', cpp.get_argument_syntax() == 'msvc') cdata.set('HAVE_GCC_GET_CPUID', cpp.has_function('__get_cpuid', prefix: '#include ')) -cdata.set('HAVE_SSE_INTRINSICS', cpp.has_header_symbol('xmmintrin.h', '_mm_pause')) + +if cpp.has_function_attribute('force_align_arg_pointer') + cdata.set('ALSOFT_FORCE_ALIGN', '__attribute__((force_align_arg_pointer))') +else + cdata.set('ALSOFT_FORCE_ALIGN', '') +endif cdata.set('ALSOFT_EMBED_HRTF_DATA', true) cdata.set('ALSOFT_INSTALL_DATADIR', get_option('prefix') / get_option('datadir')) @@ -232,34 +283,7 @@ vdata.set('LIB_VERSION_NUM', meson.project_version().replace('.', ',')) configure_file(input: 'version.h.in', output: 'version.h', format: 'cmake', configuration: vdata) -if cdata.get('HAVE_SSE') - openal_args += cpp.get_supported_arguments('-msse', '/arch:SSE', '-mfpmath=sse') - core_sources += 'core/mixer/mixer_sse.cpp' -endif - -if cdata.get('HAVE_SSE2') - openal_args += cpp.get_supported_arguments('-msse2', '/arch:SSE2') - core_sources += 'core/mixer/mixer_sse2.cpp' -endif - -if cdata.get('HAVE_SSE3') - openal_args += cpp.get_supported_arguments('-msse3', '/arch:SSE3') - core_sources += 'core/mixer/mixer_sse3.cpp' -endif - -if cdata.get('HAVE_SSE4_1') - openal_args += cpp.get_supported_arguments('-msse4.1', '/arch:SSE4.1') - core_sources += 'core/mixer/mixer_sse41.cpp' -endif - -if cdata.get('HAVE_NEON') - if cpp.sizeof('void*') == 4 - openal_args += cpp.get_supported_arguments('-mfpu=neon') - endif - core_sources += 'core/mixer/mixer_neon.cpp' -endif - -if cpp.links('#include \n#include \nint main(){std::atomic> b;std::atomic_is_lock_free(&b);}') +if cpp.links('#include \n#include \nint main(){std::atomic> b;std::atomic_is_lock_free(&b);}') atomic_dep = dependency('', required: false) else atomic_dep = cpp.find_library('atomic', required: false) diff --git a/subprojects/packagefiles/openal-soft/meson_options.txt b/subprojects/packagefiles/openal-soft/meson_options.txt index 0462cc187..78178e4f2 100644 --- a/subprojects/packagefiles/openal-soft/meson_options.txt +++ b/subprojects/packagefiles/openal-soft/meson_options.txt @@ -6,6 +6,10 @@ option('jack', type: 'feature', description: 'JACK backend', ) +option('oboe', type: 'feature', + description: 'Oboe backend', +) + option('opensl', type: 'feature', description: 'OpenSL backend', ) diff --git a/subprojects/packagefiles/openal-soft/utils/meson.build b/subprojects/packagefiles/openal-soft/utils/meson.build index 028ed45a7..eb9b0bf10 100644 --- a/subprojects/packagefiles/openal-soft/utils/meson.build +++ b/subprojects/packagefiles/openal-soft/utils/meson.build @@ -17,6 +17,6 @@ foreach u, d : utils u.split('.')[0], u, dependencies: d, - link_args: host_machine.system() == 'windows' ? '-municode' : [], + link_args: cpp.get_supported_arguments('-municode'), ) endforeach