| configure.ac | configure.ac | |||
|---|---|---|---|---|
| # Process this file with autoconf to produce a configure script. | # Process this file with autoconf to produce a configure script. | |||
| AC_PREREQ([2.61]) | AC_PREREQ([2.61]) | |||
| AC_INIT([libqb], | AC_INIT([libqb], | |||
| m4_esyscmd([build-aux/git-version-gen .tarball-version]), | m4_esyscmd([build-aux/git-version-gen .tarball-version]), | |||
| [quarterback-devel@fedorahosted.org]) | [quarterback-devel@fedorahosted.org]) | |||
| AM_INIT_AUTOMAKE([-Wno-portability]) | ||||
| AC_CONFIG_SRCDIR([lib/ringbuffer.c]) | AC_CONFIG_SRCDIR([lib/ringbuffer.c]) | |||
| AC_CONFIG_HEADERS([include/config.h]) | AC_CONFIG_HEADERS([include/config.h include/qb/qbconfig.h]) | |||
| AM_INIT_AUTOMAKE([-Wno-portability dist-xz color-tests parallel-tests]) | ||||
| dnl automake >= 1.11 offers --enable-silent-rules for suppressing the outpu | ||||
| t from | ||||
| dnl normal compilation. When a failure occurs, it will then display the fu | ||||
| ll | ||||
| dnl command line | ||||
| dnl Wrap in m4_ifdef to avoid breaking on older platforms | ||||
| m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) | ||||
| LT_PREREQ([2.2.6]) | LT_PREREQ([2.2.6]) | |||
| LT_INIT | LT_INIT | |||
| AC_CONFIG_MACRO_DIR([m4]) | AC_CONFIG_MACRO_DIR([m4]) | |||
| AC_CANONICAL_HOST | AC_CANONICAL_HOST | |||
| AC_PROG_LIBTOOL | AC_PROG_LIBTOOL | |||
| AC_LANG([C]) | AC_LANG([C]) | |||
| dnl Fix default variables - "prefix" variable if not specified | dnl Fix default variables - "prefix" variable if not specified | |||
| if test "$prefix" = "NONE"; then | if test "$prefix" = "NONE"; then | |||
| prefix="/usr" | prefix="/usr" | |||
| if test "$localstatedir" = "\${prefix}/var"; then | if test "$localstatedir" = "\${prefix}/var"; then | |||
| localstatedir="/var" | localstatedir="/var" | |||
| fi | fi | |||
| if test "$sysconfdir" = "\${prefix}/etc"; then | if test "$sysconfdir" = "\${prefix}/etc"; then | |||
| sysconfdir="/etc" | sysconfdir="/etc" | |||
| skipping to change at line 57 | skipping to change at line 57 | |||
| AC_MSG_NOTICE([building out of tree srcdir:$srcdir]) | AC_MSG_NOTICE([building out of tree srcdir:$srcdir]) | |||
| fi | fi | |||
| # Checks for programs. | # Checks for programs. | |||
| # check stolen from gnulib/m4/gnu-make.m4 | # check stolen from gnulib/m4/gnu-make.m4 | |||
| if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then | if ! ${MAKE-make} --version /cannot/make/this >/dev/null 2>&1; then | |||
| AC_MSG_ERROR([you don't seem to have GNU make; it is required]) | AC_MSG_ERROR([you don't seem to have GNU make; it is required]) | |||
| fi | fi | |||
| AC_PROG_CC | ||||
| AM_PROG_CC_C_O | ||||
| AC_PROG_CXX | AC_PROG_CXX | |||
| AC_PROG_AWK | AC_PROG_AWK | |||
| AC_PROG_LN_S | AC_PROG_CC | |||
| AC_PROG_CPP | ||||
| AM_PROG_CC_C_O | ||||
| AC_PROG_INSTALL | AC_PROG_INSTALL | |||
| AC_PROG_LN_S | ||||
| AC_PROG_MAKE_SET | AC_PROG_MAKE_SET | |||
| AC_CHECK_PROGS([PKGCONFIG], [pkg-config]) | AC_CHECK_PROGS([PKGCONFIG], [pkg-config]) | |||
| AC_CHECK_PROGS([DOXYGEN], [doxygen]) | AC_CHECK_PROGS([DOXYGEN], [doxygen]) | |||
| AM_CONDITIONAL(HAVE_DOXYGEN, test -n "${DOXYGEN}") | AM_CONDITIONAL(HAVE_DOXYGEN, test -n "${DOXYGEN}") | |||
| AC_CHECK_PROGS([SPLINT], [splint]) | AC_CHECK_PROGS([SPLINT], [splint]) | |||
| AM_CONDITIONAL(HAVE_SPLINT, test -n "${SPLINT}") | AM_CONDITIONAL(HAVE_SPLINT, test -n "${SPLINT}") | |||
| ## local helper functions | ## local helper functions | |||
| # this function checks if CC support options passed as | # this function checks if CC support options passed as | |||
| # args. Global CFLAGS are ignored during this test. | # args. Global CFLAGS are ignored during this test. | |||
| cc_supports_flag() { | cc_supports_flag() { | |||
| local CFLAGS="$@" | local CPPFLAGS="$CPPFLAGS $@" | |||
| AC_MSG_CHECKING([whether $CC supports "$@"]) | AC_MSG_CHECKING([whether $CC supports "$@"]) | |||
| AC_COMPILE_IFELSE([int main(){return 0;}] , | AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])], | |||
| [RC=0; AC_MSG_RESULT([yes])], | [RC=0; AC_MSG_RESULT([yes])], | |||
| [RC=1; AC_MSG_RESULT([no])]) | [RC=1; AC_MSG_RESULT([no])]) | |||
| return $RC | return $RC | |||
| } | } | |||
| ## cleanup | ## cleanup | |||
| AC_MSG_NOTICE(Sanitizing prefix: ${prefix}) | AC_MSG_NOTICE(Sanitizing prefix: ${prefix}) | |||
| case $prefix in | case $prefix in | |||
| NONE) prefix=/usr/local;; | NONE) prefix=/usr/local;; | |||
| esac | esac | |||
| AC_MSG_NOTICE(Sanitizing exec_prefix: ${exec_prefix}) | AC_MSG_NOTICE(Sanitizing exec_prefix: ${exec_prefix}) | |||
| case $exec_prefix in | case $exec_prefix in | |||
| NONE) exec_prefix=$prefix;; | NONE) exec_prefix=$prefix;; | |||
| prefix) exec_prefix=$prefix;; | prefix) exec_prefix=$prefix;; | |||
| esac | esac | |||
| # Checks for libraries. | # Checks for libraries. | |||
| AC_CHECK_LIB([rt], [mq_open]) | AC_CHECK_LIB([rt], [mq_open]) | |||
| AC_CHECK_LIB([dl], [dlopen]) | ||||
| AC_CHECK_LIB([pthread], [pthread_create]) | AC_CHECK_LIB([pthread], [pthread_create]) | |||
| AC_CHECK_LIB([socket], [socket]) | AC_CHECK_LIB([socket], [socket]) | |||
| # look for testing harness "check" | # look for testing harness "check" | |||
| PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],[with_check=yes],[with_check=no ]) | PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],[with_check=yes],[with_check=no ]) | |||
| AM_CONDITIONAL(HAVE_CHECK, test "${with_check}" = "yes") | AM_CONDITIONAL(HAVE_CHECK, test "${with_check}" = "yes") | |||
| # look for GLIB (used for testing integration) | # look for GLIB (used for testing integration) | |||
| PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.0, have_glib=yes, have_glib=no) | PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.0, have_glib=yes, have_glib=no) | |||
| AM_CONDITIONAL(HAVE_GLIB, test x$have_glib = xyes) | AM_CONDITIONAL(HAVE_GLIB, test x$have_glib = xyes) | |||
| AC_SUBST(GLIB_CFLAGS) | AC_SUBST(GLIB_CFLAGS) | |||
| AC_SUBST(GLIB_LIBS) | AC_SUBST(GLIB_LIBS) | |||
| if test x"$have_glib" = xyes; then | if test x"$have_glib" = xyes; then | |||
| AC_DEFINE_UNQUOTED([HAVE_GLIB], [1], [We have glib]) | AC_DEFINE_UNQUOTED([HAVE_GLIB], [1], [We have glib]) | |||
| fi | fi | |||
| # Checks for header files. | # Checks for header files. | |||
| AC_HEADER_STDC | AC_HEADER_STDC | |||
| AC_HEADER_SYS_WAIT | AC_HEADER_SYS_WAIT | |||
| AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h limits.h netinet/in.h stdi | AC_CHECK_HEADERS([arpa/inet.h link.h fcntl.h inttypes.h limits.h netinet/in | |||
| nt.h \ | .h stdint.h \ | |||
| time.h sys/time.h stdlib.h string.h strings.h sys/types.h | dlfcn.h time.h sys/time.h stdlib.h string.h strings.h sys/ | |||
| sys/stat.h \ | types.h sys/stat.h \ | |||
| sys/param.h sys/socket.h sys/time.h sys/timerfd.h sys/epol | sys/param.h sys/socket.h sys/time.h sys/timerfd.h sys/poll | |||
| l.h \ | .h sys/epoll.h sys/uio.h \ | |||
| sys/sockio.h sys/un.h syslog.h errno.h unistd.h]) | sys/sockio.h sys/un.h sys/resource.h syslog.h errno.h unis | |||
| td.h sys/mman.h \ | ||||
| sys/sem.h sys/ipc.h sys/msg.h mqueue.h]) | ||||
| # Checks for typedefs, structures, and compiler characteristics. | # Checks for typedefs, structures, and compiler characteristics. | |||
| AC_TYPE_UID_T | AC_TYPE_UID_T | |||
| AC_C_INLINE | AC_C_INLINE | |||
| AC_TYPE_INT32_T | AC_TYPE_INT32_T | |||
| AC_TYPE_INT64_T | AC_TYPE_INT64_T | |||
| AC_TYPE_INT8_T | AC_TYPE_INT8_T | |||
| AC_TYPE_MODE_T | AC_TYPE_MODE_T | |||
| AC_TYPE_PID_T | AC_TYPE_PID_T | |||
| AC_TYPE_SIZE_T | AC_TYPE_SIZE_T | |||
| AC_TYPE_SSIZE_T | AC_TYPE_SSIZE_T | |||
| AC_TYPE_UINT32_T | AC_TYPE_UINT32_T | |||
| AC_TYPE_UINT64_T | AC_TYPE_UINT64_T | |||
| AC_TYPE_UINT8_T | ||||
| # Checks for library functions. | # Checks for library functions. | |||
| AC_FUNC_CHOWN | AC_FUNC_CHOWN | |||
| AC_FUNC_ERROR_AT_LINE | ||||
| AC_FUNC_FORK | AC_FUNC_FORK | |||
| AC_FUNC_MALLOC | AC_FUNC_MALLOC | |||
| AC_FUNC_MMAP | AC_FUNC_MMAP | |||
| AC_FUNC_REALLOC | AC_FUNC_REALLOC | |||
| AC_FUNC_STRERROR_R | AC_CHECK_FUNCS([alarm clock_gettime ftruncate gettimeofday localtime localt | |||
| AC_CHECK_FUNCS([alarm clock_gettime ftruncate gettimeofday memset munmap \ | ime_r \ | |||
| socket strchr strerror strstr epoll_create epoll_create1 \ | memset munmap socket strchr strrchr strchrnul strdup strerro | |||
| pthread_spin_lock timerfd_create]) | r strstr \ | |||
| poll epoll_create epoll_create1 random rand getrlimit syscon | ||||
| f \ | ||||
| pthread_spin_lock timerfd_create pthread_setschedparam \ | ||||
| sched_get_priority_max sched_setscheduler]) | ||||
| ## local defines | ## local defines | |||
| PACKAGE_FEATURES="" | PACKAGE_FEATURES="" | |||
| if test $ac_cv_func_timerfd_create = yes; then | if test x$ac_cv_func_timerfd_create = xyes; then | |||
| PACKAGE_FEATURES="$PACKAGE_FEATURES timerfd" | PACKAGE_FEATURES="$PACKAGE_FEATURES timerfd" | |||
| fi | fi | |||
| if test $ac_cv_func_epoll_create = yes; then | if test x$ac_cv_func_epoll_create = xyes; then | |||
| PACKAGE_FEATURES="$PACKAGE_FEATURES epoll" | PACKAGE_FEATURES="$PACKAGE_FEATURES epoll" | |||
| fi | fi | |||
| # Check for atomic support | nongcc_memory_barrier_needed=no | |||
| gcc_has_builtin_atomic_operations=no | arch_force_shmlba=no | |||
| if test x"$GCC" = xyes; then | AC_MSG_CHECKING([for architecture in ${host_cpu}]) | |||
| AC_MSG_CHECKING([whether GCC supports build-in atomic intrinsics]) | case $host_cpu in | |||
| AC_TRY_LINK([], | sparc*) | |||
| [int i; | AC_MSG_RESULT([sparc]) | |||
| __sync_synchronize (); | AC_DEFINE_UNQUOTED([QB_ARCH_SPARC], [1], [sparc]) | |||
| __sync_bool_compare_and_swap (&i, 0, 1); | nongcc_memory_barrier_needed=yes | |||
| __sync_fetch_and_add (&i, 1); | arch_force_shmlba=yes | |||
| ], | ;; | |||
| [gcc_has_builtin_atomic_operations=yes], | alpha*) | |||
| [gcc_has_builtin_atomic_operations=no]) | AC_MSG_RESULT([alpha]) | |||
| AC_DEFINE_UNQUOTED([QB_ARCH_ALPHA], [1], [alpha]) | ||||
| nongcc_memory_barrier_needed=yes | ||||
| ;; | ||||
| powerpc*) | ||||
| AC_MSG_RESULT([powerpc]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_POWERPC], [1], [powerpc]) | ||||
| nongcc_memory_barrier_needed=yes | ||||
| arch_force_shmlba=yes | ||||
| ;; | ||||
| ia64) | ||||
| AC_MSG_RESULT([ia64]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_IA64], [1], [ia64]) | ||||
| nongcc_memory_barrier_needed=yes | ||||
| ;; | ||||
| arm*) | ||||
| AC_MSG_RESULT([ia64]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_ARM], [1], [arm]) | ||||
| arch_force_shmlba=yes | ||||
| ;; | ||||
| mips*) | ||||
| AC_MSG_RESULT([ia64]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_MIPS], [1], [mips]) | ||||
| arch_force_shmlba=yes | ||||
| ;; | ||||
| *) | ||||
| AC_MSG_RESULT([${host_cpu}]) | ||||
| ;; | ||||
| esac | ||||
| AC_MSG_RESULT($gcc_has_builtin_atomic_operations) | if test $arch_force_shmlba = yes; then | |||
| if test $gcc_has_builtin_atomic_operations = yes; then | AC_DEFINE_UNQUOTED([QB_FORCE_SHM_ALIGN], [1], | |||
| memory_barrier_needed=yes | [shared and fixed mmap must align on 16k]) | |||
| PACKAGE_FEATURES="$PACKAGE_FEATURES gcc__sync" | ||||
| else | ||||
| case $host_cpu in | ||||
| sparc*) | ||||
| AC_MSG_RESULT([sparcv9]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_SPARCV9], [1], [sparcv9] | ||||
| ) | ||||
| memory_barrier_needed=yes | ||||
| ;; | ||||
| alpha*) | ||||
| AC_MSG_RESULT([alpha]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_ALPHA], [1], [alpha]) | ||||
| memory_barrier_needed=yes | ||||
| ;; | ||||
| powerpc*) | ||||
| AC_MSG_RESULT([powerpc]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_POWERPC], [1], [powerpc] | ||||
| ) | ||||
| memory_barrier_needed=yes | ||||
| ;; | ||||
| ia64) | ||||
| AC_MSG_RESULT([ia64]) | ||||
| AC_DEFINE_UNQUOTED([QB_ARCH_IA64], [1], [ia64]) | ||||
| memory_barrier_needed=yes | ||||
| ;; | ||||
| *) | ||||
| AC_MSG_RESULT([none]) | ||||
| memory_barrier_needed=no | ||||
| ;; | ||||
| esac | ||||
| AC_MSG_WARN([-----------------------------]) | ||||
| AC_MSG_WARN([You have gcc but not __sync_bool_compare_and_sw | ||||
| ap]) | ||||
| AC_MSG_WARN([try CFLAGS="-march=<your arch> -mtune=native" . | ||||
| /configure]) | ||||
| AC_MSG_WARN([-----------------------------]) | ||||
| fi | ||||
| fi | fi | |||
| if test x"$memory_barrier_needed" != xno; then | ||||
| AC_DEFINE_UNQUOTED(QB_ATOMIC_OP_MEMORY_BARRIER_NEEDED, 1, | ||||
| [need atomic memory barrier]) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS, | ||||
| [test $gcc_has_builtin_atomic_operations = yes]) | ||||
| LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \ | ||||
| -badflag -D__gnuc_va_list=va_list -D__attribute\(x\)= \ | ||||
| -warnposix +matchanyintegral" | ||||
| # local options | ||||
| AC_ARG_ENABLE([ansi], | ||||
| [ --enable-ansi : force to build with ANSI standards. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([fatal-warnings], | ||||
| [ --enable-fatal-warnings : enable fatal warnings. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([debug], | ||||
| [ --enable-debug : enable debug build. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([coverage], | ||||
| [ --enable-coverage : coverage analysis of the codebase. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_WITH([socket-dir], | ||||
| [ --with-socket-dir=DIR : socket dir. ], | ||||
| [ SOCKETDIR="$withval" ], | ||||
| [ SOCKETDIR="$localstatedir/run" ]) | ||||
| # OS detection | # OS detection | |||
| # THIS SECTION MUST DIE! | # THIS SECTION MUST DIE! | |||
| CP=cp | CP=cp | |||
| LIB_RT=-lrt | ||||
| supports_sysv_mq="yes" | ||||
| supports_posix_mq="yes" | ||||
| AC_MSG_CHECKING([for os in ${host_os}]) | ||||
| case "$host_os" in | case "$host_os" in | |||
| *linux*) | *linux*) | |||
| AC_DEFINE_UNQUOTED([QB_LINUX], [1], | AC_DEFINE_UNQUOTED([QB_LINUX], [1], | |||
| [Compiling for Linux platform]) | [Compiling for Linux platform]) | |||
| AC_MSG_RESULT([Linux]) | ||||
| ;; | ;; | |||
| darwin*) | darwin*) | |||
| AC_DEFINE_UNQUOTED([QB_DARWIN], [1], | AC_DEFINE_UNQUOTED([QB_DARWIN], [1], | |||
| [Compiling for Darwin platform]) | [Compiling for Darwin platform]) | |||
| CP=rsync | CP=rsync | |||
| LIB_RT= | ||||
| supports_sysv_mq="no" | ||||
| supports_posix_mq="no" | ||||
| ac_cv_link_attribute_section=no | ||||
| dnl Attribute section appears to work here but fails later w | ||||
| ith: | ||||
| dnl cc1: error in backend: Global variable 'descriptor.4902' | ||||
| has an invalid section specifier '__verbose': mach-o section specifier req | ||||
| uires a segment and section separated by a comma | ||||
| AC_DEFINE_UNQUOTED([MAP_ANONYMOUS], [MAP_ANON], | AC_DEFINE_UNQUOTED([MAP_ANONYMOUS], [MAP_ANON], | |||
| [Shared memory define for Darwin platform ]) | [Shared memory define for Darwin platform ]) | |||
| AC_DEFINE_UNQUOTED([PATH_MAX], [4096], | AC_DEFINE_UNQUOTED([PATH_MAX], [4096], | |||
| [Number of chars in a path name including nul]) | [Number of chars in a path name including nul]) | |||
| AC_DEFINE_UNQUOTED([NAME_MAX], [255], | AC_DEFINE_UNQUOTED([NAME_MAX], [255], | |||
| [Number of chars in a file name]) | [Number of chars in a file name]) | |||
| AC_DEFINE_UNQUOTED([DISABLE_POSIX_THREAD_PROCESS_SHARED], [1 ], | AC_DEFINE_UNQUOTED([DISABLE_POSIX_THREAD_PROCESS_SHARED], [1 ], | |||
| [Disable _POSIX_THREAD_PROCESS_SHARED]) | [Disable _POSIX_THREAD_PROCESS_SHARED]) | |||
| AC_MSG_RESULT([Dawin]) | ||||
| ;; | ;; | |||
| *bsd*) | *bsd*) | |||
| AC_DEFINE_UNQUOTED([QB_BSD], [1], | AC_DEFINE_UNQUOTED([QB_BSD], [1], | |||
| [Compiling for BSD platform]) | [Compiling for BSD platform]) | |||
| AC_DEFINE_UNQUOTED([MAP_ANONYMOUS], [MAP_ANON], | AC_DEFINE_UNQUOTED([MAP_ANONYMOUS], [MAP_ANON], | |||
| [Shared memory define for Darwin platform ]) | [Shared memory define for Darwin platform ]) | |||
| case "$host_os" in | case "$host_os" in | |||
| *freebsd[[234567]]*) | *freebsd[[234567]]*) | |||
| ;; | ;; | |||
| *freebsd*) | *freebsd*) | |||
| AC_DEFINE_UNQUOTED([QB_FREEBSD_GE_8], [1], | AC_DEFINE_UNQUOTED([QB_FREEBSD_GE_8], [1], | |||
| [Compiling for FreeBSD >= 8 platf orm]) | [Compiling for FreeBSD >= 8 platf orm]) | |||
| ;; | ;; | |||
| esac | esac | |||
| AC_MSG_RESULT([BSD]) | ||||
| ;; | ;; | |||
| *solaris*) | *solaris*) | |||
| AC_DEFINE_UNQUOTED([QB_SOLARIS], [1], | AC_DEFINE_UNQUOTED([QB_SOLARIS], [1], | |||
| [Compiling for Solaris platform]) | [Compiling for Solaris platform]) | |||
| AC_DEFINE_UNQUOTED([TS_CLASS], [1], | AC_DEFINE_UNQUOTED([TS_CLASS], [1], | |||
| [Prevent being scheduled RR]) | [Prevent being scheduled RR]) | |||
| AC_DEFINE_UNQUOTED([_SEM_SEMUN_UNDEFINED], [1], | AC_DEFINE_UNQUOTED([_SEM_SEMUN_UNDEFINED], [1], | |||
| [The semun structure is undefined]) | [The semun structure is undefined]) | |||
| CP=rsync | CP=rsync | |||
| AC_MSG_RESULT([Solaris]) | ||||
| ;; | ;; | |||
| *) | *) | |||
| AC_MSG_ERROR([Unsupported OS? hmmmm]) | AC_MSG_ERROR([Unsupported OS? hmmmm]) | |||
| ;; | ;; | |||
| esac | esac | |||
| AC_MSG_CHECKING([whether GCC supports build-in atomic intrinsics]) | ||||
| if test -z "$gcc_has_builtin_atomic_operations"; then | ||||
| gcc_has_builtin_atomic_operations=no | ||||
| if test x"$GCC" = xyes && test x$have_mingw != xyes; then | ||||
| AC_TRY_LINK([], | ||||
| [int i; | ||||
| __sync_synchronize (); | ||||
| __sync_bool_compare_and_swap (&i, 0, 1); | ||||
| __sync_fetch_and_add (&i, 1); | ||||
| ], | ||||
| [gcc_has_builtin_atomic_operations=yes], | ||||
| [gcc_has_builtin_atomic_operations=no]) | ||||
| fi | ||||
| fi | ||||
| AC_MSG_RESULT($gcc_has_builtin_atomic_operations) | ||||
| AM_CONDITIONAL(HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS, | ||||
| [test "x$gcc_has_builtin_atomic_operations" = xyes]) | ||||
| if test "x$gcc_has_builtin_atomic_operations" = xyes; then | ||||
| AC_DEFINE_UNQUOTED(HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS, 1, | ||||
| [have builtin atomic operations]) | ||||
| fi | ||||
| AC_MSG_CHECKING([whether atomics need memory barrier]) | ||||
| if test -n "$ac_cv_atomic_need_memory_barrier"; then | ||||
| memory_barrier_needed=$ac_cv_atomic_need_memory_barrier | ||||
| else | ||||
| if test x$gcc_has_builtin_atomic_operations = xyes; then | ||||
| memory_barrier_needed=yes | ||||
| PACKAGE_FEATURES="$PACKAGE_FEATURES gcc__sync" | ||||
| else | ||||
| memory_barrier_needed=$nongcc_memory_barrier_needed | ||||
| AC_MSG_WARN([-----------------------------]) | ||||
| AC_MSG_WARN([You have gcc but not __sync_bool_compare_and_sw | ||||
| ap]) | ||||
| AC_MSG_WARN([try CFLAGS="-march=<your arch> -mtune=native" . | ||||
| /configure]) | ||||
| AC_MSG_WARN([-----------------------------]) | ||||
| fi | ||||
| fi | ||||
| AC_MSG_RESULT($memory_barrier_needed) | ||||
| if test x"$memory_barrier_needed" != xno; then | ||||
| AC_DEFINE_UNQUOTED(QB_ATOMIC_OP_MEMORY_BARRIER_NEEDED, 1, | ||||
| [need atomic memory barrier]) | ||||
| fi | ||||
| LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \ | ||||
| -badflag -D__gnuc_va_list=va_list -D__attribute\(x\)= \ | ||||
| -warnposix +matchanyintegral" | ||||
| # local options | ||||
| AC_ARG_ENABLE([ansi], | ||||
| [ --enable-ansi : force to build with ANSI standards. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([fatal-warnings], | ||||
| [ --enable-fatal-warnings : enable fatal warnings. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([debug], | ||||
| [ --enable-debug : enable debug build. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([coverage], | ||||
| [ --enable-coverage : coverage analysis of the codebase. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_ENABLE([slow-tests], | ||||
| [ --enable-slow-tests : build and run slow tests. ], | ||||
| [ default="no" ]) | ||||
| AC_ARG_WITH([socket-dir], | ||||
| [ --with-socket-dir=DIR : socket dir. ], | ||||
| [ SOCKETDIR="$withval" ], | ||||
| [ SOCKETDIR="$localstatedir/run" ]) | ||||
| AC_SUBST(CP) | AC_SUBST(CP) | |||
| AC_SUBST(LIB_RT) | ||||
| # *FLAGS handling goes here | # *FLAGS handling goes here | |||
| ENV_CFLAGS="$CFLAGS" | ENV_CFLAGS="$CFLAGS" | |||
| ENV_CPPFLAGS="$CPPFLAGS" | ENV_CPPFLAGS="$CPPFLAGS" | |||
| ENV_LDFLAGS="$LDFLAGS" | ENV_LDFLAGS="$LDFLAGS" | |||
| # debug build stuff | # debug build stuff | |||
| if test "x${enable_debug}" = xyes; then | if test "x${enable_debug}" = xyes; then | |||
| AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) | AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code]) | |||
| OPT_CFLAGS="-O0" | OPT_CFLAGS="-O0" | |||
| skipping to change at line 326 | skipping to change at line 383 | |||
| missing-declarations | missing-declarations | |||
| strict-prototypes | strict-prototypes | |||
| declaration-after-statement | declaration-after-statement | |||
| pointer-arith | pointer-arith | |||
| write-strings | write-strings | |||
| cast-align | cast-align | |||
| bad-function-cast | bad-function-cast | |||
| missing-format-attribute | missing-format-attribute | |||
| format=2 | format=2 | |||
| format-security | format-security | |||
| format-nonliteral | no-format-nonliteral | |||
| no-long-long | no-long-long | |||
| unsigned-char | unsigned-char | |||
| gnu89-inline | gnu89-inline | |||
| no-strict-aliasing | no-strict-aliasing | |||
| " | " | |||
| for j in $WARNLIST; do | for j in $WARNLIST; do | |||
| if cc_supports_flag -W$j; then | if cc_supports_flag -W$j; then | |||
| EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j"; | EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j"; | |||
| fi | fi | |||
| skipping to change at line 353 | skipping to change at line 410 | |||
| AC_MSG_NOTICE([Enabling Coverage (enable -O0 by default)]) | AC_MSG_NOTICE([Enabling Coverage (enable -O0 by default)]) | |||
| OPT_CFLAGS="-O0" | OPT_CFLAGS="-O0" | |||
| COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs" | COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs" | |||
| COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs" | COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs" | |||
| PACKAGE_FEATURES="$PACKAGE_FEATURES coverage" | PACKAGE_FEATURES="$PACKAGE_FEATURES coverage" | |||
| else | else | |||
| COVERAGE_CFLAGS="" | COVERAGE_CFLAGS="" | |||
| COVERAGE_LDFLAGS="" | COVERAGE_LDFLAGS="" | |||
| fi | fi | |||
| if test "x${enable_slow_tests}" = xyes ; then | ||||
| AC_DEFINE([HAVE_SLOW_TESTS], 1,[have slow tests]) | ||||
| AC_MSG_NOTICE([Enabling Slow tests]) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_SLOW_TESTS, [test "x${enable_slow_tests}" = xyes]) | ||||
| if test -n "$ac_cv_supports_sysv_mq"; then | ||||
| supports_sysv_mq=$ac_cv_supports_sysv_mq | ||||
| fi | ||||
| if test "x${supports_sysv_mq}" = xyes ; then | ||||
| AC_DEFINE([HAVE_SYSV_MQ], [1], | ||||
| [have sysv message queues]) | ||||
| PACKAGE_FEATURES="$PACKAGE_FEATURES sysv_mq" | ||||
| AC_MSG_NOTICE([Enabling SYSV Message Queues]) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_SYSV_MQ, [test "x${supports_sysv_mq}" = xyes]) | ||||
| if test -n "$ac_cv_supports_posix_mq"; then | ||||
| supports_posix_mq=$ac_cv_supports_posix_mq | ||||
| fi | ||||
| if test "x${supports_posix_mq}" = xyes ; then | ||||
| AC_DEFINE([HAVE_POSIX_MQ], [1], | ||||
| [have posix message queues]) | ||||
| PACKAGE_FEATURES="$PACKAGE_FEATURES posix_mq" | ||||
| AC_MSG_NOTICE([Enabling POSIX Message Queues]) | ||||
| fi | ||||
| AM_CONDITIONAL(HAVE_POSIX_MQ, [test "x${supports_posix_mq}" = xyes]) | ||||
| AM_CONDITIONAL(USE_TIMERFD, [test "x$ac_cv_func_timerfd_create" = xyes]) | AM_CONDITIONAL(USE_TIMERFD, [test "x$ac_cv_func_timerfd_create" = xyes]) | |||
| # --- callsite sections --- | ||||
| if test "x${GCC}" = xyes; then | ||||
| AC_MSG_CHECKING([whether GCC supports __attribute__((section())]) | ||||
| if test "x${ac_cv_link_attribute_section}" = x ; then | ||||
| AC_TRY_LINK([], | ||||
| [static int my_var __attribute__((section("__ver | ||||
| bose"))) = 5; | ||||
| if (my_var == 5) return 0; | ||||
| else return -1; | ||||
| ], | ||||
| [gcc_has_attribute_section=yes], | ||||
| [gcc_has_attribute_section=no]) | ||||
| else | ||||
| gcc_has_attribute_section=${ac_cv_link_attribute_section} | ||||
| fi | ||||
| AC_MSG_RESULT($gcc_has_attribute_section) | ||||
| if test $gcc_has_attribute_section = yes; then | ||||
| AC_DEFINE([QB_HAVE_ATTRIBUTE_SECTION], 1, | ||||
| [Enabling code using __attribute__((section))]) | ||||
| PACKAGE_FEATURES="$PACKAGE_FEATURES attribute-section" | ||||
| fi | ||||
| fi | ||||
| # --- ansi --- | # --- ansi --- | |||
| if test "x${enable_ansi}" = xyes && \ | if test "x${enable_ansi}" = xyes && \ | |||
| cc_supports_flag -std=iso9899:199409 ; then | cc_supports_flag -std=iso9899:199409 ; then | |||
| AC_MSG_NOTICE([Enabling ANSI Compatibility]) | AC_MSG_NOTICE([Enabling ANSI Compatibility]) | |||
| ANSI_CPPFLAGS="-ansi -D_GNU_SOURCE -DANSI_ONLY" | ANSI_CPPFLAGS="-ansi -D_GNU_SOURCE -DANSI_ONLY" | |||
| PACKAGE_FEATURES="$PACKAGE_FEATURES ansi" | PACKAGE_FEATURES="$PACKAGE_FEATURES ansi" | |||
| else | else | |||
| ANSI_CPPFLAGS="" | ANSI_CPPFLAGS="" | |||
| fi | fi | |||
| skipping to change at line 381 | skipping to change at line 489 | |||
| else | else | |||
| WERROR_CFLAGS="" | WERROR_CFLAGS="" | |||
| fi | fi | |||
| # final build of *FLAGS | # final build of *FLAGS | |||
| CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS \ | CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS \ | |||
| $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS" | $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS" | |||
| CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS" | CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS" | |||
| LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS" | LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS" | |||
| if test -f /usr/share/dict/words ; then | ||||
| HAVE_DICT_WORDS=yes | ||||
| AC_DEFINE([HAVE_DICT_WORDS], 1, "Have /usr/share/dict/words") | ||||
| fi | ||||
| AM_CONDITIONAL([HAVE_DICT_WORDS], [test "x$HAVE_DICT_WORDS" = xyes]) | ||||
| # substitute what we need: | # substitute what we need: | |||
| AC_SUBST([SOCKETDIR]) | AC_SUBST([SOCKETDIR]) | |||
| AC_SUBST([LINT_FLAGS]) | AC_SUBST([LINT_FLAGS]) | |||
| AC_DEFINE_UNQUOTED([SOCKETDIR], "$(eval echo ${SOCKETDIR})", [Socket direct ory]) | AC_DEFINE_UNQUOTED([SOCKETDIR], "$(eval echo ${SOCKETDIR})", [Socket direct ory]) | |||
| AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [local state directory]) | AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [local state directory]) | |||
| AC_DEFINE_UNQUOTED([PACKAGE_FEATURES], "${PACKAGE_FEATURES}", [quarterback built-in features]) | AC_DEFINE_UNQUOTED([PACKAGE_FEATURES], "${PACKAGE_FEATURES}", [quarterback built-in features]) | |||
| AC_CONFIG_FILES([Makefile | AC_CONFIG_FILES([Makefile | |||
| include/Makefile | include/Makefile | |||
| include/qb/Makefile | include/qb/Makefile | |||
| lib/Makefile | lib/Makefile | |||
| lib/libqb.pc | lib/libqb.pc | |||
| tests/Makefile | tests/Makefile | |||
| examples/Makefile | ||||
| docs/Makefile | docs/Makefile | |||
| docs/man.dox | docs/man.dox | |||
| docs/html.dox]) | docs/html.dox]) | |||
| AC_OUTPUT | AC_OUTPUT | |||
| AC_MSG_RESULT([]) | AC_MSG_RESULT([]) | |||
| AC_MSG_RESULT([$PACKAGE configuration:]) | AC_MSG_RESULT([$PACKAGE configuration:]) | |||
| AC_MSG_RESULT([ Version = ${VERSION}]) | AC_MSG_RESULT([ Version = ${VERSION}]) | |||
| AC_MSG_RESULT([ Prefix = ${prefix}]) | AC_MSG_RESULT([ Prefix = ${prefix}]) | |||
| End of changes. 32 change blocks. | ||||
| 112 lines changed or deleted | 235 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||