aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Cook <busterb@gmail.com>2019-01-07 06:28:29 -0600
committerBrent Cook <busterb@gmail.com>2019-01-07 06:28:29 -0600
commit4eb8da3e07717103fceadf7138a3f377ab1c5110 (patch)
treed8dc02275cac927e77778fdf619ed94d4e5f7cf3
parent1e848d2e4eaa5664d99b0e59f124f1eabf039f05 (diff)
parentc1a44d2220db94fb3bb4d74e6ae4badbb2da6a62 (diff)
downloadportable-4eb8da3e07717103fceadf7138a3f377ab1c5110.tar.gz
portable-4eb8da3e07717103fceadf7138a3f377ab1c5110.tar.bz2
portable-4eb8da3e07717103fceadf7138a3f377ab1c5110.zip
Land #496, add configure-time check for timespecsub
-rw-r--r--CMakeLists.txt5
-rw-r--r--include/compat/time.h7
-rw-r--r--m4/check-libc.m42
3 files changed, 12 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1efe6bc..bcba254 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -237,6 +237,11 @@ if(HAVE_GETPAGESIZE)
237 add_definitions(-DHAVE_GETPAGESIZE) 237 add_definitions(-DHAVE_GETPAGESIZE)
238endif() 238endif()
239 239
240check_symbol_exists(timespecsub sys/time.h HAVE_TIMESPECSUB)
241if(HAVE_TIMESPECSUB)
242 add_definitions(-DHAVE_TIMESPECSUB)
243endif()
244
240check_function_exists(timingsafe_bcmp HAVE_TIMINGSAFE_BCMP) 245check_function_exists(timingsafe_bcmp HAVE_TIMINGSAFE_BCMP)
241if(HAVE_TIMINGSAFE_BCMP) 246if(HAVE_TIMINGSAFE_BCMP)
242 add_definitions(-DHAVE_TIMINGSAFE_BCMP) 247 add_definitions(-DHAVE_TIMINGSAFE_BCMP)
diff --git a/include/compat/time.h b/include/compat/time.h
index ccedba3..540807d 100644
--- a/include/compat/time.h
+++ b/include/compat/time.h
@@ -39,7 +39,11 @@ typedef int clockid_t;
39int clock_gettime(clockid_t clock_id, struct timespec *tp); 39int clock_gettime(clockid_t clock_id, struct timespec *tp);
40#endif 40#endif
41 41
42#ifndef timespecsub 42#ifdef timespecsub
43#define HAVE_TIMESPECSUB
44#endif
45
46#ifndef HAVE_TIMESPECSUB
43#define timespecsub(tsp, usp, vsp) \ 47#define timespecsub(tsp, usp, vsp) \
44 do { \ 48 do { \
45 (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \ 49 (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
@@ -50,6 +54,7 @@ int clock_gettime(clockid_t clock_id, struct timespec *tp);
50 } \ 54 } \
51 } while (0) 55 } while (0)
52#endif 56#endif
57
53#endif 58#endif
54 59
55#endif 60#endif
diff --git a/m4/check-libc.m4 b/m4/check-libc.m4
index 1fff77e..a4df0b7 100644
--- a/m4/check-libc.m4
+++ b/m4/check-libc.m4
@@ -5,7 +5,7 @@ AC_CHECK_HEADERS([err.h readpassphrase.h])
5AC_CHECK_FUNCS([asprintf freezero memmem]) 5AC_CHECK_FUNCS([asprintf freezero memmem])
6AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray]) 6AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray])
7AC_CHECK_FUNCS([strlcat strlcpy strndup strnlen strsep strtonum]) 7AC_CHECK_FUNCS([strlcat strlcpy strndup strnlen strsep strtonum])
8AC_CHECK_FUNCS([timegm _mkgmtime]) 8AC_CHECK_FUNCS([timegm _mkgmtime timespecsub])
9AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [ 9AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [
10 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 10 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
11// Since Android NDK v16 getpagesize is defined as inline inside unistd.h 11// Since Android NDK v16 getpagesize is defined as inline inside unistd.h