1# 2# Contains macros to handle library dependencies. 3# 4 5 6# DRUNTIME_LIBRARIES_THREAD 7# ------------------------- 8# Allow specifying the thread library to link with or autodetect 9# Add thread library to LIBS if necessary. 10AC_DEFUN([DRUNTIME_LIBRARIES_THREAD], 11[ 12 enable_thread_lib=yes 13 AC_ARG_ENABLE(thread-lib, 14 AC_HELP_STRING([--enable-thread-lib=<arg>], 15 [specify linker option for the system thread library (default: autodetect)])) 16 17 AS_IF([test "x$enable_thread_lib" = "xyes"], [ 18 AC_SEARCH_LIBS([pthread_create], [pthread]) 19 ], [ 20 AS_IF([test "x$enable_thread_lib" = "xno"], [ 21 AC_MSG_CHECKING([for thread library]) 22 AC_MSG_RESULT([disabled]) 23 ], [ 24 AC_CHECK_LIB([$enable_thread_lib], [pthread_create], [], [ 25 AC_MSG_ERROR([Thread library not found]) 26 ]) 27 ]) 28 ]) 29]) 30 31 32# DRUNTIME_LIBRARIES_DLOPEN 33# ----------------------- 34# Autodetect and add dl library to LIBS if necessary. 35AC_DEFUN([DRUNTIME_LIBRARIES_DLOPEN], 36[ 37 # Libtool has already checked this, so re-use the inferred dlopen lib. 38 AS_IF([test "x$enable_dlopen" = "xyes" && test -n "$lt_cv_dlopen_libs"], [ 39 LIBS="$LIBS $lt_cv_dlopen_libs" 40 ], [ 41 ]) 42]) 43 44 45# DRUNTIME_LIBRARIES_NET 46# ----------------------- 47# Autodetect and add networking library to LIBS if necessary. 48AC_DEFUN([DRUNTIME_LIBRARIES_NET], 49[ 50 dnl Test for -lsocket and -lnsl. Copied from libjava/configure.ac. 51 AC_CACHE_CHECK([for socket libraries], druntime_cv_lib_sockets, 52 [druntime_cv_lib_sockets= 53 druntime_check_both=no 54 AC_CHECK_FUNC(connect, druntime_check_socket=no, druntime_check_socket=yes) 55 if test "$druntime_check_socket" = "yes"; then 56 unset ac_cv_func_connect 57 AC_CHECK_LIB(socket, main, druntime_cv_lib_sockets="-lsocket", 58 druntime_check_both=yes) 59 fi 60 if test "$druntime_check_both" = "yes"; then 61 druntime_old_libs=$LIBS 62 LIBS="$LIBS -lsocket -lnsl" 63 unset ac_cv_func_accept 64 AC_CHECK_FUNC(accept, 65 [druntime_check_nsl=no 66 druntime_cv_lib_sockets="-lsocket -lnsl"]) 67 unset ac_cv_func_accept 68 LIBS=$druntime_old_libs 69 fi 70 unset ac_cv_func_gethostbyname 71 druntime_old_libs="$LIBS" 72 AC_CHECK_FUNC(gethostbyname, , 73 [AC_CHECK_LIB(nsl, main, 74 [druntime_cv_lib_sockets="$druntime_cv_lib_sockets -lnsl"])]) 75 ]) 76 LIBS="$LIBS $druntime_cv_lib_sockets" 77]) 78 79# DRUNTIME_LIBRARIES_ZLIB 80# ----------------------- 81# Allow specifying whether to use the system zlib or 82# compiling the zlib included in GCC. Adds substitute 83# for LIBZ or adds zlib to LIBS if necessary. 84AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], 85[ 86 AC_LANG_PUSH([C]) 87 LIBZ="" 88 89 AC_ARG_WITH(target-system-zlib, 90 AS_HELP_STRING([--with-target-system-zlib={yes,no,auto}], 91 [use installed libz (default: no)]),, 92 [with_target_system_zlib=no]) 93 94 case "$with_target_system_zlib" in 95 yes|no|auto) ;; 96 *) AC_MSG_ERROR([Invalid argument for --with-target-system-zlib]) ;; 97 esac 98 99 AC_MSG_CHECKING([for system zlib]) 100 save_LIBS=$LIBS 101 LIBS="$LIBS -lz" 102 dnl the link test is not good enough for ARM32 multilib detection, 103 dnl first check to link, then to run 104 AC_LINK_IFELSE( 105 [AC_LANG_PROGRAM([#include <zlib.h>],[gzopen("none", "rb")])], 106 [ 107 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 108 #include <zlib.h> 109 int main() { 110 gzFile file = gzopen("none", "rb"); 111 return 0; 112 } 113 ]])], 114 [system_zlib_found=yes], 115 [system_zlib_found=no], 116 dnl no system zlib for cross builds ... 117 [system_zlib_found=no] 118 ) 119 ], 120 [system_zlib_found=no]) 121 LIBS=$save_LIBS 122 123 if test x$system_zlib_found = xyes && test x$with_target_system_zlib != xno; then 124 AC_MSG_RESULT([found]) 125 LIBS="$LIBS -lz" 126 elif test x$system_zlib_found = xno && test x$with_target_system_zlib = xyes; then 127 AC_MSG_ERROR([system zlib required but not found]) 128 else 129 AC_MSG_RESULT([just compiled]) 130 LIBZ=../../zlib/libz_convenience.la 131 fi 132 133 AC_SUBST(LIBZ) 134 AC_LANG_POP([C]) 135]) 136 137# DRUNTIME_LIBRARIES_ATOMIC 138# ------------------------- 139# Allow specifying whether to use libatomic for atomic support. 140AC_DEFUN([DRUNTIME_LIBRARIES_ATOMIC], 141[ 142 AC_ARG_WITH(libatomic, 143 AS_HELP_STRING([--without-libatomic], 144 [Do not use libatomic in core.atomic (default: auto)])) 145 146 DCFG_HAVE_LIBATOMIC=false 147 LIBATOMIC= 148 AS_IF([test "x$with_libatomic" != "xno"], [ 149 DCFG_HAVE_LIBATOMIC=true 150 LIBATOMIC=../../libatomic/libatomic_convenience.la 151 ], [ 152 AC_MSG_CHECKING([for libatomic]) 153 AC_MSG_RESULT([disabled]) 154 ]) 155 156 AC_SUBST(DCFG_HAVE_LIBATOMIC) 157 AC_SUBST(LIBATOMIC) 158]) 159 160# DRUNTIME_LIBRARIES_BACKTRACE 161# --------------------------- 162# Allow specifying whether to use libbacktrace for backtrace support. 163# Adds subsitute for BACKTRACE_SUPPORTED, BACKTRACE_USES_MALLOC, 164# and BACKTRACE_SUPPORTS_THREADS. 165AC_DEFUN([DRUNTIME_LIBRARIES_BACKTRACE], 166[ 167 AC_LANG_PUSH([C]) 168 BACKTRACE_SUPPORTED=false 169 BACKTRACE_USES_MALLOC=false 170 BACKTRACE_SUPPORTS_THREADS=false 171 LIBBACKTRACE="" 172 173 AC_ARG_WITH(libbacktrace, 174 AS_HELP_STRING([--without-libbacktrace], 175 [Do not use libbacktrace in core.runtime (default: auto)])) 176 177 AS_IF([test "x$with_libbacktrace" != "xno"], [ 178 LIBBACKTRACE=../../libbacktrace/libbacktrace.la 179 180 gdc_save_CPPFLAGS=$CPPFLAGS 181 CPPFLAGS="$CPPFLAGS -I../libbacktrace " 182 183 AC_CHECK_HEADER(backtrace-supported.h, have_libbacktrace_h=true, 184 have_libbacktrace_h=false) 185 186 if $have_libbacktrace_h; then 187 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTED]) 188 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC, 189 [ 190 #include <backtrace-supported.h> 191 #if BACKTRACE_SUPPORTED 192 FOUND_LIBBACKTRACE_RESULT_GDC 193 #endif 194 ], BACKTRACE_SUPPORTED=true, BACKTRACE_SUPPORTED=false) 195 AC_MSG_RESULT($BACKTRACE_SUPPORTED) 196 197 AC_MSG_CHECKING([libbacktrace: BACKTRACE_USES_MALLOC]) 198 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC, 199 [ 200 #include <backtrace-supported.h> 201 #if BACKTRACE_USES_MALLOC 202 FOUND_LIBBACKTRACE_RESULT_GDC 203 #endif 204 ], BACKTRACE_USES_MALLOC=true, BACKTRACE_USES_MALLOC=false) 205 AC_MSG_RESULT($BACKTRACE_USES_MALLOC) 206 207 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTS_THREADS]) 208 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC, 209 [ 210 #include <backtrace-supported.h> 211 #if BACKTRACE_SUPPORTS_THREADS 212 FOUND_LIBBACKTRACE_RESULT_GDC 213 #endif 214 ], BACKTRACE_SUPPORTS_THREADS=true, BACKTRACE_SUPPORTS_THREADS=false) 215 AC_MSG_RESULT($BACKTRACE_SUPPORTS_THREADS) 216 fi 217 CPPFLAGS=$gdc_save_CPPFLAGS 218 ], [ 219 AC_MSG_CHECKING([for libbacktrace]) 220 AC_MSG_RESULT([disabled]) 221 ]) 222 223 AC_SUBST(LIBBACKTRACE) 224 AC_SUBST(BACKTRACE_SUPPORTED) 225 AC_SUBST(BACKTRACE_USES_MALLOC) 226 AC_SUBST(BACKTRACE_SUPPORTS_THREADS) 227 AC_LANG_POP([C]) 228]) 229 230# DRUNTIME_LIBRARIES_CLIB 231# ----------------------- 232# Perform various feature checks on the C library. 233AC_DEFUN([DRUNTIME_LIBRARIES_CLIB], 234[ 235 AC_LANG_PUSH([C]) 236 DCFG_HAVE_QSORT_R=false 237 AC_CHECK_FUNC(qsort_r, [DCFG_HAVE_QSORT_R=true]) 238 AC_SUBST(DCFG_HAVE_QSORT_R) 239 AC_LANG_POP([C]) 240]) 241