]> rtime.felk.cvut.cz Git - git.git/commitdiff
configure.ac: check for clock_gettime and CLOCK_MONOTONIC
authorReuben Hawkins <reubenhwk@gmail.com>
Thu, 8 Jan 2015 20:00:56 +0000 (12:00 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 9 Jan 2015 23:33:39 +0000 (15:33 -0800)
Set or clear Makefile variables HAVE_CLOCK_GETTIME and
HAVE_CLOCK_MONOTONIC based upon results of the checks (overriding
default values from config.mak.uname).

CLOCK_MONOTONIC isn't available on RHEL3, but there are still RHEL3
systems being used in production.

Signed-off-by: Reuben Hawkins <reubenhwk@gmail.com>
Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
config.mak.uname
configure.ac
trace.c

index 06e5d24312e47e9a6e7e33def74c70f54c21f2e1..1bbf5f950688be8bd8208dca57b3bb1739158e6e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -343,6 +343,8 @@ all::
 # return NULL when it receives a bogus time_t.
 #
 # Define HAVE_CLOCK_GETTIME if your platform has clock_gettime in librt.
+#
+# Define HAVE_CLOCK_MONOTONIC if your platform has CLOCK_MONOTONIC in librt.
 
 GIT-VERSION-FILE: FORCE
        @$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -1402,6 +1404,10 @@ ifdef HAVE_CLOCK_GETTIME
        EXTLIBS += -lrt
 endif
 
+ifdef HAVE_CLOCK_MONOTONIC
+       BASIC_CFLAGS += -DHAVE_CLOCK_MONOTONIC
+endif
+
 ifeq ($(TCLTK_PATH),)
 NO_TCLTK = NoThanks
 endif
index f3c93f27c945193754090e97c2070c9e66759f02..b64b63c34c315561110c5d9f3e334ebd633d095b 100644 (file)
@@ -35,6 +35,7 @@ ifeq ($(uname_S),Linux)
        LIBC_CONTAINS_LIBINTL = YesPlease
        HAVE_DEV_TTY = YesPlease
        HAVE_CLOCK_GETTIME = YesPlease
+       HAVE_CLOCK_MONOTONIC = YesPlease
 endif
 ifeq ($(uname_S),GNU/kFreeBSD)
        HAVE_ALLOCA_H = YesPlease
index 583af8ab5f153d55148657a6d7384be35ca5fa69..6361dcbd508e5cf54287ab28dfc1c4de7f81a9ec 100644 (file)
@@ -947,6 +947,28 @@ AC_CHECK_LIB([iconv], [locale_charset],
                      [CHARSET_LIB=-lcharset])])
 GIT_CONF_SUBST([CHARSET_LIB])
 #
+# Define HAVE_CLOCK_GETTIME=YesPlease if clock_gettime is available.
+GIT_CHECK_FUNC(clock_gettime,
+       [HAVE_CLOCK_GETTIME=YesPlease],
+       [HAVE_CLOCK_GETTIME=])
+GIT_CONF_SUBST([HAVE_CLOCK_GETTIME])
+
+AC_DEFUN([CLOCK_MONOTONIC_SRC], [
+AC_LANG_PROGRAM([[
+#include <time.h>
+clockid_t id = CLOCK_MONOTONIC;
+]])])
+
+#
+# Define HAVE_CLOCK_MONOTONIC=YesPlease if CLOCK_MONOTONIC is available.
+AC_MSG_CHECKING([for CLOCK_MONOTONIC])
+AC_COMPILE_IFELSE([CLOCK_MONOTONIC_SRC],
+       [AC_MSG_RESULT([yes])
+       HAVE_CLOCK_MONOTONIC=YesPlease],
+       [AC_MSG_RESULT([no])
+       HAVE_CLOCK_MONOTONIC=])
+GIT_CONF_SUBST([HAVE_CLOCK_MONOTONIC])
+#
 # Define NO_SETITIMER if you don't have setitimer.
 GIT_CHECK_FUNC(setitimer,
 [NO_SETITIMER=],
diff --git a/trace.c b/trace.c
index f6f9f3a367242f5f3f10e1d33381f0a52d4fbe55..1dc5c7c912d000699b753b1aab5c09a114e26557 100644 (file)
--- a/trace.c
+++ b/trace.c
@@ -322,7 +322,7 @@ int trace_want(struct trace_key *key)
        return !!get_trace_fd(key);
 }
 
-#ifdef HAVE_CLOCK_GETTIME
+#if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_CLOCK_MONOTONIC)
 
 static inline uint64_t highres_nanos(void)
 {