[Mesa-dev] [PATCH v2] threads, configure.ac, meson.build: define and use HAVE_TIMESPEC_GET
Nicolai Hähnle
nhaehnle at gmail.com
Wed Nov 15 14:35:49 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
v2: add HAVE_TIMESPEC_GET for non-Windows Scons builds
Cc: Jon Turney <jon.turney at dronecode.org.uk>
Cc: Rob Herring <robh at kernel.org>
Cc: Alexander von Gluck IV <kallisti5 at unixzen.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103674
Fixes: f1a364878431 ("threads: update for late C11 changes")
---
SConstruct | 7 +++++++
configure.ac | 1 +
include/c11/threads_posix.h | 2 +-
meson.build | 2 +-
4 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/SConstruct b/SConstruct
index a59a8ea210e..1ef134af27d 100644
--- a/SConstruct
+++ b/SConstruct
@@ -122,20 +122,27 @@ if env['crosscompile'] and not env['embedded']:
Export('env')
SConscript(
'src/SConscript',
variant_dir = host_env['build_dir'],
duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
)
env = target_env
+if env['platform'] != 'windows':
+ # This is quite incomplete, but it hopefully covers the platforms that
+ # people actually use SCons on...
+ env.Append(CPPDEFINES= [
+ 'HAVE_TIMESPEC_GET',
+ ])
+
Export('env')
#######################################################################
# Invoke SConscripts
# TODO: Build several variants at the same time?
# http://www.scons.org/wiki/SimultaneousVariantBuilds
SConscript(
'src/SConscript',
diff --git a/configure.ac b/configure.ac
index 411c4f6b3e0..a7ae920ab9c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -841,20 +841,21 @@ if test "x$enable_asm" = xyes; then
AC_MSG_RESULT([no, platform not supported])
;;
esac
fi
AC_HEADER_MAJOR
AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
+AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"])
AC_MSG_CHECKING([whether strtod has locale support])
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#define _GNU_SOURCE
#include <stdlib.h>
#include <locale.h>
#ifdef HAVE_XLOCALE_H
#include <xlocale.h>
#endif
int main() {
diff --git a/include/c11/threads_posix.h b/include/c11/threads_posix.h
index 2d7ac1326de..45cb6075e6e 100644
--- a/include/c11/threads_posix.h
+++ b/include/c11/threads_posix.h
@@ -375,21 +375,21 @@ tss_get(tss_t key)
// 7.25.6.4
static inline int
tss_set(tss_t key, void *val)
{
return (pthread_setspecific(key, val) == 0) ? thrd_success : thrd_error;
}
/*-------------------- 7.25.7 Time functions --------------------*/
// 7.25.6.1
-#ifdef __HAIKU__
+#ifndef HAVE_TIMESPEC_GET
static inline int
timespec_get(struct timespec *ts, int base)
{
if (!ts) return 0;
if (base == TIME_UTC) {
clock_gettime(CLOCK_REALTIME, ts);
return base;
}
return 0;
}
diff --git a/meson.build b/meson.build
index 1c4200705f3..7fdc3c280e6 100644
--- a/meson.build
+++ b/meson.build
@@ -571,21 +571,21 @@ if cc.has_header_symbol('sys/sysmacros.h', 'major')
elif cc.has_header_symbol('sys/mkdev.h', 'major')
pre_args += '-DMAJOR_IN_MKDEV'
endif
foreach h : ['xlocale.h', 'sys/sysctl.h', 'linux/futex.h']
if cc.has_header(h)
pre_args += '-DHAVE_ at 0@'.format(h.to_upper().underscorify())
endif
endforeach
-foreach f : ['strtof', 'mkostemp', 'posix_memalign']
+foreach f : ['strtof', 'mkostemp', 'posix_memalign', 'timespec_get']
if cc.has_function(f)
pre_args += '-DHAVE_ at 0@'.format(f.to_upper())
endif
endforeach
# strtod locale support
if cc.links('''
#define _GNU_SOURCE
#include <stdlib.h>
#include <locale.h>
--
2.11.0
More information about the mesa-dev
mailing list