[Mesa-dev] [PATCH v3] threads, configure.ac, meson.build: define and use HAVE_TIMESPEC_GET

Dylan Baker dylan at pnwbakers.com
Wed Nov 15 21:19:18 UTC 2017


This should make scons work correctly on every platform, so:
Reviewed-by: Dylan Baker <dylan at pnwbakers.com>

Quoting Nicolai Hähnle (2017-11-15 12:58:12)
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
> 
> Tested with Travis and Appveyor.
> 
> v2: add HAVE_TIMESPEC_GET for non-Windows Scons builds
> v3: use check_functions in Scons (Eric)
> 
> 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")
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com> (v2)
> Reviewed-by: Dylan Baker <dylan at pnwbakers.com> (v2)
> Reviewed-by: Jon Turney <jon.turney at dronecode.org.uk> (v2)
> ---
>  configure.ac                | 1 +
>  include/c11/threads_posix.h | 2 +-
>  meson.build                 | 2 +-
>  scons/gallium.py            | 3 +++
>  4 files changed, 6 insertions(+), 2 deletions(-)
> 
> 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 7bf6a0f6ef6..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
> -#if 0
> +#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 314d15ac461..25a5cd658d1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -527,21 +527,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>
> diff --git a/scons/gallium.py b/scons/gallium.py
> index 94022df1808..ef3b2ee81ae 100755
> --- a/scons/gallium.py
> +++ b/scons/gallium.py
> @@ -348,20 +348,23 @@ def generate(env):
>                  'GLX_DIRECT_RENDERING',
>                  'GLX_INDIRECT_RENDERING',
>              ]
>  
>          if check_header(env, 'xlocale.h'):
>              cppdefines += ['HAVE_XLOCALE_H']
>  
>          if check_functions(env, ['strtod_l', 'strtof_l']):
>              cppdefines += ['HAVE_STRTOD_L']
>  
> +        if check_functions(env, ['timespec_get']):
> +            cppdefines += ['HAVE_TIMESPEC_GET']
> +
>      if platform == 'windows':
>          cppdefines += [
>              'WIN32',
>              '_WINDOWS',
>              #'_UNICODE',
>              #'UNICODE',
>              # http://msdn.microsoft.com/en-us/library/aa383745.aspx
>              ('_WIN32_WINNT', '0x0601'),
>              ('WINVER', '0x0601'),
>          ]
> -- 
> 2.11.0
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171115/5e68838d/attachment-0001.sig>


More information about the mesa-dev mailing list