'-DPACKAGE_VERSION="@0@"'.format(meson.project_version()),
'-DPACKAGE_BUGREPORT="https://gitlab.freedesktop.org/mesa/mesa/-/issues"',
]
+c_args = []
+cpp_args = []
with_vulkan_icd_dir = get_option('vulkan-icd-dir')
with_tests = get_option('build-tests')
(not with_platform_windows or not with_shared_glapi))
pre_args += '-DUSE_ELF_TLS'
use_elf_tls = true
+
+ if with_platform_android
+ # By default the NDK compiler, at least, emits emutls references instead of
+ # ELF TLS, even when building targeting newer API levels. Make it actually do
+ # ELF TLS instead.
+ c_args += '-fno-emulated-tls'
+ cpp_args += '-fno-emulated-tls'
+ endif
endif
if with_glx != 'disabled'
endif
# Check for generic C arguments
-c_args = []
c_msvc_compat_args = []
no_override_init_args = []
-cpp_args = []
cpp_msvc_compat_args = []
if cc.get_id() == 'msvc'
foreach a : ['/wd4018', # signed/unsigned mismatch
*/
#ifdef _MSC_VER
#define __THREAD_INITIAL_EXEC __declspec(thread)
+#elif defined(ANDROID)
+/* Android 29 gained ELF TLS support, but it doesn't support initial-exec and
+ * it will throw:
+ *
+ * dlopen failed: TLS symbol "(null)" in dlopened
+ * "/vendor/lib64/egl/libEGL_mesa.so" referenced from
+ * "/vendor/lib64/egl/libEGL_mesa.so" using IE access model.
+ */
+#define __THREAD_INITIAL_EXEC __thread
#else
#define __THREAD_INITIAL_EXEC __thread __attribute__((tls_model("initial-exec")))
#endif