diff --git a/Makefile b/Makefile index 9cbccd8d14..8d8c73f421 100644 --- a/Makefile +++ b/Makefile @@ -35,6 +35,7 @@ CCASFLAGS=$(CFLAGS) STATIC_LDFLAGS=-lstdc++ STRIP ?= strip USE_STACK_PROTECTOR = Yes +USE_NEON=Yes SHAREDLIB_MAJORVERSION=7 FULL_VERSION := 2.3.0 diff --git a/build/arch.mk b/build/arch.mk index 4e1538c45c..fd6a81e4ec 100644 --- a/build/arch.mk +++ b/build/arch.mk @@ -17,18 +17,22 @@ ifneq ($(filter-out arm64 arm64e, $(filter arm%, $(ARCH))),) ifeq ($(USE_ASM), Yes) ASM_ARCH = arm ASMFLAGS += -I$(SRC_PATH)codec/common/arm/ +ifeq ($(USE_NEON), Yes) CFLAGS += -DHAVE_NEON endif endif +endif #for arm64 ifneq ($(filter arm64 aarch64 arm64e, $(ARCH)),) ifeq ($(USE_ASM), Yes) ASM_ARCH = arm64 ASMFLAGS += -I$(SRC_PATH)codec/common/arm64/ +ifeq ($(USE_NEON), Yes) CFLAGS += -DHAVE_NEON_AARCH64 endif endif +endif #for mips ifneq ($(filter mips mips64, $(ARCH)),) diff --git a/build/msvc-common.mk b/build/msvc-common.mk index 5891ea4eee..5a1e2582f0 100644 --- a/build/msvc-common.mk +++ b/build/msvc-common.mk @@ -10,7 +10,10 @@ else endif ifeq ($(ASM_ARCH), arm) CCAS = gas-preprocessor.pl -as-type armasm -force-thumb -- armasm -CCASFLAGS = -nologo -DHAVE_NEON -ignore 4509 +CCASFLAGS = -nologo -ignore 4509 +ifeq ($(USE_NEON), Yes) +CCASFLAGS += -DHAVE_NEON +endif endif CC=cl @@ -20,7 +23,10 @@ CXX_O=-Fo$@ ifeq ($(ASM_ARCH), arm64) CCAS = clang-cl -CCASFLAGS = -nologo -DHAVE_NEON_AARCH64 --target=arm64-windows +CCASFLAGS = -nologo --target=arm64-windows +ifeq ($(USE_NEON), Yes) +CCASFLAGS += -DHAVE_NEON_AARCH64 +endif endif diff --git a/build/platform-mingw_nt.mk b/build/platform-mingw_nt.mk index b7a5495d4d..d73e362aa9 100644 --- a/build/platform-mingw_nt.mk +++ b/build/platform-mingw_nt.mk @@ -17,7 +17,10 @@ endif endif ifeq ($(ASM_ARCH), arm) CCAS = gas-preprocessor.pl -as-type clang -force-thumb -- $(CC) -CCASFLAGS = -DHAVE_NEON -mimplicit-it=always +CCASFLAGS = -mimplicit-it=always +ifeq ($(USE_NEON), Yes) +CCASFLAGS += -DHAVE_NEON +endif endif EXEEXT = .exe diff --git a/meson.build b/meson.build index 9cad9f5667..83540f0882 100644 --- a/meson.build +++ b/meson.build @@ -78,13 +78,17 @@ if ['linux', 'android', 'ios', 'darwin'].contains(system) asm_inc = join_paths(meson.current_source_dir(), 'codec', 'common', 'x86', '') elif cpu_family == 'arm' asm_format = asm_format32 - add_project_arguments('-DHAVE_NEON', language: 'c') - add_project_arguments('-DHAVE_NEON', language: 'c') + if get_option('neon').enabled() + add_project_arguments('-DHAVE_NEON', language: 'c') + add_project_arguments('-DHAVE_NEON', language: 'cpp') + endif casm_inc = include_directories(join_paths('codec', 'common', 'arm')) elif cpu_family == 'aarch64' asm_format = asm_format64 - add_project_arguments('-DHAVE_NEON_ARM64', language: 'c') - add_project_arguments('-DHAVE_NEON_ARM64', language: 'cpp') + if get_option('neon').enabled() + add_project_arguments('-DHAVE_NEON_ARM64', language: 'c') + add_project_arguments('-DHAVE_NEON_ARM64', language: 'cpp') + endif casm_inc = include_directories(join_paths('codec', 'common', 'arm64')) elif cpu_family == 'loongarch32' asm_format = asm_format32 diff --git a/meson_options.txt b/meson_options.txt index a2c14d168b..d3c1c1e2c7 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1 +1,2 @@ option('tests', type : 'feature', value : 'auto', yield : true) +option('neon', type : 'feature', value : 'enabled')