aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@eecs.berkeley.edu>2014-01-24 01:35:13 -0800
committerAndrew Waterman <waterman@eecs.berkeley.edu>2014-01-24 01:35:13 -0800
commit287a1f87ca850b3583c27a1f178aaee28e02f2df (patch)
tree9f99a01d72843600d145038a727f39f387099f8f
parent816893bbe79b6cdd6107ec020b5265a5253694c6 (diff)
downloadspike-287a1f87ca850b3583c27a1f178aaee28e02f2df.zip
spike-287a1f87ca850b3583c27a1f178aaee28e02f2df.tar.gz
spike-287a1f87ca850b3583c27a1f178aaee28e02f2df.tar.bz2
Require libdl for dynamic linking at runtime
-rw-r--r--config.h.in3
-rwxr-xr-xconfigure78
-rw-r--r--riscv/riscv.ac2
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])