From 287a1f87ca850b3583c27a1f178aaee28e02f2df Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 24 Jan 2014 01:35:13 -0800 Subject: [PATCH] Require libdl for dynamic linking at runtime --- config.h.in | 3 ++ configure | 78 ++++++++++++++++++++++++++++++++++++++++---------- riscv/riscv.ac | 2 ++ 3 files changed, 68 insertions(+), 15 deletions(-) diff --git a/config.h.in b/config.h.in index 43d6cec..9272c1b 100644 --- a/config.h.in +++ b/config.h.in @@ -1,5 +1,8 @@ /* config.h.in. Generated from configure.ac by autoheader. */ +/* Define to 1 if you have the `dl' library (-ldl). */ +#undef HAVE_LIBDL + /* Define to 1 if you have the `fesvr' library (-lfesvr). */ #undef HAVE_LIBFESVR diff --git a/configure b/configure index 9e22f3c..77eef2f 100755 --- a/configure +++ b/configure @@ -4081,13 +4081,61 @@ if test "${with_fesvr+set}" = set; then : fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libfesvr_is_present in -lfesvr" >&5 +$as_echo_n "checking for libfesvr_is_present in -lfesvr... " >&6; } +if ${ac_cv_lib_fesvr_libfesvr_is_present+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfesvr -pthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char libfesvr_is_present (); +int +main () +{ +return libfesvr_is_present (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_fesvr_libfesvr_is_present=yes +else + ac_cv_lib_fesvr_libfesvr_is_present=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fesvr_libfesvr_is_present" >&5 +$as_echo "$ac_cv_lib_fesvr_libfesvr_is_present" >&6; } +if test "x$ac_cv_lib_fesvr_libfesvr_is_present" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBFESVR 1 +_ACEOF + + LIBS="-lfesvr $LIBS" + +else + as_fn_error $? "libfesvr is required" "$LINENO" 5 +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lfesvr -pthread $LIBS" +LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4129,13 +4177,13 @@ else fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libfesvr_is_present in -lfesvr" >&5 -$as_echo_n "checking for libfesvr_is_present in -lfesvr... " >&6; } -if ${ac_cv_lib_fesvr_libfesvr_is_present+:} false; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lfesvr $LIBS" +LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4145,35 +4193,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char libfesvr_is_present (); +char dlopen (); int main () { -return libfesvr_is_present (); +return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_fesvr_libfesvr_is_present=yes + ac_cv_lib_dl_dlopen=yes else - ac_cv_lib_fesvr_libfesvr_is_present=no + ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fesvr_libfesvr_is_present" >&5 -$as_echo "$ac_cv_lib_fesvr_libfesvr_is_present" >&6; } -if test "x$ac_cv_lib_fesvr_libfesvr_is_present" = xyes; then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : cat >>confdefs.h <<_ACEOF -#define HAVE_LIBFESVR 1 +#define HAVE_LIBDL 1 _ACEOF - LIBS="-lfesvr $LIBS" + LIBS="-ldl $LIBS" else - as_fn_error $? "libfesvr is required" "$LINENO" 5 + as_fn_error $? "libdl is required" "$LINENO" 5 fi diff --git a/riscv/riscv.ac b/riscv/riscv.ac index a65039b..b0b2282 100644 --- a/riscv/riscv.ac +++ b/riscv/riscv.ac @@ -11,6 +11,8 @@ AC_CHECK_LIB(fesvr, libfesvr_is_present, [], [AC_MSG_ERROR([libfesvr is required AC_CHECK_LIB(pthread, pthread_create, [], [AC_MSG_ERROR([libpthread is required])]) +AC_CHECK_LIB(dl, dlopen, [], [AC_MSG_ERROR([libdl is required])]) + AC_ARG_ENABLE([fpu], AS_HELP_STRING([--disable-fpu], [Disable floating-point])) AS_IF([test "x$enable_fpu" != "xno"], [ AC_DEFINE([RISCV_ENABLE_FPU],,[Define if floating-point instructions are supported]) -- 2.30.2