diff --git a/libs/ardour/ardour/mix.h b/libs/ardour/ardour/mix.h index 50378f8788..c154442daf 100644 --- a/libs/ardour/ardour/mix.h +++ b/libs/ardour/ardour/mix.h @@ -70,8 +70,8 @@ LIBARDOUR_API void veclib_mix_buffers_no_gain (ARDOUR::Sample * dst, cons #endif +#if defined ARM_NEON_SUPPORT /* Optimized NEON functions */ -#if defined(__arm__) && !defined(__APPLE__) extern "C" { LIBARDOUR_API float arm_neon_compute_peak (const float * buf, uint32_t nsamples, float current); LIBARDOUR_API void arm_neon_apply_gain_to_buffer (float * buf, uint32_t nframes, float gain); diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index f586104bb5..37069c0593 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -217,7 +217,7 @@ setup_hardware_optimization (bool try_optimization) generic_mix_functions = false; } -#elif defined(__arm__) && !defined(__APPLE__) +#elif defined ARM_NEON_SUPPORT /* Use NEON routines */ do { compute_peak = arm_neon_compute_peak; diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 4a813660cd..fab18ccd4b 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -467,7 +467,6 @@ def build(bld): avx_sources = [] if Options.options.fpu_optimization: - obj.source += ['arm_neon_functions.cc'] if (bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686'): obj.source += [ 'sse_functions_xmm.cc', 'sse_functions.s', ] avx_sources = [ 'sse_functions_avx_linux.cc' ] @@ -482,6 +481,9 @@ def build(bld): obj.source += [ 'sse_functions_xmm.cc' ] obj.source += [ 'sse_functions_64bit_win.s', 'sse_avx_functions_64bit_win.s' ] avx_sources = [ 'sse_functions_avx.cc' ] + elif bld.env['build_target'] == 'armhf' or bld.env['build_target'] == 'aarch64': + obj.source += ['arm_neon_functions.cc'] + obj.defines += [ 'ARM_NEON_SUPPORT' ] if avx_sources: # as long as we want to use AVX intrinsics in this file, diff --git a/wscript b/wscript index 1c9bb1ff5d..1b69aae4ad 100644 --- a/wscript +++ b/wscript @@ -474,6 +474,9 @@ int main() { return 0; }''', # compiler_flags.append ('-U__STRICT_ANSI__') + if conf.env['build_target'] == 'armhf' or conf.env['build_target'] == 'aarch64': + conf.define('ARM_NEON_SUPPORT', 1) + if opt.use_libcpp or conf.env['build_host'] in [ 'el_capitan', 'sierra', 'high_sierra', 'mojave', 'catalina' ]: cxx_flags.append('--stdlib=libc++') linker_flags.append('--stdlib=libc++')