summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2019-02-09 21:29:40 +0000
committerMonty Taylor <mordred@inaugust.com>2019-02-09 21:39:17 +0000
commit2cabe5501cb720d5b715ea2ceba59140e6996ed1 (patch)
tree26e0fcf20aeedfe28bf469130f3a07883c40ae3e
parent3d97c9fc7a4b92140658aee645187d3853285910 (diff)
Simplify library searching
Use AX_CXX_CHECK_LIB from autoconf archive instead of AC_LIB_HAVE_LINKFLAGS which is from gettext and causes a bunch of other stuff to need to be copied in.
-rwxr-xr-xconfig/config.rpath672
-rw-r--r--m4/ax_cxx_check_lib.m4110
-rw-r--r--m4/pandora_have_libcpprest.m431
3 files changed, 116 insertions, 697 deletions
diff --git a/config/config.rpath b/config/config.rpath
deleted file mode 100755
index 17298f2..0000000
--- a/config/config.rpath
+++ /dev/null
@@ -1,672 +0,0 @@
1#! /bin/sh
2# Output a system dependent set of variables, describing how to set the
3# run time search path of shared libraries in an executable.
4#
5# Copyright 1996-2010 Free Software Foundation, Inc.
6# Taken from GNU libtool, 2001
7# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
8#
9# This file is free software; the Free Software Foundation gives
10# unlimited permission to copy and/or distribute it, with or without
11# modifications, as long as this notice is preserved.
12#
13# The first argument passed to this file is the canonical host specification,
14# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
15# or
16# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
17# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
18# should be set by the caller.
19#
20# The set of defined variables is at the end of this script.
21
22# Known limitations:
23# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
24# than 256 bytes, otherwise the compiler driver will dump core. The only
25# known workaround is to choose shorter directory names for the build
26# directory and/or the installation directory.
27
28# All known linkers require a `.a' archive for static linking (except MSVC,
29# which needs '.lib').
30libext=a
31shrext=.so
32
33host="$1"
34host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
35host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
36host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
37
38# Code taken from libtool.m4's _LT_CC_BASENAME.
39
40for cc_temp in $CC""; do
41 case $cc_temp in
42 compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
43 distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
44 \-*) ;;
45 *) break;;
46 esac
47done
48cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
49
50# Code taken from libtool.m4's _LT_COMPILER_PIC.
51
52wl=
53if test "$GCC" = yes; then
54 wl='-Wl,'
55else
56 case "$host_os" in
57 aix*)
58 wl='-Wl,'
59 ;;
60 darwin*)
61 case $cc_basename in
62 xlc*)
63 wl='-Wl,'
64 ;;
65 esac
66 ;;
67 mingw* | cygwin* | pw32* | os2* | cegcc*)
68 ;;
69 hpux9* | hpux10* | hpux11*)
70 wl='-Wl,'
71 ;;
72 irix5* | irix6* | nonstopux*)
73 wl='-Wl,'
74 ;;
75 newsos6)
76 ;;
77 linux* | k*bsd*-gnu)
78 case $cc_basename in
79 ecc*)
80 wl='-Wl,'
81 ;;
82 icc* | ifort*)
83 wl='-Wl,'
84 ;;
85 lf95*)
86 wl='-Wl,'
87 ;;
88 pgcc | pgf77 | pgf90)
89 wl='-Wl,'
90 ;;
91 ccc*)
92 wl='-Wl,'
93 ;;
94 como)
95 wl='-lopt='
96 ;;
97 *)
98 case `$CC -V 2>&1 | sed 5q` in
99 *Sun\ C*)
100 wl='-Wl,'
101 ;;
102 esac
103 ;;
104 esac
105 ;;
106 osf3* | osf4* | osf5*)
107 wl='-Wl,'
108 ;;
109 rdos*)
110 ;;
111 solaris*)
112 wl='-Wl,'
113 ;;
114 sunos4*)
115 wl='-Qoption ld '
116 ;;
117 sysv4 | sysv4.2uw2* | sysv4.3*)
118 wl='-Wl,'
119 ;;
120 sysv4*MP*)
121 ;;
122 sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
123 wl='-Wl,'
124 ;;
125 unicos*)
126 wl='-Wl,'
127 ;;
128 uts4*)
129 ;;
130 esac
131fi
132
133# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
134
135hardcode_libdir_flag_spec=
136hardcode_libdir_separator=
137hardcode_direct=no
138hardcode_minus_L=no
139
140case "$host_os" in
141 cygwin* | mingw* | pw32* | cegcc*)
142 # FIXME: the MSVC++ port hasn't been tested in a loooong time
143 # When not using gcc, we currently assume that we are using
144 # Microsoft Visual C++.
145 if test "$GCC" != yes; then
146 with_gnu_ld=no
147 fi
148 ;;
149 interix*)
150 # we just hope/assume this is gcc and not c89 (= MSVC++)
151 with_gnu_ld=yes
152 ;;
153 openbsd*)
154 with_gnu_ld=no
155 ;;
156esac
157
158ld_shlibs=yes
159if test "$with_gnu_ld" = yes; then
160 # Set some defaults for GNU ld with shared library support. These
161 # are reset later if shared libraries are not supported. Putting them
162 # here allows them to be overridden if necessary.
163 # Unlike libtool, we use -rpath here, not --rpath, since the documented
164 # option of GNU ld is called -rpath, not --rpath.
165 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
166 case "$host_os" in
167 aix[3-9]*)
168 # On AIX/PPC, the GNU linker is very broken
169 if test "$host_cpu" != ia64; then
170 ld_shlibs=no
171 fi
172 ;;
173 amigaos*)
174 hardcode_libdir_flag_spec='-L$libdir'
175 hardcode_minus_L=yes
176 # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
177 # that the semantics of dynamic libraries on AmigaOS, at least up
178 # to version 4, is to share data among multiple programs linked
179 # with the same dynamic library. Since this doesn't match the
180 # behavior of shared libraries on other platforms, we cannot use
181 # them.
182 ld_shlibs=no
183 ;;
184 beos*)
185 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
186 :
187 else
188 ld_shlibs=no
189 fi
190 ;;
191 cygwin* | mingw* | pw32* | cegcc*)
192 # hardcode_libdir_flag_spec is actually meaningless, as there is
193 # no search path for DLLs.
194 hardcode_libdir_flag_spec='-L$libdir'
195 if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
196 :
197 else
198 ld_shlibs=no
199 fi
200 ;;
201 interix[3-9]*)
202 hardcode_direct=no
203 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
204 ;;
205 gnu* | linux* | k*bsd*-gnu)
206 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
207 :
208 else
209 ld_shlibs=no
210 fi
211 ;;
212 netbsd*)
213 ;;
214 solaris*)
215 if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
216 ld_shlibs=no
217 elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
218 :
219 else
220 ld_shlibs=no
221 fi
222 ;;
223 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
224 case `$LD -v 2>&1` in
225 *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
226 ld_shlibs=no
227 ;;
228 *)
229 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
230 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
231 else
232 ld_shlibs=no
233 fi
234 ;;
235 esac
236 ;;
237 sunos4*)
238 hardcode_direct=yes
239 ;;
240 *)
241 if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
242 :
243 else
244 ld_shlibs=no
245 fi
246 ;;
247 esac
248 if test "$ld_shlibs" = no; then
249 hardcode_libdir_flag_spec=
250 fi
251else
252 case "$host_os" in
253 aix3*)
254 # Note: this linker hardcodes the directories in LIBPATH if there
255 # are no directories specified by -L.
256 hardcode_minus_L=yes
257 if test "$GCC" = yes; then
258 # Neither direct hardcoding nor static linking is supported with a
259 # broken collect2.
260 hardcode_direct=unsupported
261 fi
262 ;;
263 aix[4-9]*)
264 if test "$host_cpu" = ia64; then
265 # On IA64, the linker does run time linking by default, so we don't
266 # have to do anything special.
267 aix_use_runtimelinking=no
268 else
269 aix_use_runtimelinking=no
270 # Test if we are trying to use run time linking or normal
271 # AIX style linking. If -brtl is somewhere in LDFLAGS, we
272 # need to do runtime linking.
273 case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
274 for ld_flag in $LDFLAGS; do
275 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
276 aix_use_runtimelinking=yes
277 break
278 fi
279 done
280 ;;
281 esac
282 fi
283 hardcode_direct=yes
284 hardcode_libdir_separator=':'
285 if test "$GCC" = yes; then
286 case $host_os in aix4.[012]|aix4.[012].*)
287 collect2name=`${CC} -print-prog-name=collect2`
288 if test -f "$collect2name" && \
289 strings "$collect2name" | grep resolve_lib_name >/dev/null
290 then
291 # We have reworked collect2
292 :
293 else
294 # We have old collect2
295 hardcode_direct=unsupported
296 hardcode_minus_L=yes
297 hardcode_libdir_flag_spec='-L$libdir'
298 hardcode_libdir_separator=
299 fi
300 ;;
301 esac
302 fi
303 # Begin _LT_AC_SYS_LIBPATH_AIX.
304 echo 'int main () { return 0; }' > conftest.c
305 ${CC} ${LDFLAGS} conftest.c -o conftest
306 aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
307}'`
308 if test -z "$aix_libpath"; then
309 aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
310}'`
311 fi
312 if test -z "$aix_libpath"; then
313 aix_libpath="/usr/lib:/lib"
314 fi
315 rm -f conftest.c conftest
316 # End _LT_AC_SYS_LIBPATH_AIX.
317 if test "$aix_use_runtimelinking" = yes; then
318 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
319 else
320 if test "$host_cpu" = ia64; then
321 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
322 else
323 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
324 fi
325 fi
326 ;;
327 amigaos*)
328 hardcode_libdir_flag_spec='-L$libdir'
329 hardcode_minus_L=yes
330 # see comment about different semantics on the GNU ld section
331 ld_shlibs=no
332 ;;
333 bsdi[45]*)
334 ;;
335 cygwin* | mingw* | pw32* | cegcc*)
336 # When not using gcc, we currently assume that we are using
337 # Microsoft Visual C++.
338 # hardcode_libdir_flag_spec is actually meaningless, as there is
339 # no search path for DLLs.
340 hardcode_libdir_flag_spec=' '
341 libext=lib
342 ;;
343 darwin* | rhapsody*)
344 hardcode_direct=no
345 if test "$GCC" = yes ; then
346 :
347 else
348 case $cc_basename in
349 xlc*)
350 ;;
351 *)
352 ld_shlibs=no
353 ;;
354 esac
355 fi
356 ;;
357 dgux*)
358 hardcode_libdir_flag_spec='-L$libdir'
359 ;;
360 freebsd1*)
361 ld_shlibs=no
362 ;;
363 freebsd2.2*)
364 hardcode_libdir_flag_spec='-R$libdir'
365 hardcode_direct=yes
366 ;;
367 freebsd2*)
368 hardcode_direct=yes
369 hardcode_minus_L=yes
370 ;;
371 freebsd* | dragonfly*)
372 hardcode_libdir_flag_spec='-R$libdir'
373 hardcode_direct=yes
374 ;;
375 hpux9*)
376 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
377 hardcode_libdir_separator=:
378 hardcode_direct=yes
379 # hardcode_minus_L: Not really in the search PATH,
380 # but as the default location of the library.
381 hardcode_minus_L=yes
382 ;;
383 hpux10*)
384 if test "$with_gnu_ld" = no; then
385 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
386 hardcode_libdir_separator=:
387 hardcode_direct=yes
388 # hardcode_minus_L: Not really in the search PATH,
389 # but as the default location of the library.
390 hardcode_minus_L=yes
391 fi
392 ;;
393 hpux11*)
394 if test "$with_gnu_ld" = no; then
395 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
396 hardcode_libdir_separator=:
397 case $host_cpu in
398 hppa*64*|ia64*)
399 hardcode_direct=no
400 ;;
401 *)
402 hardcode_direct=yes
403 # hardcode_minus_L: Not really in the search PATH,
404 # but as the default location of the library.
405 hardcode_minus_L=yes
406 ;;
407 esac
408 fi
409 ;;
410 irix5* | irix6* | nonstopux*)
411 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
412 hardcode_libdir_separator=:
413 ;;
414 netbsd*)
415 hardcode_libdir_flag_spec='-R$libdir'
416 hardcode_direct=yes
417 ;;
418 newsos6)
419 hardcode_direct=yes
420 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
421 hardcode_libdir_separator=:
422 ;;
423 openbsd*)
424 if test -f /usr/libexec/ld.so; then
425 hardcode_direct=yes
426 if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
427 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
428 else
429 case "$host_os" in
430 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
431 hardcode_libdir_flag_spec='-R$libdir'
432 ;;
433 *)
434 hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
435 ;;
436 esac
437 fi
438 else
439 ld_shlibs=no
440 fi
441 ;;
442 os2*)
443 hardcode_libdir_flag_spec='-L$libdir'
444 hardcode_minus_L=yes
445 ;;
446 osf3*)
447 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
448 hardcode_libdir_separator=:
449 ;;
450 osf4* | osf5*)
451 if test "$GCC" = yes; then
452 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
453 else
454 # Both cc and cxx compiler support -rpath directly
455 hardcode_libdir_flag_spec='-rpath $libdir'
456 fi
457 hardcode_libdir_separator=:
458 ;;
459 solaris*)
460 hardcode_libdir_flag_spec='-R$libdir'
461 ;;
462 sunos4*)
463 hardcode_libdir_flag_spec='-L$libdir'
464 hardcode_direct=yes
465 hardcode_minus_L=yes
466 ;;
467 sysv4)
468 case $host_vendor in
469 sni)
470 hardcode_direct=yes # is this really true???
471 ;;
472 siemens)
473 hardcode_direct=no
474 ;;
475 motorola)
476 hardcode_direct=no #Motorola manual says yes, but my tests say they lie
477 ;;
478 esac
479 ;;
480 sysv4.3*)
481 ;;
482 sysv4*MP*)
483 if test -d /usr/nec; then
484 ld_shlibs=yes
485 fi
486 ;;
487 sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
488 ;;
489 sysv5* | sco3.2v5* | sco5v6*)
490 hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
491 hardcode_libdir_separator=':'
492 ;;
493 uts4*)
494 hardcode_libdir_flag_spec='-L$libdir'
495 ;;
496 *)
497 ld_shlibs=no
498 ;;
499 esac
500fi
501
502# Check dynamic linker characteristics
503# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
504# Unlike libtool.m4, here we don't care about _all_ names of the library, but
505# only about the one the linker finds when passed -lNAME. This is the last
506# element of library_names_spec in libtool.m4, or possibly two of them if the
507# linker has special search rules.
508library_names_spec= # the last element of library_names_spec in libtool.m4
509libname_spec='lib$name'
510case "$host_os" in
511 aix3*)
512 library_names_spec='$libname.a'
513 ;;
514 aix[4-9]*)
515 library_names_spec='$libname$shrext'
516 ;;
517 amigaos*)
518 library_names_spec='$libname.a'
519 ;;
520 beos*)
521 library_names_spec='$libname$shrext'
522 ;;
523 bsdi[45]*)
524 library_names_spec='$libname$shrext'
525 ;;
526 cygwin* | mingw* | pw32* | cegcc*)
527 shrext=.dll
528 library_names_spec='$libname.dll.a $libname.lib'
529 ;;
530 darwin* | rhapsody*)
531 shrext=.dylib
532 library_names_spec='$libname$shrext'
533 ;;
534 dgux*)
535 library_names_spec='$libname$shrext'
536 ;;
537 freebsd1*)
538 ;;
539 freebsd* | dragonfly*)
540 case "$host_os" in
541 freebsd[123]*)
542 library_names_spec='$libname$shrext$versuffix' ;;
543 *)
544 library_names_spec='$libname$shrext' ;;
545 esac
546 ;;
547 gnu*)
548 library_names_spec='$libname$shrext'
549 ;;
550 hpux9* | hpux10* | hpux11*)
551 case $host_cpu in
552 ia64*)
553 shrext=.so
554 ;;
555 hppa*64*)
556 shrext=.sl
557 ;;
558 *)
559 shrext=.sl
560 ;;
561 esac
562 library_names_spec='$libname$shrext'
563 ;;
564 interix[3-9]*)
565 library_names_spec='$libname$shrext'
566 ;;
567 irix5* | irix6* | nonstopux*)
568 library_names_spec='$libname$shrext'
569 case "$host_os" in
570 irix5* | nonstopux*)
571 libsuff= shlibsuff=
572 ;;
573 *)
574 case $LD in
575 *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
576 *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
577 *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
578 *) libsuff= shlibsuff= ;;
579 esac
580 ;;
581 esac
582 ;;
583 linux*oldld* | linux*aout* | linux*coff*)
584 ;;
585 linux* | k*bsd*-gnu)
586 library_names_spec='$libname$shrext'
587 ;;
588 knetbsd*-gnu)
589 library_names_spec='$libname$shrext'
590 ;;
591 netbsd*)
592 library_names_spec='$libname$shrext'
593 ;;
594 newsos6)
595 library_names_spec='$libname$shrext'
596 ;;
597 nto-qnx*)
598 library_names_spec='$libname$shrext'
599 ;;
600 openbsd*)
601 library_names_spec='$libname$shrext$versuffix'
602 ;;
603 os2*)
604 libname_spec='$name'
605 shrext=.dll
606 library_names_spec='$libname.a'
607 ;;
608 osf3* | osf4* | osf5*)
609 library_names_spec='$libname$shrext'
610 ;;
611 rdos*)
612 ;;
613 solaris*)
614 library_names_spec='$libname$shrext'
615 ;;
616 sunos4*)
617 library_names_spec='$libname$shrext$versuffix'
618 ;;
619 sysv4 | sysv4.3*)
620 library_names_spec='$libname$shrext'
621 ;;
622 sysv4*MP*)
623 library_names_spec='$libname$shrext'
624 ;;
625 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
626 library_names_spec='$libname$shrext'
627 ;;
628 uts4*)
629 library_names_spec='$libname$shrext'
630 ;;
631esac
632
633sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
634escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
635shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
636escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
637escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
638escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
639
640LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
641
642# How to pass a linker flag through the compiler.
643wl="$escaped_wl"
644
645# Static library suffix (normally "a").
646libext="$libext"
647
648# Shared library suffix (normally "so").
649shlibext="$shlibext"
650
651# Format of library name prefix.
652libname_spec="$escaped_libname_spec"
653
654# Library names that the linker finds when passed -lNAME.
655library_names_spec="$escaped_library_names_spec"
656
657# Flag to hardcode \$libdir into a binary during linking.
658# This must work even if \$libdir does not exist.
659hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
660
661# Whether we need a single -rpath flag with a separated argument.
662hardcode_libdir_separator="$hardcode_libdir_separator"
663
664# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
665# resulting binary.
666hardcode_direct="$hardcode_direct"
667
668# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
669# resulting binary.
670hardcode_minus_L="$hardcode_minus_L"
671
672EOF
diff --git a/m4/ax_cxx_check_lib.m4 b/m4/ax_cxx_check_lib.m4
new file mode 100644
index 0000000..d4aab47
--- /dev/null
+++ b/m4/ax_cxx_check_lib.m4
@@ -0,0 +1,110 @@
1dnl @synopsis AX_CXX_CHECK_LIB(libname, functioname, action-if, action-if-not)
2dnl
3dnl The standard AC_CHECK_LIB can not test functions in namespaces.
4dnl Therefore AC_CHECK_LIB(cgicc, cgicc::Cgicc::getVersion) will always
5dnl fail. We need to decompose the functionname into a series of namespaces
6dnl where it gets declared so that it can be used for a link test.
7dnl
8dnl In the first version I did allow namespace::functionname to be a
9dnl reference to a void-argument global functionname (just wrapped in a
10dnl namespace) like its C counterparts would be - but in reality such
11dnl thing does not exist. The only global / static functions are always
12dnl made const-functions which is an attribute mangled along into the
13dnl library function export name.
14dnl
15dnl The normal usage will ask for a test of a class-member function which
16dnl should be presented with a full function spec with arguments given in
17dnl parentheses following the function name - if the function to test for
18dnl does expect arguments then you should add default initial values in the
19dnl prototype (even if they do not exist originally, these are used only
20dnl locally to build a correct function call in the configure test script).
21dnl
22dnl In the current version if you do omit the parenthesis from the macro
23dnl argument then the macro will assume that you want to check for the
24dnl class name - which is really to check for default constructor being
25dnl exported from the given library name.
26dnl
27dnl EXAMPLE:
28dnl AX_CXX_CHECK_LIB(cgicc, [cgicc::HTTPCookie])
29dnl AX_CXX_CHECK_LIB(cgicc, [cgicc::Cgicc::getVersion () const],
30dnl AX_CXX_CHECK_LIB(boost_regex, [boost::RegEx::Position (int i = 0) const])
31dnl
32dnl Result:
33dnl Just as the usual AX_CXX_CHECK_LIB - defines HAVE_LIBCGICC
34dnl and adds the libraries to the default library path (and
35dnl uses internally the normal ac_check_lib cache symbol
36dnl like ac_cv_lib_cgicc_cgicc__Cgicc)
37dnl
38dnl Footnote: The C++ language is not good at creating stable library
39dnl interfaces at the binary level - a lot of functionality is usually being
40dnl given as inline functions plus there is hardly a chance to create opaque
41dnl types. Therefore most C++ library tests will only do compile tests using
42dnl the header files. Doing a check_lib is however good to check the link
43dnl dependency before hitting it as an error in the build later.
44dnl
45dnl @category C++
46dnl @author Guido U. Draheim
47dnl @vesion 2006-12-18
48
49AC_DEFUN([AX_CXX_CHECK_LIB],
50[m4_ifval([$3], , [AH_CHECK_LIB([$1])])dnl
51AS_LITERAL_IF([$1],
52 [AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$2])],
53 [AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1''_$2])])dnl
54AC_CACHE_CHECK([for $2 in -l$1], ac_Lib,
55[ac_check_lib_save_LIBS=$LIBS
56LIBS="-l$1 $5 $LIBS"
57case "$2"
58in *::*::*\(*)
59AC_LINK_IFELSE([AC_LANG_PROGRAM([
60 namespace `echo "$2" | sed -e "s/::.*//"`
61 { class `echo "$2" | sed -e "s/.*::\\(.*\\)::.*/\\1/" -e "s/(.*//"`
62 { public: int `echo "$2" | sed -e "s/.*:://" -e "/(/!s/..*/&()/"`;
63 };
64 }
65],[`echo "$2" | sed -e "s/(.*//" -e "s/\\(.*\\)::\\(.*\\)/((\\1*)(0))->\\2/g"`()])],
66 [AS_VAR_SET(ac_Lib, yes)],
67 [AS_VAR_SET(ac_Lib, no)])
68;; *::*::*)
69AC_LINK_IFELSE([AC_LANG_PROGRAM([
70 namespace `echo "$2" | sed -e "s/::.*//"`
71 { namespace `echo "$2" | sed -e "s/.*::\\(.*\\)::.*/\\1/"`
72 { class `echo "$2" | sed -e "s/.*:://"`
73 { public: `echo "$2" | sed -e "s/.*:://"` ();
74 };
75 }
76 }
77],[new $2()])],
78 [AS_VAR_SET(ac_Lib, yes)],
79 [AS_VAR_SET(ac_Lib, no)])
80;; *::*\(*)
81AC_LINK_IFELSE([AC_LANG_PROGRAM([
82 class `echo "$2" | sed -e "s/\\(.*\\)::.*/\\1/" -e "s/(.*//"`
83 { public: int `echo "$2" | sed -e "s/.*:://" -e "/(/!s/..*/&()/"`;
84 };
85],[`echo "$2" | sed -e "s/(.*//" -e "s/\\(.*\\)::\\(.*\\)/((\\1*)(0))->\\2/g"`()])],
86 [AS_VAR_SET(ac_Lib, yes)],
87 [AS_VAR_SET(ac_Lib, no)])
88;; *::*)
89AC_LINK_IFELSE([AC_LANG_PROGRAM([
90 namespace `echo "$2" | sed -e "s/::.*//"`
91 { class `echo "$2" | sed -e "s/.*:://"`
92 { public: `echo "$2" | sed -e "s/.*:://"` ();
93 };
94 }
95],[new $2()])],
96 [AS_VAR_SET(ac_Lib, yes)],
97 [AS_VAR_SET(ac_Lib, no)])
98;; *)
99AC_LINK_IFELSE([AC_LANG_CALL([], [$2])],
100 [AS_VAR_SET(ac_Lib, yes)],
101 [AS_VAR_SET(ac_Lib, no)])
102;; esac
103LIBS=$ac_check_lib_save_LIBS])
104AS_IF([test AS_VAR_GET(ac_Lib) = yes],
105 [m4_default([$3], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
106 LIBS="-l$1 $LIBS"
107])],
108 [$4])dnl
109AS_VAR_POPDEF([ac_Lib])dnl
110])# AC_CHECK_LIB
diff --git a/m4/pandora_have_libcpprest.m4 b/m4/pandora_have_libcpprest.m4
index 5c8d1b9..2f99d2e 100644
--- a/m4/pandora_have_libcpprest.m4
+++ b/m4/pandora_have_libcpprest.m4
@@ -7,34 +7,15 @@ dnl Provides support for finding libcpprest.
7dnl LIBCPPREST_CFLAGS will be set, in addition to LIBCPPREST and LTLIBCPPREST 7dnl LIBCPPREST_CFLAGS will be set, in addition to LIBCPPREST and LTLIBCPPREST
8 8
9AC_DEFUN([_PANDORA_SEARCH_LIBCPPREST],[ 9AC_DEFUN([_PANDORA_SEARCH_LIBCPPREST],[
10 AC_REQUIRE([AC_LIB_PREFIX])
11
12 dnl -------------------------------------------------------------------- 10 dnl --------------------------------------------------------------------
13 dnl Check for libcpprest 11 dnl Check for libcpprest
14 dnl -------------------------------------------------------------------- 12 dnl --------------------------------------------------------------------
15 13
16 AC_ARG_ENABLE([libcpprest], 14 AC_SEARCH_LIBS([CONF_modules_unload], [crypto])
17 [AS_HELP_STRING([--disable-libcpprest], 15 AC_LANG_PUSH([C++])
18 [Build with libcpprest support @<:@default=on@:>@])], 16 AX_CXX_CHECK_LIB(boost_system, [boost::system::system_category()])
19 [ac_enable_libcpprest="$enableval"], 17 AX_CXX_CHECK_LIB(cpprest, [utility::datetime::utc_now()])
20 [ac_enable_libcpprest="yes"]) 18 AC_LANG_POP()
21
22 AS_IF([test "x$ac_enable_libcpprest" = "xyes"],[
23 AC_LANG_PUSH([C++])
24 save_CXXFLAGS="${CXXFLAGS}"
25 CXXFLAGS="${PTHREAD_CFLAGS} ${CXXFLAGS}"
26 AC_LIB_HAVE_LINKFLAGS(cpprest,[boost_system ssl crypto],[
27#include <cpprest/http_client.h>
28 ],[
29web::http::client::http_client client("http://example.com/");
30 ])
31 CXXFLAGS="${save_CXXFLAGS}"
32 AC_LANG_POP()
33 ],[
34 ac_cv_libcpprest="no"
35 ])
36
37 AM_CONDITIONAL(HAVE_LIBCPPREST, [test "${ac_cv_libcpprest}" = "yes"])
38]) 19])
39 20
40AC_DEFUN([PANDORA_HAVE_LIBCPPREST],[ 21AC_DEFUN([PANDORA_HAVE_LIBCPPREST],[
@@ -43,6 +24,6 @@ AC_DEFUN([PANDORA_HAVE_LIBCPPREST],[
43 24
44AC_DEFUN([PANDORA_REQUIRE_LIBCPPREST],[ 25AC_DEFUN([PANDORA_REQUIRE_LIBCPPREST],[
45 AC_REQUIRE([_PANDORA_SEARCH_LIBCPPREST]) 26 AC_REQUIRE([_PANDORA_SEARCH_LIBCPPREST])
46 AS_IF([test "x${ac_cv_libcpprest}" = "xno"], 27 AS_IF([test "x${ac_cv_lib_cpprest_utility__datetime__utc_now__}" = "xno"],
47 PANDORA_MSG_ERROR([libcpprest is required for ${PACKAGE}.])) 28 PANDORA_MSG_ERROR([libcpprest is required for ${PACKAGE}.]))
48]) 29])