mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 05:10:11 +01:00
c11: #include <threads.h> when the os/platform provide it
Closes #6964 CC: mesa-stable Signed-off-by: Yonggang Luo <luoyonggang@gmail.com> Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18043>
This commit is contained in:
parent
f228c26520
commit
f97ba1f95d
3 changed files with 28 additions and 1 deletions
|
|
@ -1449,6 +1449,15 @@ if cc.has_header_symbol('time.h', 'struct timespec')
|
|||
pre_args += '-DHAVE_STRUCT_TIMESPEC'
|
||||
endif
|
||||
|
||||
with_c11_threads = false
|
||||
if cc.has_function('thrd_create', prefix: '#include <threads.h>')
|
||||
if with_platform_android
|
||||
# Current only Android's c11 <threads.h> are verified
|
||||
pre_args += '-DHAVE_THRD_CREATE'
|
||||
with_c11_threads = true
|
||||
endif
|
||||
endif
|
||||
|
||||
if cc.has_header_symbol('errno.h', 'program_invocation_name',
|
||||
args : '-D_GNU_SOURCE')
|
||||
pre_args += '-DHAVE_PROGRAM_INVOCATION_NAME'
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@ files_mesa_util_c11 = files(
|
|||
'time.c',
|
||||
)
|
||||
|
||||
if host_machine.system() == 'windows'
|
||||
if with_c11_threads
|
||||
# no need implement c11 threads
|
||||
elif host_machine.system() == 'windows'
|
||||
files_mesa_util_c11 += 'threads_win32.c'
|
||||
files_mesa_util_c11 += 'threads_win32_tls_callback.cpp'
|
||||
else
|
||||
|
|
|
|||
|
|
@ -47,6 +47,20 @@
|
|||
# error Not supported on this platform.
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_THRD_CREATE)
|
||||
#include <threads.h>
|
||||
|
||||
#if defined(ANDROID)
|
||||
/* Currently, only Android are verified that it's thrd_t are typedef of pthread_t
|
||||
* So we can define _MTX_INITIALIZER_NP to PTHREAD_MUTEX_INITIALIZER
|
||||
* FIXME: temporary non-standard hack to ease transition
|
||||
*/
|
||||
# define _MTX_INITIALIZER_NP PTHREAD_MUTEX_INITIALIZER
|
||||
#else
|
||||
#error Can not define _MTX_INITIALIZER_NP properly for this platform
|
||||
#endif
|
||||
#else
|
||||
|
||||
/*---------------------------- macros ---------------------------*/
|
||||
|
||||
#ifndef _Thread_local
|
||||
|
|
@ -185,4 +199,6 @@ int tss_set(tss_t, void *);
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_THRD_CREATE */
|
||||
|
||||
#endif /* C11_THREADS_H_INCLUDED_ */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue