2 # Contains macros to handle library dependencies.
6 # DRUNTIME_LIBRARIES_THREAD
7 # -------------------------
8 # Allow specifying the thread library to link with or autodetect
9 # Add thread library to LIBS if necessary.
10 AC_DEFUN([DRUNTIME_LIBRARIES_THREAD],
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)]))
17 AS_IF([test "x$enable_thread_lib" = "xyes"], [
18 AC_SEARCH_LIBS([pthread_create], [pthread])
20 AS_IF([test "x$enable_thread_lib" = "xno"], [
21 AC_MSG_CHECKING([for thread library])
22 AC_MSG_RESULT([disabled])
24 AC_CHECK_LIB([$enable_thread_lib], [pthread_create], [], [
25 AC_MSG_ERROR([Thread library not found])
32 # DRUNTIME_LIBRARIES_DLOPEN
33 # -----------------------
34 # Autodetect and add dl library to LIBS if necessary.
35 AC_DEFUN([DRUNTIME_LIBRARIES_DLOPEN],
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"
45 # DRUNTIME_LIBRARIES_NET
46 # -----------------------
47 # Autodetect and add networking library to LIBS if necessary.
48 AC_DEFUN([DRUNTIME_LIBRARIES_NET],
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)
60 if test "$druntime_check_both" = "yes"; then
61 druntime_old_libs=$LIBS
62 LIBS="$LIBS -lsocket -lnsl"
63 unset ac_cv_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
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"])])
76 LIBS="$LIBS $druntime_cv_lib_sockets"
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.
84 AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB],
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])
94 case "$with_target_system_zlib" in
96 *) AC_MSG_ERROR([Invalid argument for --with-target-system-zlib]) ;;
99 AC_MSG_CHECKING([for system zlib])
102 dnl the link test is not good enough for ARM32 multilib detection,
103 dnl first check to link, then to run
105 [AC_LANG_PROGRAM([#include <zlib.h>],[gzopen("none", "rb")])],
107 AC_RUN_IFELSE([AC_LANG_SOURCE([[
110 gzFile file = gzopen("none", "rb");
114 [system_zlib_found=yes],
115 [system_zlib_found=no],
116 dnl no system zlib for cross builds ...
117 [system_zlib_found=no]
120 [system_zlib_found=no])
123 if test x$system_zlib_found = xyes && test x$with_target_system_zlib != xno; then
124 AC_MSG_RESULT([found])
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])
129 AC_MSG_RESULT([just compiled])
130 LIBZ=../../zlib/libz_convenience.la
137 # DRUNTIME_LIBRARIES_ATOMIC
138 # -------------------------
139 # Allow specifying whether to use libatomic for atomic support.
140 AC_DEFUN([DRUNTIME_LIBRARIES_ATOMIC],
142 AC_ARG_WITH(libatomic,
143 AS_HELP_STRING([--without-libatomic],
144 [Do not use libatomic in core.atomic (default: auto)]))
146 DCFG_HAVE_LIBATOMIC=false
148 AS_IF([test "x$with_libatomic" != "xno"], [
149 DCFG_HAVE_LIBATOMIC=true
150 LIBATOMIC=../../libatomic/libatomic_convenience.la
152 AC_MSG_CHECKING([for libatomic])
153 AC_MSG_RESULT([disabled])
156 AC_SUBST(DCFG_HAVE_LIBATOMIC)
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.
165 AC_DEFUN([DRUNTIME_LIBRARIES_BACKTRACE],
168 BACKTRACE_SUPPORTED=false
169 BACKTRACE_USES_MALLOC=false
170 BACKTRACE_SUPPORTS_THREADS=false
173 AC_ARG_WITH(libbacktrace,
174 AS_HELP_STRING([--without-libbacktrace],
175 [Do not use libbacktrace in core.runtime (default: auto)]))
177 AS_IF([test "x$with_libbacktrace" != "xno"], [
178 LIBBACKTRACE=../../libbacktrace/libbacktrace.la
180 gdc_save_CPPFLAGS=$CPPFLAGS
181 CPPFLAGS+=" -I../libbacktrace "
183 AC_CHECK_HEADER(backtrace-supported.h, have_libbacktrace_h=true,
184 have_libbacktrace_h=false)
186 if $have_libbacktrace_h; then
187 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTED])
188 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
190 #include <backtrace-supported.h>
191 #if BACKTRACE_SUPPORTED
192 FOUND_LIBBACKTRACE_RESULT_GDC
194 ], BACKTRACE_SUPPORTED=true, BACKTRACE_SUPPORTED=false)
195 AC_MSG_RESULT($BACKTRACE_SUPPORTED)
197 AC_MSG_CHECKING([libbacktrace: BACKTRACE_USES_MALLOC])
198 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
200 #include <backtrace-supported.h>
201 #if BACKTRACE_USES_MALLOC
202 FOUND_LIBBACKTRACE_RESULT_GDC
204 ], BACKTRACE_USES_MALLOC=true, BACKTRACE_USES_MALLOC=false)
205 AC_MSG_RESULT($BACKTRACE_USES_MALLOC)
207 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTS_THREADS])
208 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
210 #include <backtrace-supported.h>
211 #if BACKTRACE_SUPPORTS_THREADS
212 FOUND_LIBBACKTRACE_RESULT_GDC
214 ], BACKTRACE_SUPPORTS_THREADS=true, BACKTRACE_SUPPORTS_THREADS=false)
215 AC_MSG_RESULT($BACKTRACE_SUPPORTS_THREADS)
217 CPPFLAGS=$gdc_save_CPPFLAGS
219 AC_MSG_CHECKING([for libbacktrace])
220 AC_MSG_RESULT([disabled])
223 AC_SUBST(LIBBACKTRACE)
224 AC_SUBST(BACKTRACE_SUPPORTED)
225 AC_SUBST(BACKTRACE_USES_MALLOC)
226 AC_SUBST(BACKTRACE_SUPPORTS_THREADS)
230 # DRUNTIME_LIBRARIES_CLIB
231 # -----------------------
232 # Perform various feature checks on the C library.
233 AC_DEFUN([DRUNTIME_LIBRARIES_CLIB],
236 DCFG_HAVE_QSORT_R=false
237 AC_CHECK_FUNC(qsort_r, [DCFG_HAVE_QSORT_R=true])
238 AC_SUBST(DCFG_HAVE_QSORT_R)