]> git.ipfire.org Git - thirdparty/gcc.git/blob - libphobos/m4/druntime/libraries.m4
Fix libphobos linking on Solaris 11
[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. Define
83 # DRUNTIME_ZLIB_SYSTEM conditional and add zlib to
84 # LIBS if necessary.
85 AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB],
86 [
87 AC_ARG_WITH(target-system-zlib,
88 AS_HELP_STRING([--with-target-system-zlib],
89 [use installed libz (default: no)]))
90
91 system_zlib=false
92 AS_IF([test "x$with_target_system_zlib" = "xyes"], [
93 AC_CHECK_LIB([z], [deflate], [
94 system_zlib=yes
95 ], [
96 AC_MSG_ERROR([System zlib not found])
97 ])
98 ], [
99 AC_MSG_CHECKING([for zlib])
100 AC_MSG_RESULT([just compiled])
101 ])
102
103 AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes])
104 ])
105
106 # DRUNTIME_LIBRARIES_ATOMIC
107 # -------------------------
108 # Allow specifying whether to use libatomic for atomic support.
109 AC_DEFUN([DRUNTIME_LIBRARIES_ATOMIC],
110 [
111 AC_ARG_WITH(libatomic,
112 AS_HELP_STRING([--without-libatomic],
113 [Do not use libatomic in core.atomic (default: auto)]))
114
115 DCFG_HAVE_LIBATOMIC=false
116 LIBATOMIC=
117 AS_IF([test "x$with_libatomic" != "xno"], [
118 DCFG_HAVE_LIBATOMIC=true
119 LIBATOMIC=../../libatomic/libatomic_convenience.la
120 ], [
121 AC_MSG_CHECKING([for libatomic])
122 AC_MSG_RESULT([disabled])
123 ])
124
125 AC_SUBST(DCFG_HAVE_LIBATOMIC)
126 AC_SUBST(LIBATOMIC)
127 ])
128
129 # DRUNTIME_LIBRARIES_BACKTRACE
130 # ---------------------------
131 # Allow specifying whether to use libbacktrace for backtrace support.
132 # Adds subsitute for BACKTRACE_SUPPORTED, BACKTRACE_USES_MALLOC,
133 # and BACKTRACE_SUPPORTS_THREADS.
134 AC_DEFUN([DRUNTIME_LIBRARIES_BACKTRACE],
135 [
136 AC_LANG_PUSH([C])
137 BACKTRACE_SUPPORTED=false
138 BACKTRACE_USES_MALLOC=false
139 BACKTRACE_SUPPORTS_THREADS=false
140 LIBBACKTRACE=""
141
142 AC_ARG_WITH(libbacktrace,
143 AS_HELP_STRING([--without-libbacktrace],
144 [Do not use libbacktrace in core.runtime (default: auto)]))
145
146 AS_IF([test "x$with_libbacktrace" != "xno"], [
147 LIBBACKTRACE=../../libbacktrace/libbacktrace.la
148
149 gdc_save_CPPFLAGS=$CPPFLAGS
150 CPPFLAGS+=" -I../libbacktrace "
151
152 AC_CHECK_HEADER(backtrace-supported.h, have_libbacktrace_h=true,
153 have_libbacktrace_h=false)
154
155 if $have_libbacktrace_h; then
156 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTED])
157 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
158 [
159 #include <backtrace-supported.h>
160 #if BACKTRACE_SUPPORTED
161 FOUND_LIBBACKTRACE_RESULT_GDC
162 #endif
163 ], BACKTRACE_SUPPORTED=true, BACKTRACE_SUPPORTED=false)
164 AC_MSG_RESULT($BACKTRACE_SUPPORTED)
165
166 AC_MSG_CHECKING([libbacktrace: BACKTRACE_USES_MALLOC])
167 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
168 [
169 #include <backtrace-supported.h>
170 #if BACKTRACE_USES_MALLOC
171 FOUND_LIBBACKTRACE_RESULT_GDC
172 #endif
173 ], BACKTRACE_USES_MALLOC=true, BACKTRACE_USES_MALLOC=false)
174 AC_MSG_RESULT($BACKTRACE_USES_MALLOC)
175
176 AC_MSG_CHECKING([libbacktrace: BACKTRACE_SUPPORTS_THREADS])
177 AC_EGREP_CPP(FOUND_LIBBACKTRACE_RESULT_GDC,
178 [
179 #include <backtrace-supported.h>
180 #if BACKTRACE_SUPPORTS_THREADS
181 FOUND_LIBBACKTRACE_RESULT_GDC
182 #endif
183 ], BACKTRACE_SUPPORTS_THREADS=true, BACKTRACE_SUPPORTS_THREADS=false)
184 AC_MSG_RESULT($BACKTRACE_SUPPORTS_THREADS)
185 fi
186 CPPFLAGS=$gdc_save_CPPFLAGS
187 ], [
188 AC_MSG_CHECKING([for libbacktrace])
189 AC_MSG_RESULT([disabled])
190 ])
191
192 AC_SUBST(LIBBACKTRACE)
193 AC_SUBST(BACKTRACE_SUPPORTED)
194 AC_SUBST(BACKTRACE_USES_MALLOC)
195 AC_SUBST(BACKTRACE_SUPPORTS_THREADS)
196 AC_LANG_POP([C])
197 ])
198
199 # DRUNTIME_LIBRARIES_CLIB
200 # -----------------------
201 # Perform various feature checks on the C library.
202 AC_DEFUN([DRUNTIME_LIBRARIES_CLIB],
203 [
204 AC_LANG_PUSH([C])
205 DCFG_HAVE_QSORT_R=false
206 AC_CHECK_FUNC(qsort_r, [DCFG_HAVE_QSORT_R=true])
207 AC_SUBST(DCFG_HAVE_QSORT_R)
208 AC_LANG_POP([C])
209 ])