blob: 263abc4e3e63bf790fe8d176fcd417a503b68423 [file] [log] [blame]
Alexandre Lisionddd731e2014-01-31 11:50:08 -05001# Copyright (C) 2006-2010 David Sugar, Tycho Softworks.
2#
3# This file is free software; as a special exception the author gives
4# unlimited permission to copy and/or distribute it, with or without
5# modifications, as long as this notice is preserved.
6#
7# This program is distributed in the hope that it will be useful, but
8# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
9# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
11AC_INIT([ucommon],[6.0.7])
12AC_CONFIG_SRCDIR([inc/ucommon/ucommon.h])
13
14LT_VERSION="6:3:0"
15OPENSSL_REQUIRES="0.9.7"
16
17AC_CONFIG_AUX_DIR(autoconf)
18AC_CANONICAL_SYSTEM
19AC_PROG_CPP
20AC_PROG_CC
21AC_PROG_CXXCPP
22AC_PROG_CXX
23AC_LIBTOOL_WIN32_DLL
24AM_PROG_LIBTOOL
25AM_INIT_AUTOMAKE([dist-shar dist-zip])
26AM_CONFIG_HEADER(ucommon-config.h)
27
28AC_C_RESTRICT
29AC_C_VOLATILE
30AC_C_INLINE
31
32UCOMMON_VISIBILITY="0"
33UCOMMON_FLAGS=""
34UCOMMON_MODEL="CXX"
35UCOMMON_CLINK=""
36UCOMMON_LIBC="-lc"
37UCOMMON_LIBS=""
38OPENSSL_LINK=""
39
40CHECKFLAGS="$CHECKFLAGS"
41
42case "$with_crypto" in
43ssl|openssl)
44 ssl="openssl"
45 ;;
46gnutls|gnu)
47 ssl="gnutls"
48 ;;
49none|nossl)
50 ssl="nossl"
51 ;;
52*)
53 ssl="detect"
54 ;;
55esac
56
57have_gettext="no"
58socket_lib=""
59posix4_lib=""
60rt_lib=""
61
62test -z "$localedir" && localedir='${datadir}/locale'
63
64AC_DEFUN([AC_SUBST_DIR], [
65 ifelse($2,,,$1="[$]$2")
66 result="***"
67 prior="A"
68 while test "$prior" != "$result" ; do
69 prior=`(echo "[$]$1")`
70 $1=`(
71 test "x$prefix" = xNONE && prefix="$ac_default_prefix"
72 test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
73 eval echo \""[$]$1"\"
74 )`
75 result=`(echo "[$]$1")`
76 done
77 AC_SUBST($1)
78])
79
80# for very old gcc and for minix we disable full ucommon build by default
81# we also disable for mingw32 or when no "shared" library support because
82# libstdc++ is not dll and really bloats in linkage of plugins. Any case,
83# you can always override with --enable-stdcpp...
84
85if test -z "$enable_stdcpp" ; then
86 if test "x$GCC" = "xyes" ; then
87 gccver=`$CC -dumpversion | cut -f1 -d.`
88 fi
89 if test -z "$gccver" ; then
90 gccver="3"
91 fi
92 if test "$gccver" -lt "3" ; then
93 enable_stdcpp="no"
94 fi
95 if test "x$enable_shared" = "xno" ; then
96 enable_stdcpp="no"
97 fi
98 case "$target_os" in
99 *minix*|mingw*)
100 enable_stdcpp="no"
101 ;;
102 esac
103fi
104
105AC_ARG_ENABLE(posix-timers,
106 AC_HELP_STRING([--enable-posix-timers],
107 [enable posix timers]))
108
109if test "x$enable_posix_timers" = "xyes" ; then
110 UCOMMON_FLAGS="$UCOMMON_FLAGS -DPOSIX_TIMERS"
111fi
112
113AC_ARG_ENABLE(stdcpp,
114 AC_HELP_STRING([--disable-stdcpp],
115 [compile without stdc++ runtime overhead]))
116
117 AC_MSG_CHECKING([full c++ support and linking model])
118
119if test "x$enable_stdcpp" = "xno" ; then
120 UCOMMON_MODEL="CC"
121 AC_MSG_RESULT(no)
122 COMPAT=""
123else
124 COMPAT="commoncpp"
125 AC_MSG_RESULT(yes)
126fi
127
128AC_ARG_WITH(sslstack,
129 AC_HELP_STRING([--with-sslstack=lib],[specify which ssl stack to build]),[
130 if test x$with_sslstack != x ; then
131 ssl="${with_sslstack}" ; fi
132])
133
134AC_ARG_WITH(libc,
135 AC_HELP_STRING([--with-libc=path],[specify path to alternate libc]),[
136 if test x$with_libc != x ; then
137 clib=`echo ${with_libc} | sed s/[-]l//`
138 UCOMMON_LIBC=-l${clib} ; fi
139])
140
141AC_ARG_ENABLE(debug,
142 AC_HELP_STRING([--enable-debug],[compile for debugging]))
143if test -z "$enable_debug" ; then
144 enable_debug="no"
145elif test $enable_debug = "yes" ; then
146 CXXFLAGS="${CXXFLAGS} -g -DDEBUG"
147fi
148
149AH_BOTTOM([
150#include <ucommon/platform.h>
151])
152
153threading="none"
154clib=`echo ${UCOMMON_LIBC} | sed s/[-]l//`
155tlib=""
156
157AC_CHECK_HEADERS(stdint.h poll.h sys/mman.h sys/shm.h sys/poll.h sys/timeb.h endian.h sys/filio.h dirent.h sys/resource.h wchar.h netinet/in.h net/if.h)
158AC_CHECK_HEADERS(mach/clock.h mach-o/dyld.h linux/version.h sys/inotify.h sys/event.h syslog.h sys/wait.h termios.h termio.h fcntl.h unistd.h)
159AC_CHECK_HEADERS(sys/param.h sys/lockf.h sys/file.h dlfcn.h)
160
161AC_CHECK_HEADER(regex.h, [
162 AC_DEFINE(HAVE_REGEX_H, [1], [have regex header])
163 AC_CHECK_LIB(regex, regfree, [
164 UCOMMON_LIBS="$UCOMMON_LIBS -lregex"
165 ])
166])
167
168AC_CHECK_LIB(msvcrt, fopen, [
169 threading="msw"
170 clib="msvcrt"
171 UCOMMON_VISIBILITY="0"
172 UCOMMON_LIBS="--enable-stdcall-fixup $UCOMMON_LIBS -lmingwex -lmingw32 -lcrypt32 -ladvapi32 -luser32 -lws2_32 -lwsock32 -lkernel32"
173 UCOMMON_LIBC="-lmsvcrt -lgcc"
174 OPENSSL_LINK="-lgdi32"
175 AC_DEFINE(HAVE_INET_NTOP, [1], [have inet_ntop])
176 AC_DEFINE(HAVE_GETADDRINFO, [1], [have getaddrinfo])
177],[
178 AC_CHECK_LIB(gcc, __modsi3, [
179 UCOMMON_LIBC="$UCOMMON_LIBC -lgcc"
180 ])
181 AC_CHECK_LIB($clib, socketpair, [
182 AC_DEFINE(HAVE_SOCKETPAIR, [1], [have socketpair])
183 ],[
184 AC_CHECK_LIB(socket, socketpair, [AC_DEFINE(HAVE_SOCKETPAIR, [1], [have socketpair])])
185 ])
186 AC_CHECK_LIB($clib, getaddrinfo, [
187 AC_DEFINE(HAVE_GETADDRINFO, [1], [have getaddrinfo])
188 ],[
189 AC_CHECK_LIB(socket, getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, [1], [have getaddrinfo])])
190 ])
191 AC_CHECK_LIB($clib, gethostbyname2, [
192 AC_DEFINE(HAVE_GETHOSTBYNAME2, [1], [have gethostbyname2])
193 ],[
194 AC_CHECK_LIB(socket, gethostbyname2, [AC_DEFINE(HAVE_GETHOSTBYNAME2, [1], [have gethostbyname2])])
195 ])
196
197 AC_CHECK_LIB($clib, inet_ntop, [
198 AC_DEFINE(HAVE_INET_NTOP, [1], [have inet ntop])
199 ],[
200 AC_CHECK_LIB(socket, inet_ntop, [
201 AC_DEFINE(HAVE_INET_NTOP, [1], [have inet ntop])
202 ],[
203 AC_CHECK_LIB(nsl, inet_ntop, [
204 AC_DEFINE(HAVE_INET_NTOP, [1], [have inet_ntop])
205 socket_lib="$socket_lib -lnsl"
206 ])
207 ])
208 ])
209
210 AC_CHECK_LIB(socket, socket,[
211 AC_CHECK_LIB(socket, socketpair,[
212 AC_DEFINE(HAVE_SOCKETPAIR, [1], [have socketpair in libsocket])
213 ])
214 socket_lib="-lsocket"
215 ])
216])
217
218AC_ARG_ENABLE(socks,
219 AC_HELP_STRING([--enable-socks],
220 [compile with socks proxy support]))
221
222if test "x$enable_socks" = "xyes" ; then
223 enable_socks="no"
224 AC_CHECK_HEADERS(socks.h, [
225 enable_socks="yes"
226 ])
227else
228 enable_socks="no"
229fi
230
231AC_MSG_CHECKING([for socks proxy support])
232
233if test "x$enable_socks" = "xyes" ; then
234 socket_lib="-lsocksd $socket_lib"
235 AC_DEFINE(HAVE_SOCKS, [1], "Socks proxy support")
236 AC_MSG_RESULT(yes)
237else
238 AC_MSG_RESULT(no)
239fi
240
241AC_CHECK_LIB($clib, lstat, [
242 AC_DEFINE(HAVE_LSTAT, [1], [have lstat])
243])
244
245AC_CHECK_LIB($clib, strcoll, [
246 AC_DEFINE(HAVE_STRCOLL, [1], [string collation])
247])
248
249AC_CHECK_LIB($clib, stricmp, [
250 AC_DEFINE(HAVE_STRICMP, [1], [string icmp])
251])
252
253AC_CHECK_LIB($clib, stristr, [
254 AC_DEFINE(HAVE_STRISTR, [1], [string istr])
255])
256
257AC_CHECK_LIB($clib, sysconf, [
258 AC_DEFINE(HAVE_SYSCONF, [1], [system config])
259])
260
261AC_CHECK_LIB($clib, posix_memalign, [
262 AC_DEFINE(HAVE_POSIX_MEMALIGN, [1], [posix memory alignment])
263])
264
265AC_CHECK_LIB($clib, dlopen,,[
266 AC_CHECK_LIB(dl, dlopen, [UCOMMON_LIBS="$UCOMMON_LIBS -ldl"],[
267 AC_CHECK_LIB(compat, dlopen, [UCOMMON_LIBS="$UCOMMON_LIBS -lcompat"])
268 AC_CHECK_LIB(dld, shl_load,[
269 AC_DEFINE(HAVE_SHL_LOAD, [1], [alternate dyn loader])
270 UCOMMON_LIBS="$UCOMMON_LIBS -ldld"
271 ])
272 ])
273])
274
275PTHREAD_FLAGS=""
276
277if test "$enable_shared" = "no" ; then
278 UCOMMON_FLAGS="$UCOMMON_FLAGS -DUCOMMON_STATIC" ; fi
279
280AC_ARG_ENABLE(atomics, [
281 AC_HELP_STRING([--enable-atomics],[enable gcc atomic support])], [
282 AC_DEFINE(HAVE_GCC_ATOMICS, [1], ["cannot test in autoconf safely"])
283])
284
285AC_ARG_ENABLE(pth, [
286 AC_HELP_STRING([--enable-pth],[always use GNU pth for threading])
287])
288
289if test "$threading" = "none" ; then
290 if test "$enable_pth" != "yes" ; then
291 AC_CHECK_HEADER(pthread.h, [
292 PTHREAD_FLAGS="-mt -pthread -pthreads"
293 AC_CHECK_LIB(pthread,pthread_create,[
294 tlib="pthread"
295 UCOMMON_LIBS="$UCOMMON_LIBS -lpthread"
296 ])
297 if test -z "$tlib" ; then
298 AC_CHECK_LIB($clib, pthread_create, [tlib="$clib"])
299 fi
300 if test -z "$tlib" ; then
301 AC_CHECK_LIB(c_r, pthread_create, [
302 tlib="c_r"
303 if test "$clib" = "c" ; then
304 AC_CHECK_LIB(c_r, malloc, [clib="c_r"])
305 fi
306 ])
307 fi
308 if test ! -z "$tlib" ; then
309 AC_CHECK_LIB($tlib,pthread_condattr_setclock,[
310 AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK, [1], ["pthread clocking"])
311 ])
312 AC_CHECK_LIB($tlib,pthread_setconcurrency,[
313 AC_DEFINE(HAVE_PTHREAD_SETCONCURRENCY, [1], ["pthread concurrency"])
314 ])
315
316 AC_CHECK_LIB($tlib,pthread_yield,[
317 AC_DEFINE(HAVE_PTHREAD_YIELD, [1], ["pthread yield"],[
318 AC_CHECK_LIB($tlib,pthread_yield_np,[
319 AC_DEFINE(HAVE_PTHREAD_YIELD_NP, [1], ["pthread yield np"])
320 ])
321 ])
322 ])
323
324 AC_CHECK_LIB($tlib,pthread_delay,[
325 AC_DEFINE(HAVE_PTHREAD_DELAY, [1], ["pthread delay"])
326 ])
327 AC_CHECK_LIB($tlib,pthread_delay_np,[
328 AC_DEFINE(HAVE_PTHREAD_DELAY_NP, [1], ["pthread delay np"])
329 ])
330 AC_CHECK_LIB($tlib,pthread_setschedprio,[
331 AC_DEFINE(HAVE_PTHREAD_SETSCHEDPRIO, [1], ["pthread scheduling"])
332 ])
333 fi
334 ],[
335 AC_CHECK_HEADER(windows.h,, [
336 AC_CHECK_HEADER(pth.h,[
337 UCOMMON_LIBS="$UCOMMON_LIBS -lpth"
338 UCOMMON_FLAGS="$UCOMMON_FLAGS -D__PTH__"
339 ],[
340 AC_MSG_ERROR("pthread or GNU pth support required")
341 ])
342 ])
343 ])
344 else
345 AC_CHECK_HEADER(pth.h,[
346 UCOMMON_LIBS="$UCOMMON_LIBS -lpth"
347 UCOMMON_FLAGS="$UCOMMON_FLAGS -D__PTH__"
348 ],[
349 AC_MSG_ERROR("GNU pth required")
350 ])
351 fi
352fi
353
354for func in ftok shm_open nanosleep clock_nanosleep clock_gettime strerror_r localtime_r gmtime_r posix_fadvise ftruncate pwrite setpgrp setlocale gettext execvp atexit realpath symlink readlink waitpid wait4 ; do
355 found="no"
356 AC_CHECK_FUNC($func,[
357 found=$func
358 ],[
359 AC_CHECK_LIB(posix4, $func, [
360 found=$func
361 posix4_lib="-lposix4"
362 ],[
363 AC_CHECK_LIB(rt, $func, [
364 found=$func
365 rt_lib="-lrt"
366 ],[
367 if test ! -z "$tlib" ; then
368 AC_CHECK_LIB($tlib, $func, [
369 found=$func
370 ])
371 fi
372 ])
373 ])
374 ])
375 case $found in
376 shm_open)
377 AC_DEFINE(HAVE_SHM_OPEN, [1], [shared memory open])
378 ;;
379 setpgrp)
380 AC_DEFINE(HAVE_SETPGRP, [1], [process group control])
381 ;;
382 realpath)
383 AC_DEFINE(HAVE_REALPATH, [1], [realpath support])
384 ;;
385 ftok)
386 AC_DEFINE(HAVE_FTOK, [1], [has ftok])
387 ;;
388 gmtime_r)
389 AC_DEFINE(HAVE_GMTIME_R, [1], [has localtime_r])
390 ;;
391 localtime_r)
392 AC_DEFINE(HAVE_LOCALTIME_R, [1], [has localtime_r])
393 ;;
394 strerror_r)
395 AC_DEFINE(HAVE_STRERROR_R, [1], [has strerror_r])
396 ;;
397 nanosleep)
398 AC_DEFINE(HAVE_NANOSLEEP, [1], [has nanosleep])
399 ;;
400 clock_nanosleep)
401 AC_DEFINE(HAVE_CLOCK_NANOSLEEP, [1], [has clocked nanosleep])
402 ;;
403 clock_gettime)
404 AC_DEFINE(HAVE_CLOCK_GETTIME, [1], [has posix clock functions])
405 ;;
406 posix_fadvise)
407 AC_DEFINE(HAVE_POSIX_FADVISE, [1], [can specify access options])
408 ;;
409 ftruncate)
410 AC_DEFINE(HAVE_FTRUNCATE, [1], [can truncate files])
411 ;;
412 pwrite)
413 AC_DEFINE(HAVE_PWRITE, [1], [can do atomic write with offset])
414 ;;
415 setlocale)
416 AC_DEFINE(HAVE_SETLOCALE, [1], [can set localization])
417 ;;
418 gettext)
419 AC_DEFINE(HAVE_GETTEXT, [1], [has gettext in libc])
420 have_gettext="yes"
421 ;;
422 execvp)
423 AC_DEFINE(HAVE_EXECVP, [1], [has execvp in libc])
424 ;;
425 symlink)
426 AC_DEFINE(HAVE_SYMLINK, [1], [has symlink in libc])
427 ;;
428 readlink)
429 AC_DEFINE(HAVE_READLINK, [1], [has readlink in libc])
430 ;;
431 waitpid)
432 AC_DEFINE(HAVE_WAITPID, [1], [has waitpid in libc])
433 ;;
434 wait4)
435 AC_DEFINE(HAVE_WAIT4, [1], [has wait4 in libc])
436 ;;
437 esac
438done
439
440UCOMMON_LINKED="$socket_lib $posix4_lib $rt_lib $UCOMMON_LIBS"
441UCOMMON_LIBS="$socket_lib $posix4_lib $rt_lib $UCOMMON_LIBS $UCOMMON_LIBC"
442
443if test "$UCOMMON_MODEL" = "CC" ; then
444 AC_CHECK_LIB(Systemstubs, printf, [
445 UCOMMON_CLINK="$UCOMMON_CLINK -lSystemstubs"
446 UCOMMON_LIBC="$UCOMMON_LIBC -lgcc"
447 ])
448fi
449
450AC_LANG_SAVE
451AC_LANG_CPLUSPLUS
452COMPILER_FLAGS=""
453
454if test "x$GCC" = "xyes" ; then
455 UCOMMON_FLAGS="$UCOMMON_FLAGS -Wno-long-long" ; fi
456
457for flag in $CXXFLAGS ; do
458 case "$flag" in
459 -f*exceptions|-f*rtti|-f*check-new|-f*enforce-eh-specs|-finline|-f*except)
460 if test "$UCOMMON_MODEL" = "CXX" ; then
461 UCOMMON_FLAGS="$UCOMMON_FLAGS $flag" ; fi
462 ;;
463 -fvisibility=*)
464 VISIBLE_FLAGS=""
465 COMPILER_FLAGS="$COMPILER_FLAGS $flag"
466 ;;
467 *)
468 COMPILER_FLAGS="$COMPILER_FLAGS $flag"
469 ;;
470 esac
471done
472export CXXFLAGS="$COMPILER_FLAGS"
473
474if test "$UCOMMON_MODEL" = "CC" ; then
475 UCOMMON_FLAGS="$UCOMMON_FLAGS"
476
477 if test x"$GCC" = "xyes" ; then
478 ucflags="-fno-exceptions -fno-rtti -fno-enforce-eh-specs"
479 lcflags="-nodefaultlibs -nostdinc++"
480 else
481 ucflags="-library=no%Cstd -features=no%except -features=namespace -features=no%rtti"
482 lcflags=""
483 fi
484
485 for flag in $ucflags ; do
486 AC_MSG_CHECKING([whether ${CXX} supports $flag])
487 echo 'void f(){}' >conftest.cpp
488 if test -z "`${CXX} $flag -c conftest.cpp 2>&1`"; then
489 UCOMMON_FLAGS="$UCOMMON_FLAGS $flag"
490 AC_MSG_RESULT(yes)
491 if test "$flag" = "-library=no%Cstd" ; then
492 UCOMMON_MODEL="CXX" ; fi
493 else
494 AC_MSG_RESULT(no)
495 fi
496 rm -f conftest*
497 done
498
499 for flag in $lcflags ; do
500 AC_MSG_CHECKING([whether ${CXX} supports $flag])
501 echo 'void f(){}' >conftest.cpp
502 if test -z "`${CXX} $flag -c conftest.cpp 2>&1`"; then
503 UCOMMON_CLINK="$UCOMMON_CLINK $flag"
504 AC_MSG_RESULT(yes)
505 else
506 AC_MSG_RESULT(no)
507 fi
508 rm -f conftest*
509 done
510else
511 ac_save_CXXFLAGS="$CXXFLAGS"
512 CXXFLAGS=""
513 AC_LANG_SAVE
514 AC_LANG_CPLUSPLUS
515 AC_CHECK_HEADERS(stdexcept)
516 AC_MSG_CHECKING(for old style iostream)
517 AC_TRY_COMPILE([
518 #include <iostream>
519 using namespace std;
520
521 class mystr : public streambuf, public iostream
522 {
523 mystr();
524 };
525
526 mystr::mystr() : streambuf(), iostream((streambuf *)this)
527 {
528 }
529 ],[return 0;],[
530 AC_MSG_RESULT(no)
531 UCOMMON_FLAGS="$UCOMMON_FLAGS -DNEW_STDCPP"
532 ],[
533 AC_MSG_RESULT(yes)
534 UCOMMON_FLAGS="$UCOMMON_FLAGS -DOLD_STDCPP"
535 ])
536 AC_LANG_RESTORE
537 CXXFLAGS="$ac_save_CXXFLAGS"
538fi
539
540if test ! -z "$PTHREAD_FLAGS" ; then
541 for flag in $PTHREAD_FLAGS ; do
542 AC_MSG_CHECKING([whether ${CXX} supports $flag])
543 echo 'void f(){}' >conftest.cpp
544 if test -z "`${CXX} $flag -c conftest.cpp 2>&1`"; then
545 AC_MSG_RESULT(yes)
546 UCOMMON_FLAGS="$UCOMMON_FLAGS $flag"
547 break
548 else
549 AC_MSG_RESULT(no)
550 fi
551 done
552fi
553
554export CXXFLAGS
555
556# libstdc++ on some targets broken badly if inlines hidden. Might be
557# deeper issue with ansi c++ library model...
558flags="-fno-check-new -finline"
559if test "$UCOMMON_MODEL" = "CC" ; then
560 if test "$enable_shared" != "no" ; then
561 flags="$flags -fvisibility-inlines-hidden"
562 fi
563fi
564
565for flag in $flags ; do
566 AC_MSG_CHECKING([whether ${CXX} supports $flag])
567 echo 'void f(){}' >conftest.cpp
568 if test -z "`${CXX} $flag -c conftest.cpp 2>&1`"; then
569 UCOMMON_FLAGS="$UCOMMON_FLAGS $flag"
570 AC_MSG_RESULT(yes)
571 else
572 AC_MSG_RESULT(no)
573 fi
574 rm -f conftest*
575done
576
577AC_MSG_CHECKING([whether ${CXX} supports visibility])
578echo 'void f(){}' >conftest.cpp
579if test -z "`${CXX} -fvisibility=hidden -c conftest.cpp 2>&1`"; then
580 UCOMMON_FLAGS="$UCOMMON_FLAGS -fvisibility=hidden -DUCOMMON_VISIBILITY=1"
581 AC_MSG_RESULT(yes)
582 UCOMMON_VISIBILITY="1"
583else
584 UCOMMON_FLAGS="$UCOMMON_FLAGS -DUCOMMON_VISIBILITY=0"
585 AC_MSG_RESULT(no)
586fi
587rm -f conftest*
588
589AC_LANG_RESTORE
590
591AC_SUBST_DIR(includes, includedir)
592AC_SUBST_DIR(libs, libdir)
593
594case "$libs" in
595/usr/*)
596 ;;
597*)
598 UCOMMON_LINKED="-L$libs $UCOMMON_LINKED"
599 ;;
600esac
601
602case "$includes" in
603/usr/*)
604 ;;
605*)
606 UCOMMON_FLAGS="$UCOMMON_FLAGS -I$includes"
607 ;;
608esac
609
610case "$target_os" in
611*bsd*)
612 if test "$UCOMMON_MODEL" = "CC" ; then
613 if test "$GCC" = "yes" -a "$UCOMMON_LIBC" = "-lc" ; then
614 UCOMMON_LIBC="-Wl,-lc"
615 elif test "$GCC" = "yes" -a "$UCOMMON_LIBC" = "-lc_r" ; then
616 UCOMMON_LIBC="-Wl,-lc_r"
617 fi
618 fi
619 ;;
620osf*)
621 UCOMMON_FLAGS="$UCOMMON_FLAGS -D_POSIX_C_SOURCE=1 -D_OSF_SOURCE=1 -D__USE_STD_IOSTREAM"
622 ;;
623cygwin*|mingw*)
624 UCOMMON_LINKED="$UCOMMON_LINKED -no-undefined"
625 UCOMMON_LIBS="$UCOMMON_LIBS -no-undefined"
626 ;;
627esac
628
629UCOMMON_CLINK="$UCOMMON_CLINK $UCOMMON_LIBC"
630
631if test -z "$UCOMMON_SSLSTACK" ; then
632 UCOMMON_SSLSTACK="$sslstack" ; fi
633
634OPENSSL_LIBS=""
635GNUTLS_LIBS=""
636
637AC_ARG_WITH(pkg-config,
638 AC_HELP_STRING([--with-pkg-config],[enable support for pkg-config]),[
639 PKG_CHECK_MODULES(OPENSSL, [openssl >= $OPENSSL_REQUIRES], [], [
640 OPENSSL_LIBS=""
641 AC_CHECK_HEADERS(openssl/ssl.h, [
642 OPENSSL_LIBS="-lssl -lcrypto -lz $OPENSSL_LINK"
643 ])
644 AC_CHECK_HEADERS(openssl/fips.h)
645 ])
646 PKG_CHECK_MODULES(GNUTLS, [gnutls >= 2.8.0], [], [GNUTLS_LIBS=""])
647],[
648 AC_CHECK_HEADERS(openssl/ssl.h, [
649 OPENSSL_LIBS="-lssl -lcrypto -lz $OPENSSL_LINK"
650 ])
651 AC_CHECK_HEADERS(openssl/fips.h)
652 AC_CHECK_LIB(gnutls, gnutls_init, [
653 GNUTLS_LIBS="-lgnutls"
654 ])
655])
656
657
658SECURE=""
659case "$ssl" in
660secure|any|detect)
661 if test ! -z "$GNUTLS_LIBS" ; then
662 SECURE_LIBS="$GNUTLS_LIBS"
663 SECURE="gnutls"
664 fi
665 if test -z "$SECURE" ; then
666 if test ! -z "$OPENSSL_LIBS" ; then
667 SECURE_LIBS="$OPENSSL_LIBS"
668 SECURE="openssl"
669 fi
670 fi
671 ;;
672gnutls|gnu)
673 if test ! -z "$GNUTLS_LIBS" ; then
674 SECURE_LIBS="$GNUTLS_LIBS"
675 SECURE="gnutls"
676 fi
677 ;;
678openssl|ssl)
679 if test ! -z "$OPENSSL_LIBS" ; then
680 SECURE_LIBS="$OPENSSL_LIBS"
681 SECURE="openssl"
682 fi
683 ;;
684esac
685
686if test -z "$SECURE" ; then
687 SECURE_LIBS=""
688 SECURE="nossl"
689fi
690
691AC_MSG_CHECKING([secure library mode])
692AC_MSG_RESULT([$SECURE])
693
694SECURE_LOCAL="../$SECURE/libusecure.la $SECURE_LIBS"
695
696LT_GENERIC="${LIBTOOL}"
697if test "$UCOMMON_MODEL" = "CC" ; then
698 LIBTOOL='$(SHELL) $(top_srcdir)/cmodel.sh'" ${LIBTOOL}" ; fi
699
700includes='${includedir}/ucommon'
701
702if test "$sysconfdir" = '${prefix}/etc' ; then
703 sysconfdir="/etc" ; fi
704
705if test "$localstatedir" = '${prefix}/var' ; then
706 localstatedir="/var" ; fi
707
708AC_CHECK_HEADER(libintl.h, [
709 AC_DEFINE(HAVE_LIBINTL_H, [1], [international headers])
710 if test "$have_gettext" = "no" ; then
711 AC_CHECK_LIB(intl, gettext, [
712 AC_DEFINE(HAVE_GETTEXT, [1], [has gettext in glibc])
713 UCOMMON_LIBS="$UCOMMON_LIBS -lintl"
714 ])
715 fi
716])
717
718if test "$prefix" = "NONE" ; then
719 prefixdir="$ac_default_prefix"
720else
721 prefixdir="$prefix" ; fi
722
723AC_SUBST_DIR(UCOMMON_INCLUDES, includes)
724AC_SUBST_DIR(UCOMMON_LOCALE, localedir)
725AC_SUBST_DIR(UCOMMON_CFGPATH, sysconfdir)
726AC_SUBST_DIR(UCOMMON_VARPATH, localstatedir)
727AC_SUBST_DIR(UCOMMON_PREFIX, prefixdir)
728AC_DEFINE_UNQUOTED(UCOMMON_PREFIX, "$UCOMMON_PREFIX", [config path])
729AC_DEFINE_UNQUOTED(UCOMMON_CFGPATH, "$UCOMMON_CFGPATH", [config path])
730AC_DEFINE_UNQUOTED(UCOMMON_VARPATH, "$UCOMMON_VARPATH", [config path])
731AC_DEFINE_UNQUOTED(UCOMMON_LOCALE, "$UCOMMON_LOCALE", [locale path])
732
733AC_PATH_PROG(DOXYGEN, doxygen, doxygen)
734AC_SUBST(DOXYGEN)
735AC_SUBST(CHECKFLAGS)
736AC_SUBST(CXXFLAGS)
737AC_SUBST(UCOMMON_VISIBILITY)
738AC_SUBST(UCOMMON_INCLUDES)
739AC_SUBST(UCOMMON_LOCALE)
740AC_SUBST(UCOMMON_LINKED)
741AC_SUBST(UCOMMON_MODEL)
742AC_SUBST(UCOMMON_FLAGS)
743AC_SUBST(UCOMMON_CLINK)
744AC_SUBST(UCOMMON_LIBC)
745AC_SUBST(UCOMMON_LIBS)
746AC_SUBST(SECURE_LOCAL)
747AC_SUBST(SECURE_LIBS)
748AC_SUBST(SECURE)
749AC_SUBST(COMPAT)
750AC_SUBST(OPENSSL_LIBS)
751AC_SUBST(GNUTLS_LIBS)
752AC_SUBST(LT_VERSION)
753AC_SUBST(LT_GENERIC)
754AC_SUBST(localedir)
755
756AC_OUTPUT(Makefile corelib/Makefile commoncpp/Makefile
757openssl/Makefile gnutls/Makefile nossl/Makefile utils/Makefile
758inc/Makefile inc/ucommon/Makefile inc/commoncpp/Makefile test/Makefile
759directive commoncpp.pc ucommon.pc ucommon.spec ucommon-config commoncpp-config)
760