Mercurial > vim
changeset 29523:1733b6162f75 v9.0.0103
patch 9.0.0103: if running configure with cached results -lrt may be missing
Commit: https://github.com/vim/vim/commit/efffa5360ebb2b6919c5eb1998c5df4c8849a407
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jul 28 22:39:54 2022 +0100
patch 9.0.0103: if running configure with cached results -lrt may be missing
Problem: If running configure with cached results -lrt may be missing.
Solution: Use two cache variables, one without and one with -lrt.
(closes #10799) Swap checks to avoid adding -lrt unnecessarily.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 28 Jul 2022 23:45:02 +0200 |
parents | 1deb9ffc5948 |
children | db3afe53702b |
files | src/auto/configure src/configure.ac src/version.c |
diffstat | 3 files changed, 107 insertions(+), 78 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auto/configure +++ b/src/auto/configure @@ -13037,14 +13037,12 @@ else fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create" >&5 -$as_echo_n "checking for timer_create... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create without -lrt" >&5 +$as_echo_n "checking for timer_create without -lrt... " >&6; } if ${vim_cv_timer_create+:} false; then : $as_echo_n "(cached) " >&6 else -save_LIBS="$LIBS" -LIBS="$LIBS -lrt" if test "$cross_compiling" = yes; then : as_fn_error $? "cross-compiling: please set 'vim_cv_timer_create'" "$LINENO" 5 @@ -13078,68 +13076,85 @@ main () } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: timer_create with -lrt" >&5 -$as_echo "$as_me: timer_create with -lrt" >&6;}; vim_cv_timer_create=yes -else - LIBS="$save_LIBS" - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#endif -#include<signal.h> -#include<time.h> -static void set_flag(union sigval sv) {} - -int -main () -{ - - struct timespec ts; - struct sigevent action = {0}; - timer_t timer_id; - - action.sigev_notify = SIGEV_THREAD; - action.sigev_notify_function = set_flag; - if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0) - exit(1); // cannot create a monotonic timer + vim_cv_timer_create=yes +else + vim_cv_timer_create=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create" >&5 +$as_echo "$vim_cv_timer_create" >&6; } + +if test "x$vim_cv_timer_create" = "xno" ; then + save_LIBS="$LIBS" + LIBS="$LIBS -lrt" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create with -lrt" >&5 +$as_echo_n "checking for timer_create with -lrt... " >&6; } +if ${vim_cv_timer_create_with_lrt+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + as_fn_error $? "cross-compiling: please set 'vim_cv_timer_create_with_lrt'" "$LINENO" 5 + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if STDC_HEADERS + # include <stdlib.h> + # include <stddef.h> + #endif + #include <signal.h> + #include <time.h> + static void set_flag(union sigval sv) {} + +int +main () +{ + + struct timespec ts; + struct sigevent action = {0}; + timer_t timer_id; + + action.sigev_notify = SIGEV_THREAD; + action.sigev_notify_function = set_flag; + if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0) + exit(1); // cannot create a monotonic timer ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : - vim_cv_timer_create=yes -else - vim_cv_timer_create=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - + vim_cv_timer_create_with_lrt=yes +else + vim_cv_timer_create_with_lrt=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create" >&5 -$as_echo "$vim_cv_timer_create" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create_with_lrt" >&5 +$as_echo "$vim_cv_timer_create_with_lrt" >&6; } + LIBS="$save_LIBS" +else + vim_cv_timer_create_with_lrt=no +fi if test "x$vim_cv_timer_create" = "xyes" ; then $as_echo "#define HAVE_TIMER_CREATE 1" >>confdefs.h fi - +if test "x$vim_cv_timer_create_with_lrt" = "xyes" ; then + $as_echo "#define HAVE_TIMER_CREATE 1" >>confdefs.h + + LIBS="$LIBS -lrt" +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat() ignores a trailing slash" >&5 $as_echo_n "checking whether stat() ignores a trailing slash... " >&6; }
--- a/src/configure.ac +++ b/src/configure.ac @@ -3807,9 +3807,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM( dnl Check for timer_create. It probably requires the 'rt' library. dnl Run the program to find out if timer_create(CLOCK_MONOTONIC) actually dnl works, on Solaris timer_create() exists but fails at runtime. -AC_CACHE_CHECK([for timer_create], [vim_cv_timer_create], [ -save_LIBS="$LIBS" -LIBS="$LIBS -lrt" +AC_CACHE_CHECK([for timer_create without -lrt], [vim_cv_timer_create], [ AC_RUN_IFELSE([AC_LANG_PROGRAM([ #if STDC_HEADERS # include <stdlib.h> @@ -3828,36 +3826,50 @@ static void set_flag(union sigval sv) {} if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0) exit(1); // cannot create a monotonic timer ])], - AC_MSG_NOTICE(timer_create with -lrt); vim_cv_timer_create=yes, - LIBS="$save_LIBS" - AC_RUN_IFELSE([AC_LANG_PROGRAM([ -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#endif -#include<signal.h> -#include<time.h> -static void set_flag(union sigval sv) {} + vim_cv_timer_create=yes, + vim_cv_timer_create=no, + AC_MSG_ERROR(cross-compiling: please set 'vim_cv_timer_create') + )]) + +dnl If the previous failed, check for timer_create() and linking with -lrt. +if test "x$vim_cv_timer_create" = "xno" ; then + save_LIBS="$LIBS" + LIBS="$LIBS -lrt" + AC_CACHE_CHECK([for timer_create with -lrt], [vim_cv_timer_create_with_lrt], [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([ + #if STDC_HEADERS + # include <stdlib.h> + # include <stddef.h> + #endif + #include <signal.h> + #include <time.h> + static void set_flag(union sigval sv) {} ], [ - struct timespec ts; - struct sigevent action = {0}; - timer_t timer_id; - - action.sigev_notify = SIGEV_THREAD; - action.sigev_notify_function = set_flag; - if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0) - exit(1); // cannot create a monotonic timer - ])], - vim_cv_timer_create=yes, - vim_cv_timer_create=no), - AC_MSG_ERROR(cross-compiling: please set 'vim_cv_timer_create') - )] -) + struct timespec ts; + struct sigevent action = {0}; + timer_t timer_id; + + action.sigev_notify = SIGEV_THREAD; + action.sigev_notify_function = set_flag; + if (timer_create(CLOCK_MONOTONIC, &action, &timer_id) < 0) + exit(1); // cannot create a monotonic timer + ])], + vim_cv_timer_create_with_lrt=yes, + vim_cv_timer_create_with_lrt=no, + AC_MSG_ERROR(cross-compiling: please set 'vim_cv_timer_create_with_lrt') + )]) + LIBS="$save_LIBS" +else + vim_cv_timer_create_with_lrt=no +fi if test "x$vim_cv_timer_create" = "xyes" ; then AC_DEFINE(HAVE_TIMER_CREATE) fi - +if test "x$vim_cv_timer_create_with_lrt" = "xyes" ; then + AC_DEFINE(HAVE_TIMER_CREATE) + LIBS="$LIBS -lrt" +fi AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash], [