diff --git a/meson.build b/meson.build
index e1e94e7..b355f94 100644
--- a/meson.build
+++ b/meson.build
@@ -447,7 +447,9 @@ endif
 
 # Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
 use_elf_tls = false
-if (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and
+with_use_elf_tls = get_option('use-elf-tls')
+if with_use_elf_tls and
+    (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and
     (not with_platform_android or get_option('platform-sdk-version') >= 29) and
     (not with_platform_windows or not with_shared_glapi))
   pre_args += '-DUSE_ELF_TLS'
diff --git a/meson_options.txt b/meson_options.txt
index a7030ab..73bd28e 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -465,3 +465,9 @@ option(
   value : true,
   description : 'use msse2 flag for mingw x86. Default: true',
 )
+option(
+  'use-elf-tls',
+  type : 'boolean',
+  value : false,
+  description : 'Build support for initial-exec TLS model'
+)
