_omx = get_option('gallium-omx')
if not system_has_kms_drm
- if _omx == 'true'
+ if _omx != 'disabled'
error('OMX state tracker can only be built on unix-like OSes.')
else
- _omx = 'false'
+ _omx = 'disabled'
endif
elif not (with_platform_x11 or with_platform_drm)
- if _omx == 'true'
+ if _omx != 'disabled'
error('OMX state tracker requires X11 or drm platform support.')
else
- _omx = 'false'
+ _omx = 'disabled'
endif
elif not (with_gallium_r600 or with_gallium_radeonsi or with_gallium_nouveau)
- if _omx == 'true'
+ if _omx != 'disabled'
error('OMX state tracker requires at least one of the following gallium drivers: r600, radeonsi, nouveau.')
else
- _omx = 'false'
+ _omx = 'disabled'
endif
-elif _omx == 'auto'
- _omx = 'true'
endif
-with_gallium_omx = _omx == 'true'
+with_gallium_omx = _omx != 'disabled'
+gallium_omx = _omx
dep_omx = []
-if with_gallium_omx
+dep_omx_other = []
+if gallium_omx == 'bellagio'
+ pre_args += '-DENABLE_ST_OMX_BELLAGIO'
dep_omx = dependency('libomxil-bellagio')
+elif gallium_omx == 'tizonia'
+ pre_args += '-DENABLE_ST_OMX_TIZONIA'
+ dep_omx = dependency('libtizonia', version : '>= 0.10.0')
+ dep_omx_other = [
+ dependency('libtizplatform'),
+ dependency('tizilheaders')
+ ]
endif
omx_drivers_path = get_option('omx-libs-path')
endif
# Check for GCC style atomics
+dep_atomic = declare_dependency()
+
if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }',
name : 'GCC atomic builtins')
pre_args += '-DUSE_GCC_ATOMIC_BUILTINS'
+
+ # Not all atomic calls can be turned into lock-free instructions, in which
+ # GCC will make calls into the libatomic library. Check whether we need to
+ # link with -latomic.
+ #
+ # This can happen for 64-bit atomic operations on 32-bit architectures such
+ # as ARM.
+ if not cc.links('''#include <stdint.h>
+ int main() {
+ uint64_t n;
+ return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE);
+ }''',
+ name : 'GCC atomic builtins required -latomic')
+ dep_atomic = cc.find_library('atomic')
+ endif
endif
if not cc.links('''#include <stdint.h>
uint64_t v;
dep_libdrm_etnaviv = dependency('libdrm_etnaviv', version : '>= 2.4.82')
endif
if with_gallium_freedreno
- dep_libdrm_freedreno = dependency('libdrm_freedreno', version : '>= 2.4.89')
+ dep_libdrm_freedreno = dependency('libdrm_freedreno', version : '>= 2.4.91')
endif
llvm_modules = ['bitwriter', 'engine', 'mcdisassembler', 'mcjit']
# that for our version checks.
# svn suffixes are stripped by meson as of 0.43, and git suffixes are
# strippped as of 0.44, but we support older meson versions.
- _llvm_patch = _llvm_version[2]
+
+ # 3 digits versions in LLVM only started from 3.4.1 on
+ if dep_llvm.version().version_compare('>= 3.4.1')
+ _llvm_patch = _llvm_version[2]
+ else
+ _llvm_patch = '0'
+ endif
+
if _llvm_patch.endswith('svn')
_llvm_patch = _llvm_patch.split('s')[0]
elif _llvm_patch.contains('git')