Commit cee21eb6 authored by Michał Fita's avatar Michał Fita Committed by Daniel Stenberg
Browse files

configure: add --disable-rt option

This option disables any attempts in configure to create dependency on
stuff requiring linking to librt.so and libpthread.so, in this case this
means clock_gettime(CLOCK_MONOTONIC, &mt).

We were in need to build curl which doesn't link libpthread.so to avoid
the following bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=16628.
parent da650c1e
Loading
Loading
Loading
Loading
+16 −13
Original line number Diff line number Diff line
@@ -1851,6 +1851,8 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
  AC_REQUIRE([AC_HEADER_TIME])dnl
  AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
  AC_MSG_CHECKING([for monotonic clock_gettime])
  #
  if test "x$dontwant_rt" == "xno" ; then
    AC_COMPILE_IFELSE([
      AC_LANG_PROGRAM([[
#ifdef HAVE_SYS_TYPES_H
@@ -1877,6 +1879,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
      AC_MSG_RESULT([no])
      ac_cv_func_clock_gettime="no"
    ])
  fi
  dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
  dnl until library linking and run-time checks for clock_gettime succeed.
])
+2 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ CURL_CHECK_OPTION_WERROR
CURL_CHECK_OPTION_CURLDEBUG
CURL_CHECK_OPTION_SYMBOL_HIDING
CURL_CHECK_OPTION_ARES
CURL_CHECK_OPTION_RT

XC_CHECK_PATH_SEPARATOR

@@ -3217,7 +3218,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
[Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
fi

if test "$want_thres" = "yes"; then
if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then
  AC_CHECK_HEADER(pthread.h,
    [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
      save_CFLAGS="$CFLAGS"
+36 −0
Original line number Diff line number Diff line
@@ -316,6 +316,42 @@ dnl AC_MSG_ERROR([options --enable-ares and --enable-threads are mutually ex
dnl   fi
dnl ])

dnl CURL_CHECK_OPTION_RT
dnl -------------------------------------------------
dnl Verify if configure has been involed with option
dnl --disable-rt and set shell variable dontwant_rt
dnl as appropriate.

AC_DEFUN([CURL_CHECK_OPTION_RT], [
  AC_BEFORE([$0], [CURL_CHECK_LIB_THREADS])dnl
  AC_MSG_CHECKING([whether to disable dependency on -lrt])
  OPT_RT="default"
  AC_ARG_ENABLE(rt,
 AC_HELP_STRING([--disable-rt],[disable dependency on -lrt]),
  OPT_RT=$enableval)
  case "$OPT_RT" in
    no)
      dnl --disable-rt used (reverse logic)
      dontwant_rt="yes"
      AC_MSG_RESULT([yes])
      ;;
    default)
      dnl configure option not specified (so not disabled)
      dontwant_rt="no"
      AC_MSG_RESULT([(assumed no)]
      ;;
    *)
      dnl --enable-rt option used (reverse logic)
      dontwant_rt="no"
      AC_MSG_RESULT([no])
      ;;
  esac
  dnl TODO: may require mutual exclusion
  if test "$dontwant_rt" = "yes" && test "$want_thres" = "yes" ; then
    AC_MSG_ERROR([options --disable-rt and --enable-thread-resolver are mutually exclusive, at most one can be selected.])
  fi
])
 

dnl CURL_CHECK_OPTION_WARNINGS
dnl -------------------------------------------------