summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--header_checks/meson.build16
-rw-r--r--meson.build83
-rw-r--r--meson_options.txt23
-rw-r--r--src/lib/ector/software/meson.build2
-rw-r--r--src/lib/evas/meson.build2
-rw-r--r--src/static_libs/draw/meson.build2
6 files changed, 44 insertions, 84 deletions
diff --git a/header_checks/meson.build b/header_checks/meson.build
index 01e557e95f..cb47b040d4 100644
--- a/header_checks/meson.build
+++ b/header_checks/meson.build
@@ -1,3 +1,19 @@
+if get_option('native-arch-optimization')
+ if target_machine.cpu_family() == 'x86' or target_machine.cpu_family() == 'x86_64'
+ native_header = 'immintrin.h'
+ elif target_machine.cpu_family() == 'arm'
+ native_header = 'arm_neon.h'
+ elif target_machine.cpu_family() == 'aarch64'
+ native_header = 'arm_neon.h'
+ elif target_machine.cpu_family() == 'ppc' or target_machine.cpu_family() == 'ppc64'
+ native_header = 'altivec.h'
+ endif
+
+ if cc.has_header(native_header) == false
+ error('Error, header '+native_header+' is required')
+ endif
+endif
+
header_checks = [
'alloca.h',
'asm/hwcap.h',
diff --git a/meson.build b/meson.build
index ba6d84a4b3..4b9d766f2f 100644
--- a/meson.build
+++ b/meson.build
@@ -112,73 +112,37 @@ if compiler.compiles(code, args : '-lc', name : 'environ check') == true
endif
## or should this be target_machine?
-cpu_mmx = false
cpu_sse3 = false
cpu_neon = false
cpu_neon_intrinsics = false
-cpu_altivec = false
-evas_opt_c_args = [ ]
-draw_opt_c_args = [ ]
-ector_opt_c_args = [ ]
-machine_c_args = [ ]
-compiler = meson.get_compiler('c')
+native_arch_opt_c_args = [ '-msse3' ]
if host_machine.endian() == 'big'
config_h.set10('WORDS_BIGENDIAN', true)
endif
-if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64'
- if compiler.has_header('immintrin.h') == true
- if (get_option('cpu-mmx') == true)
- config_h.set10('BUILD_MMX', true)
- cpu_mmx = true
- message('x86 build - MMX enabled')
- if (get_option('cpu-sse3') == true)
- config_h.set10('BUILD_SSE3', true)
- evas_opt_c_args += [ '-msse3' ]
- draw_opt_c_args += [ '-msse3' ]
- ector_opt_c_args += [ '-msse3' ]
- cpu_sse3 = true
- message('x86 build - SSE3 enabled')
- endif
- endif
- else
- error('Perhaps you wish to disble MMX with -Dcpu-mmx=false')
- endif
-elif host_machine.cpu_family() == 'arm'
- if compiler.has_header('arm_neon.h') == true
- if (get_option('cpu-neon') == true)
- config_h.set10('BUILD_NEON', true)
- machine_c_args += ['-mfpu=neon', '-ftree-vectorize']
- cpu_neon = true
- message('ARM build - NEON enabled')
- endif
- else
- error('Perhaps you wish to disble NEON with -Dcpu-neon=false')
- endif
-elif host_machine.cpu_family() == 'aarch64'
- if compiler.has_header('arm_neon.h') == true
- if (get_option('cpu-neon') == true)
- config_h.set10('BUILD_NEON', true)
- config_h.set10('BUILD_NEON_INTRINSICS', true)
- machine_c_args += ['-ftree-vectorize']
- cpu_neon = true
- cpu_neon_intrinsics = true
- message('ARM64 build - NEON + intrinsics enabled')
- endif
- else
- error('Perhaps you wish to disble NEON with -Dcpu-neon=false')
- endif
-elif host_machine.cpu_family() == 'ppc' or host_machine.cpu_family() == 'ppc64'
- if compiler.has_header('altivec.h') == true
- if (get_option('cpu-akltivec') == true)
- config_h.set10('BUILD_ALTIVEC', true)
- machine_c_args += [ '-maltivec' ]
- cpu_altivec = true
- message('PPC/POWER build - ALTIVEC enabled')
- endif
- else
- error('Perhaps you wish to disble NEON with -Dcpu-altivec=false')
+if get_option('native-arch-optimization')
+ if target_machine.cpu_family() == 'x86' or target_machine.cpu_family() == 'x86_64'
+ config_h.set10('BUILD_MMX', true)
+ message('x86 build - MMX enabled')
+ config_h.set10('BUILD_SSE3', true)
+ cpu_sse3 = true
+ message('x86 build - SSE3 enabled')
+ elif target_machine.cpu_family() == 'arm'
+ config_h.set10('BUILD_NEON', true)
+ cpu_neon = true
+ message('ARM build - NEON enabled')
+ elif target_machine.cpu_family() == 'aarch64'
+ config_h.set10('BUILD_NEON', true)
+ config_h.set10('BUILD_NEON_INTRINSICS', true)
+ add_global_arguments('-ftree-vectorize', language: 'c')
+ cpu_neon = true
+ cpu_neon_intrinsics = true
+ message('ARM64 build - NEON + intrinsics enabled')
+ elif target_machine.cpu_family() == 'ppc' or target_machine.cpu_family() == 'ppc64'
+ config_h.set10('BUILD_ALTIVEC', true)
+ add_global_arguments('-maltivec-vectorize', language: 'c')
+ message('PPC/POWER build - ALTIVEC enabled')
endif
endif
@@ -303,7 +267,6 @@ foreach package : subprojects
package_c_args = [
'-DPACKAGE_DATA_DIR="'+ join_paths(dir_data, package_name)+'"',
'-DNEED_RUN_IN_TREE=1',
- machine_c_args
]
automatic_pkgfile = true
if package[1].length() == 0 or get_option(package[1][0])
diff --git a/meson_options.txt b/meson_options.txt
index 94d3007d58..296b3b88d8 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -328,27 +328,8 @@ option('mono',
description: 'Flag for handling c# bindings'
)
-option('cpu-mmx',
+option('native-arch-optimization',
type: 'boolean',
value: true,
- description: 'Build MMX support when building for intel'
+ description: 'Flag for enabling architecture native optimizations'
)
-
-option('cpu-sse3',
- type: 'boolean',
- value: true,
- description: 'Build SSE3 support when building for intel'
-)
-
-option('cpu-neon',
- type: 'boolean',
- value: true,
- description: 'Build NEON support when building for ARM'
-)
-
-option('cpu-altivec',
- type: 'boolean',
- value: true,
- description: 'Build ALTIVEC support when building for PPC/POWER'
-)
-
diff --git a/src/lib/ector/software/meson.build b/src/lib/ector/software/meson.build
index b587ca9024..cef9c957c8 100644
--- a/src/lib/ector/software/meson.build
+++ b/src/lib/ector/software/meson.build
@@ -40,7 +40,7 @@ if cpu_sse3 == true
sources: pub_eo_file_target + [ 'ector_software_gradient_sse3.c' ],
dependencies: ector_pub_deps + [triangulator, freetype, draw, m] + ector_deps,
include_directories: config_dir + [ include_directories('..') ],
- c_args: ector_opt_c_args,
+ c_args: native_arch_opt_c_args,
)
ector_opt_lib += [ ector_opt ]
endif
diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build
index adea8b2393..f9f038dc93 100644
--- a/src/lib/evas/meson.build
+++ b/src/lib/evas/meson.build
@@ -188,7 +188,7 @@ if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false
[ include_directories('../../..') ] +
evas_include_directories +
[vg_common_inc_dir],
- c_args: evas_opt_c_args,
+ c_args: native_arch_opt_c_args,
dependencies: [eina, eo, ector, emile, evas_deps, m],
)
evas_link += [ evas_opt ]
diff --git a/src/static_libs/draw/meson.build b/src/static_libs/draw/meson.build
index 54c72160d2..250e021fb7 100644
--- a/src/static_libs/draw/meson.build
+++ b/src/static_libs/draw/meson.build
@@ -13,7 +13,7 @@ if cpu_sse3 == true
draw_opt = static_library('draw_opt',
sources: [ 'draw_main_sse2.c' ],
include_directories: config_dir + [include_directories(join_paths('..', '..', 'lib'))],
- c_args: draw_opt_c_args,
+ c_args: native_arch_opt_c_args,
dependencies : [eina, efl]
)
draw_opt_lib += [ draw_opt ]