]> git.ipfire.org Git - thirdparty/gcc.git/blob - libphobos/m4/druntime/libraries.m4
libphobos: Add target-zlib to top-level configure
[thirdparty/gcc.git] / libphobos / m4 / druntime / libraries.m4
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.
10 AC_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.
35 AC_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.
48 AC_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.
84 AC_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.
140 AC_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.
165 AC_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+=" -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.
233 AC_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 ])