# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) AC_INIT(libpqtypes, 1.5.2a, libpqtypes@esilo.com) AC_CANONICAL_TARGET AC_PROG_MAKE_SET SET_MAKE="MAKE=make --no-print-directory" AC_CONFIG_AUX_DIR([.]) AM_INIT_AUTOMAKE(libpqtypes,1.5.1) AC_SUBST([LIBPQTYPES_SO_VERSION], [1:5:1]) AC_DISABLE_STATIC AC_PROG_LIBTOOL AC_PROG_INSTALL AC_CONFIG_SRCDIR([src/param.c]) AM_CONFIG_HEADER([src/pqt_config.h:src/pqt_config.h.in]) AC_PROG_CXX AC_PROG_CC CPPFLAGS="$CPPFLAGS -Isrc" if test "$CC" = "gcc" ; then # always want reentrant funcs, not just thread-safe mode. -s CFLAGS="$CFLAGS -O2 -Wall -Wpointer-arith -D_GNU_SOURCE -D_REENTRANT -fsigned-char" # gcc doesn't indicate an error for unknown options when they are # not warning/feature options, -Wxxx or -fxxx. We have to test manually. cprog="int main(void){return 0;}" gcctest="gcc -x c -c - -o /dev/null" AC_MSG_CHECKING(CFLAGS for gcc -std=gnu99...) result=`echo "$cprog" | $gcctest -std=gnu99 2>&1` if test -z "$result" ; then CFLAGS="$CFLAGS -std=gnu99" AC_MSG_RESULT(-std=gnu99) else AC_MSG_RESULT([no, unknown]) fi # turn on as many warnings as possible AX_CFLAGS_GCC_OPTION([-Wclobbered]) AX_CFLAGS_GCC_OPTION([-Wempty-body]) AX_CFLAGS_GCC_OPTION([-Wignored-qualifiers]) #AX_CFLAGS_GCC_OPTION([-Wmissing-field-initializers]) # annoying AX_CFLAGS_GCC_OPTION([-Wmissing-parameter-type]) AX_CFLAGS_GCC_OPTION([-Wold-style-declaration]) AX_CFLAGS_GCC_OPTION([-Woverride-init]) AX_CFLAGS_GCC_OPTION([-Wsign-compare]) AX_CFLAGS_GCC_OPTION([-Wtype-limits]) AX_CFLAGS_GCC_OPTION([-Wuninitialized]) AX_CFLAGS_GCC_OPTION([-fomit-frame-pointer]) AX_CFLAGS_GCC_OPTION([-fno-strict-aliasing]) AX_CFLAGS_GCC_OPTION([-funroll-all-loops]) AX_CFLAGS_GCC_OPTION([-funit-at-a-time]) else AC_MSG_ERROR([Using $CC instead of gcc, currently not supported]) fi # Each case has an example of what target_os contains case ${target_os} in # solaris solaris*) CFLAGS="$CFLAGS -D_STDC_C99" ;; # SCO UnixWare *UnixWare*|*unixware*) CFLAGS="$CFLAGS -D__UnixWare__" ;; # SCO OpenServer sco*) CFLAGS="$CFLAGS -D__OpenServer__" ;; esac AC_ARG_ENABLE(thread-safety, [ --enable-thread-safety Enable threads], [have_threads=yes], [have_threads=no]) if test "$have_threads" = "yes" ; then AC_SEARCH_LIBS(pthread_create, [pthread thread],, [AC_MSG_ERROR([Missing libpthread.so or libthread.so, cannot use --enable-thread-safety])]) CFLAGS="$CFLAGS -DPQT_THREAD_SAFE -D_THREAD_SAFE" # SCO OpenServer 5, possibly other platforms, requires using FSU pthreads. # We detect this by looking at the prototype for pthread_getspecific. # There are a few other prototypes that are different as well but detecting # one is plenty. AC_MSG_CHECKING(whether FSU pthreads is being used) AC_TRY_COMPILE( [#include ], [pthread_getspecific((pthread_key_t)(0), (void *)(0))], [AC_DEFINE(PTHREAD_FSU, 1, [Define to 1 if using FSU pthreads]) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) fi # If strict memory alignment is required, this test will produce a # Bus error. Most riscs CPUs (old and modern) are strict. save_CFLAGS=$CFLAGS CFLAGS="" AC_MSG_CHECKING(if strict memory alignment is required) AC_RUN_IFELSE([int main(void){char b[[8]];int*i=(int*)(b+1);*i=0;return 0;}], [AC_MSG_RESULT(no)], [AC_DEFINE(STRICT_MEMORY_ALIGNMENT, 1, [Define to 1 if architecture requires strict memory alignment]) AC_MSG_RESULT(yes)] ) CFLAGS=$save_CFLAGS AC_HEADER_STDC AC_CHECK_HEADERS([ \ arpa/inet.h limits.h linux/limits.h netdb.h netinet/in.h stddef.h \ sys/socket.h time.h math.h sys/time.h strings.h]) AC_STRUCT_TIMEZONE AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,, \ [#ifdef HAVE_TIME_H #include #endif #ifdef HAVE_SYS_TIME_H #include #endif]) AC_CHECK_TYPES(socklen_t,,, [#include #ifdef HAVE_APRA_INET_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif]) AC_CHECK_MEMBERS([struct sockaddr_storage.ss_len],,, \ [#ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif]) AC_C_CONST AC_FUNC_MEMCMP AC_FUNC_STRTOD AC_HEADER_TIME AC_TYPE_SIZE_T AC_SEARCH_LIBS(pow, m) AC_SEARCH_LIBS(getaddrinfo, [nsl socket], \ [AC_DEFINE([HAVE_GETADDRINFO], [], \ [Define if getaddrinfo exists])], [], []) AC_CHECK_FUNCS([vsnprintf floor ceil rint hstrerror \ localtime_r strtol strtoll strtoul]) AC_OUTPUT(Makefile)