Alexandre Lision | ddd731e | 2014-01-31 11:50:08 -0500 | [diff] [blame] | 1 | # 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 | |
| 11 | AC_INIT([ucommon],[6.0.7]) |
| 12 | AC_CONFIG_SRCDIR([inc/ucommon/ucommon.h]) |
| 13 | |
| 14 | LT_VERSION="6:3:0" |
| 15 | OPENSSL_REQUIRES="0.9.7" |
| 16 | |
| 17 | AC_CONFIG_AUX_DIR(autoconf) |
| 18 | AC_CANONICAL_SYSTEM |
| 19 | AC_PROG_CPP |
| 20 | AC_PROG_CC |
| 21 | AC_PROG_CXXCPP |
| 22 | AC_PROG_CXX |
| 23 | AC_LIBTOOL_WIN32_DLL |
| 24 | AM_PROG_LIBTOOL |
| 25 | AM_INIT_AUTOMAKE([dist-shar dist-zip]) |
| 26 | AM_CONFIG_HEADER(ucommon-config.h) |
| 27 | |
| 28 | AC_C_RESTRICT |
| 29 | AC_C_VOLATILE |
| 30 | AC_C_INLINE |
| 31 | |
| 32 | UCOMMON_VISIBILITY="0" |
| 33 | UCOMMON_FLAGS="" |
| 34 | UCOMMON_MODEL="CXX" |
| 35 | UCOMMON_CLINK="" |
| 36 | UCOMMON_LIBC="-lc" |
| 37 | UCOMMON_LIBS="" |
| 38 | OPENSSL_LINK="" |
| 39 | |
| 40 | CHECKFLAGS="$CHECKFLAGS" |
| 41 | |
| 42 | case "$with_crypto" in |
| 43 | ssl|openssl) |
| 44 | ssl="openssl" |
| 45 | ;; |
| 46 | gnutls|gnu) |
| 47 | ssl="gnutls" |
| 48 | ;; |
| 49 | none|nossl) |
| 50 | ssl="nossl" |
| 51 | ;; |
| 52 | *) |
| 53 | ssl="detect" |
| 54 | ;; |
| 55 | esac |
| 56 | |
| 57 | have_gettext="no" |
| 58 | socket_lib="" |
| 59 | posix4_lib="" |
| 60 | rt_lib="" |
| 61 | |
| 62 | test -z "$localedir" && localedir='${datadir}/locale' |
| 63 | |
| 64 | AC_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 | |
| 85 | if 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 |
| 103 | fi |
| 104 | |
| 105 | AC_ARG_ENABLE(posix-timers, |
| 106 | AC_HELP_STRING([--enable-posix-timers], |
| 107 | [enable posix timers])) |
| 108 | |
| 109 | if test "x$enable_posix_timers" = "xyes" ; then |
| 110 | UCOMMON_FLAGS="$UCOMMON_FLAGS -DPOSIX_TIMERS" |
| 111 | fi |
| 112 | |
| 113 | AC_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 | |
| 119 | if test "x$enable_stdcpp" = "xno" ; then |
| 120 | UCOMMON_MODEL="CC" |
| 121 | AC_MSG_RESULT(no) |
| 122 | COMPAT="" |
| 123 | else |
| 124 | COMPAT="commoncpp" |
| 125 | AC_MSG_RESULT(yes) |
| 126 | fi |
| 127 | |
| 128 | AC_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 | |
| 134 | AC_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 | |
| 141 | AC_ARG_ENABLE(debug, |
| 142 | AC_HELP_STRING([--enable-debug],[compile for debugging])) |
| 143 | if test -z "$enable_debug" ; then |
| 144 | enable_debug="no" |
| 145 | elif test $enable_debug = "yes" ; then |
| 146 | CXXFLAGS="${CXXFLAGS} -g -DDEBUG" |
| 147 | fi |
| 148 | |
| 149 | AH_BOTTOM([ |
| 150 | #include <ucommon/platform.h> |
| 151 | ]) |
| 152 | |
| 153 | threading="none" |
| 154 | clib=`echo ${UCOMMON_LIBC} | sed s/[-]l//` |
| 155 | tlib="" |
| 156 | |
| 157 | AC_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) |
| 158 | AC_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) |
| 159 | AC_CHECK_HEADERS(sys/param.h sys/lockf.h sys/file.h dlfcn.h) |
| 160 | |
| 161 | AC_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 | |
| 168 | AC_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 | |
| 218 | AC_ARG_ENABLE(socks, |
| 219 | AC_HELP_STRING([--enable-socks], |
| 220 | [compile with socks proxy support])) |
| 221 | |
| 222 | if test "x$enable_socks" = "xyes" ; then |
| 223 | enable_socks="no" |
| 224 | AC_CHECK_HEADERS(socks.h, [ |
| 225 | enable_socks="yes" |
| 226 | ]) |
| 227 | else |
| 228 | enable_socks="no" |
| 229 | fi |
| 230 | |
| 231 | AC_MSG_CHECKING([for socks proxy support]) |
| 232 | |
| 233 | if 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) |
| 237 | else |
| 238 | AC_MSG_RESULT(no) |
| 239 | fi |
| 240 | |
| 241 | AC_CHECK_LIB($clib, lstat, [ |
| 242 | AC_DEFINE(HAVE_LSTAT, [1], [have lstat]) |
| 243 | ]) |
| 244 | |
| 245 | AC_CHECK_LIB($clib, strcoll, [ |
| 246 | AC_DEFINE(HAVE_STRCOLL, [1], [string collation]) |
| 247 | ]) |
| 248 | |
| 249 | AC_CHECK_LIB($clib, stricmp, [ |
| 250 | AC_DEFINE(HAVE_STRICMP, [1], [string icmp]) |
| 251 | ]) |
| 252 | |
| 253 | AC_CHECK_LIB($clib, stristr, [ |
| 254 | AC_DEFINE(HAVE_STRISTR, [1], [string istr]) |
| 255 | ]) |
| 256 | |
| 257 | AC_CHECK_LIB($clib, sysconf, [ |
| 258 | AC_DEFINE(HAVE_SYSCONF, [1], [system config]) |
| 259 | ]) |
| 260 | |
| 261 | AC_CHECK_LIB($clib, posix_memalign, [ |
| 262 | AC_DEFINE(HAVE_POSIX_MEMALIGN, [1], [posix memory alignment]) |
| 263 | ]) |
| 264 | |
| 265 | AC_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 | |
| 275 | PTHREAD_FLAGS="" |
| 276 | |
| 277 | if test "$enable_shared" = "no" ; then |
| 278 | UCOMMON_FLAGS="$UCOMMON_FLAGS -DUCOMMON_STATIC" ; fi |
| 279 | |
| 280 | AC_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 | |
| 285 | AC_ARG_ENABLE(pth, [ |
| 286 | AC_HELP_STRING([--enable-pth],[always use GNU pth for threading]) |
| 287 | ]) |
| 288 | |
| 289 | if 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 |
| 352 | fi |
| 353 | |
| 354 | for 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 |
| 438 | done |
| 439 | |
| 440 | UCOMMON_LINKED="$socket_lib $posix4_lib $rt_lib $UCOMMON_LIBS" |
| 441 | UCOMMON_LIBS="$socket_lib $posix4_lib $rt_lib $UCOMMON_LIBS $UCOMMON_LIBC" |
| 442 | |
| 443 | if test "$UCOMMON_MODEL" = "CC" ; then |
| 444 | AC_CHECK_LIB(Systemstubs, printf, [ |
| 445 | UCOMMON_CLINK="$UCOMMON_CLINK -lSystemstubs" |
| 446 | UCOMMON_LIBC="$UCOMMON_LIBC -lgcc" |
| 447 | ]) |
| 448 | fi |
| 449 | |
| 450 | AC_LANG_SAVE |
| 451 | AC_LANG_CPLUSPLUS |
| 452 | COMPILER_FLAGS="" |
| 453 | |
| 454 | if test "x$GCC" = "xyes" ; then |
| 455 | UCOMMON_FLAGS="$UCOMMON_FLAGS -Wno-long-long" ; fi |
| 456 | |
| 457 | for 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 |
| 471 | done |
| 472 | export CXXFLAGS="$COMPILER_FLAGS" |
| 473 | |
| 474 | if 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 |
| 510 | else |
| 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" |
| 538 | fi |
| 539 | |
| 540 | if 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 |
| 552 | fi |
| 553 | |
| 554 | export CXXFLAGS |
| 555 | |
| 556 | # libstdc++ on some targets broken badly if inlines hidden. Might be |
| 557 | # deeper issue with ansi c++ library model... |
| 558 | flags="-fno-check-new -finline" |
| 559 | if test "$UCOMMON_MODEL" = "CC" ; then |
| 560 | if test "$enable_shared" != "no" ; then |
| 561 | flags="$flags -fvisibility-inlines-hidden" |
| 562 | fi |
| 563 | fi |
| 564 | |
| 565 | for 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* |
| 575 | done |
| 576 | |
| 577 | AC_MSG_CHECKING([whether ${CXX} supports visibility]) |
| 578 | echo 'void f(){}' >conftest.cpp |
| 579 | if 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" |
| 583 | else |
| 584 | UCOMMON_FLAGS="$UCOMMON_FLAGS -DUCOMMON_VISIBILITY=0" |
| 585 | AC_MSG_RESULT(no) |
| 586 | fi |
| 587 | rm -f conftest* |
| 588 | |
| 589 | AC_LANG_RESTORE |
| 590 | |
| 591 | AC_SUBST_DIR(includes, includedir) |
| 592 | AC_SUBST_DIR(libs, libdir) |
| 593 | |
| 594 | case "$libs" in |
| 595 | /usr/*) |
| 596 | ;; |
| 597 | *) |
| 598 | UCOMMON_LINKED="-L$libs $UCOMMON_LINKED" |
| 599 | ;; |
| 600 | esac |
| 601 | |
| 602 | case "$includes" in |
| 603 | /usr/*) |
| 604 | ;; |
| 605 | *) |
| 606 | UCOMMON_FLAGS="$UCOMMON_FLAGS -I$includes" |
| 607 | ;; |
| 608 | esac |
| 609 | |
| 610 | case "$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 | ;; |
| 620 | osf*) |
| 621 | UCOMMON_FLAGS="$UCOMMON_FLAGS -D_POSIX_C_SOURCE=1 -D_OSF_SOURCE=1 -D__USE_STD_IOSTREAM" |
| 622 | ;; |
| 623 | cygwin*|mingw*) |
| 624 | UCOMMON_LINKED="$UCOMMON_LINKED -no-undefined" |
| 625 | UCOMMON_LIBS="$UCOMMON_LIBS -no-undefined" |
| 626 | ;; |
| 627 | esac |
| 628 | |
| 629 | UCOMMON_CLINK="$UCOMMON_CLINK $UCOMMON_LIBC" |
| 630 | |
| 631 | if test -z "$UCOMMON_SSLSTACK" ; then |
| 632 | UCOMMON_SSLSTACK="$sslstack" ; fi |
| 633 | |
| 634 | OPENSSL_LIBS="" |
| 635 | GNUTLS_LIBS="" |
| 636 | |
| 637 | AC_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 | |
| 658 | SECURE="" |
| 659 | case "$ssl" in |
| 660 | secure|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 | ;; |
| 672 | gnutls|gnu) |
| 673 | if test ! -z "$GNUTLS_LIBS" ; then |
| 674 | SECURE_LIBS="$GNUTLS_LIBS" |
| 675 | SECURE="gnutls" |
| 676 | fi |
| 677 | ;; |
| 678 | openssl|ssl) |
| 679 | if test ! -z "$OPENSSL_LIBS" ; then |
| 680 | SECURE_LIBS="$OPENSSL_LIBS" |
| 681 | SECURE="openssl" |
| 682 | fi |
| 683 | ;; |
| 684 | esac |
| 685 | |
| 686 | if test -z "$SECURE" ; then |
| 687 | SECURE_LIBS="" |
| 688 | SECURE="nossl" |
| 689 | fi |
| 690 | |
| 691 | AC_MSG_CHECKING([secure library mode]) |
| 692 | AC_MSG_RESULT([$SECURE]) |
| 693 | |
| 694 | SECURE_LOCAL="../$SECURE/libusecure.la $SECURE_LIBS" |
| 695 | |
| 696 | LT_GENERIC="${LIBTOOL}" |
| 697 | if test "$UCOMMON_MODEL" = "CC" ; then |
| 698 | LIBTOOL='$(SHELL) $(top_srcdir)/cmodel.sh'" ${LIBTOOL}" ; fi |
| 699 | |
| 700 | includes='${includedir}/ucommon' |
| 701 | |
| 702 | if test "$sysconfdir" = '${prefix}/etc' ; then |
| 703 | sysconfdir="/etc" ; fi |
| 704 | |
| 705 | if test "$localstatedir" = '${prefix}/var' ; then |
| 706 | localstatedir="/var" ; fi |
| 707 | |
| 708 | AC_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 | |
| 718 | if test "$prefix" = "NONE" ; then |
| 719 | prefixdir="$ac_default_prefix" |
| 720 | else |
| 721 | prefixdir="$prefix" ; fi |
| 722 | |
| 723 | AC_SUBST_DIR(UCOMMON_INCLUDES, includes) |
| 724 | AC_SUBST_DIR(UCOMMON_LOCALE, localedir) |
| 725 | AC_SUBST_DIR(UCOMMON_CFGPATH, sysconfdir) |
| 726 | AC_SUBST_DIR(UCOMMON_VARPATH, localstatedir) |
| 727 | AC_SUBST_DIR(UCOMMON_PREFIX, prefixdir) |
| 728 | AC_DEFINE_UNQUOTED(UCOMMON_PREFIX, "$UCOMMON_PREFIX", [config path]) |
| 729 | AC_DEFINE_UNQUOTED(UCOMMON_CFGPATH, "$UCOMMON_CFGPATH", [config path]) |
| 730 | AC_DEFINE_UNQUOTED(UCOMMON_VARPATH, "$UCOMMON_VARPATH", [config path]) |
| 731 | AC_DEFINE_UNQUOTED(UCOMMON_LOCALE, "$UCOMMON_LOCALE", [locale path]) |
| 732 | |
| 733 | AC_PATH_PROG(DOXYGEN, doxygen, doxygen) |
| 734 | AC_SUBST(DOXYGEN) |
| 735 | AC_SUBST(CHECKFLAGS) |
| 736 | AC_SUBST(CXXFLAGS) |
| 737 | AC_SUBST(UCOMMON_VISIBILITY) |
| 738 | AC_SUBST(UCOMMON_INCLUDES) |
| 739 | AC_SUBST(UCOMMON_LOCALE) |
| 740 | AC_SUBST(UCOMMON_LINKED) |
| 741 | AC_SUBST(UCOMMON_MODEL) |
| 742 | AC_SUBST(UCOMMON_FLAGS) |
| 743 | AC_SUBST(UCOMMON_CLINK) |
| 744 | AC_SUBST(UCOMMON_LIBC) |
| 745 | AC_SUBST(UCOMMON_LIBS) |
| 746 | AC_SUBST(SECURE_LOCAL) |
| 747 | AC_SUBST(SECURE_LIBS) |
| 748 | AC_SUBST(SECURE) |
| 749 | AC_SUBST(COMPAT) |
| 750 | AC_SUBST(OPENSSL_LIBS) |
| 751 | AC_SUBST(GNUTLS_LIBS) |
| 752 | AC_SUBST(LT_VERSION) |
| 753 | AC_SUBST(LT_GENERIC) |
| 754 | AC_SUBST(localedir) |
| 755 | |
| 756 | AC_OUTPUT(Makefile corelib/Makefile commoncpp/Makefile |
| 757 | openssl/Makefile gnutls/Makefile nossl/Makefile utils/Makefile |
| 758 | inc/Makefile inc/ucommon/Makefile inc/commoncpp/Makefile test/Makefile |
| 759 | directive commoncpp.pc ucommon.pc ucommon.spec ucommon-config commoncpp-config) |
| 760 | |