| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408 |
- # -*- Autoconf -*-
- # Process this file with autoconf to produce a configure script.
- # bootstrap / init
- AC_PREREQ([2.61])
- AC_INIT([corosync], [trunk], [openais@lists.osdl.org])
- AM_INIT_AUTOMAKE
- AC_CONFIG_SRCDIR([lib/coroipcc.c])
- AC_CONFIG_HEADER([include/corosync/config.h include/corosync/cs_config.h])
- AC_CANONICAL_HOST
- AC_LANG([C])
- dnl Fix default variables - "prefix" variable if not specified
- if test "$prefix" = "NONE"; then
- prefix="/usr"
- dnl Fix "localstatedir" variable if not specified
- if test "$localstatedir" = "\${prefix}/var"; then
- localstatedir="/var"
- fi
- dnl Fix "sysconfdir" variable if not specified
- if test "$sysconfdir" = "\${prefix}/etc"; then
- sysconfdir="/etc"
- fi
- dnl Fix "libdir" variable if not specified
- if test "$libdir" = "\${exec_prefix}/lib"; then
- if test -e /usr/lib64; then
- libdir="/usr/lib64"
- else
- libdir="/usr/lib"
- fi
- fi
- fi
- # Checks for programs.
- # check stolen from gnulib/m4/gnu-make.m4
- 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])
- fi
- sinclude(coroysync-default.m4)
- AC_PROG_CC
- AC_PROG_INSTALL
- AC_PROG_LN_S
- AC_PROG_MAKE_SET
- AC_PROG_RANLIB
- AC_CHECK_PROGS([GROFF], [groff])
- AC_CHECK_PROGS([PKGCONFIG], [pkg-config])
- # Checks for libraries.
- AC_CHECK_LIB([dl], [dlopen])
- AC_CHECK_LIB([pthread], [pthread_create])
- AC_CHECK_LIB([c], [getpeereid])
- AC_CHECK_LIB([socket], [socket])
- AC_CHECK_LIB([nsl], [t_open])
- AC_CHECK_LIB([rt], [sched_getscheduler])
- # Checks for header files.
- AC_FUNC_ALLOCA
- AC_HEADER_DIRENT
- AC_HEADER_STDC
- AC_HEADER_SYS_WAIT
- AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdint.h \
- stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h \
- sys/time.h syslog.h unistd.h sys/types.h getopt.h malloc.h \
- sys/sockio.h])
- # Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
- AC_TYPE_UID_T
- AC_C_INLINE
- AC_TYPE_INT16_T
- AC_TYPE_INT32_T
- AC_TYPE_INT64_T
- AC_TYPE_INT8_T
- AC_TYPE_SIZE_T
- AC_TYPE_SSIZE_T
- AC_HEADER_TIME
- AC_TYPE_UINT16_T
- AC_TYPE_UINT32_T
- AC_TYPE_UINT64_T
- AC_TYPE_UINT8_T
- AC_C_VOLATILE
- # Checks for library functions.
- AC_FUNC_CLOSEDIR_VOID
- AC_FUNC_ERROR_AT_LINE
- AC_REPLACE_FNMATCH
- AC_FUNC_FORK
- AC_PROG_GCC_TRADITIONAL
- AC_FUNC_MALLOC
- AC_FUNC_MEMCMP
- AC_FUNC_REALLOC
- AC_FUNC_SELECT_ARGTYPES
- AC_TYPE_SIGNAL
- AC_FUNC_STRFTIME
- AC_FUNC_VPRINTF
- AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fcntl \
- getcwd getpeerucred gettimeofday inet_ntoa memmove memset \
- mkdir scandir select socket strcasecmp strchr strdup \
- strerror strrchr strspn strstr pthread_spin_lock \
- pthread_spin_unlock])
- # add man and init dirs?
- AC_CONFIG_FILES([Makefile
- exec/Makefile
- include/Makefile
- lcr/Makefile
- lib/Makefile
- man/Makefile
- pkgconfig/Makefile
- services/Makefile
- test/Makefile
- tools/Makefile])
- ### Local business
- # ===============================================
- # Helpers
- # ===============================================
- ## helper for CC stuff
- cc_supports_flag() {
- local CFLAGS="$@"
- AC_MSG_CHECKING([whether $CC supports "$@"])
- AC_COMPILE_IFELSE([int main(){return 0;}] ,
- [RC=0; AC_MSG_RESULT([yes])],
- [RC=1; AC_MSG_RESULT([no])])
- return $RC
- }
- ## cleanup
- AC_MSG_NOTICE(Sanitizing prefix: ${prefix})
- case $prefix in
- NONE) prefix=/usr/local;;
- esac
- AC_MSG_NOTICE(Sanitizing exec_prefix: ${exec_prefix})
- case $exec_prefix in
- dnl For consistency with Corosync, map NONE->$prefix
- NONE) exec_prefix=$prefix;;
- prefix) exec_prefix=$prefix;;
- esac
- ## local defines
- PACKAGE_FEATURES=""
- LINT_FLAGS="-weak -unrecog +posixlib +ignoresigns -fcnuse \
- -badflag -D__gnuc_va_list=va_list -D__attribute\(x\)="
- # libraries SONAME
- SOMAJOR="4"
- SOMINOR="0"
- SOMICRO="0"
- SONAME="${SOMAJOR}.${SOMINOR}.${SOMICRO}"
- # 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([nss],
- [ --enable-nss : Network Security Services encryption. ],,
- [ enable_nss="yes" ])
- AC_ARG_WITH([lcrso-dir],
- [ --with-lcrso-dir=DIR : corosync lcrso files. ],
- [ LCRSODIR="$withval" ],
- [ LCRSODIR="$libexecdir/lcrso" ])
- AC_ARG_WITH([socket-dir],
- [ --with-socket-dir=DIR : corosync socket dir. ],
- [ SOCKETDIR="$withval" ],
- [ SOCKETDIR="$localstatedir/run" ])
- # OS detection
- # THIS SECTION MUST DIE!
- CP=cp
- case "$host_os" in
- *linux*)
- AC_DEFINE_UNQUOTED([COROSYNC_LINUX], [1],
- [Compiling for Linux platform])
- OS_CFLAGS=""
- OS_CPPFLAGS=""
- OS_LDFLAGS=""
- OS_DYFLAGS="-rdynamic"
- DARWIN_OPTS=""
- ;;
- darwin*)
- AC_DEFINE_UNQUOTED([COROSYNC_DARWIN], [1],
- [Compiling for Darwin platform])
- CP=rsync
- OS_CFLAGS=""
- OS_CPPFLAGS=""
- OS_LDFLAGS=""
- OS_DYFLAGS=""
- DARWIN_OPTS="-dynamiclib -bind_at_load \
- -current_version ${SONAME} \
- -compatibility_version ${SONAME}"
- AC_DEFINE_UNQUOTED([MAP_ANONYMOUS], [MAP_ANON],
- [Shared memory define for Darwin platform])
- AC_DEFINE_UNQUOTED([PATH_MAX], [4096],
- [Number of chars in a path name including nul])
- AC_DEFINE_UNQUOTED([NAME_MAX], [255],
- [Number of chars in a file name])
- ;;
- *bsd*)
- AC_DEFINE_UNQUOTED([COROSYNC_BSD], [1],
- [Compiling for BSD platform])
- OS_CFLAGS=""
- OS_CPPFLAGS="-I/usr/local/include"
- OS_LDFLAGS="-L/usr/local/lib"
- OS_DYFLAGS="-export-dynamic"
- DARWIN_OPTS=""
- ;;
- *solaris*)
- AC_DEFINE_UNQUOTED([COROSYNC_SOLARIS], [1],
- [Compiling for Solaris platform])
- AC_DEFINE_UNQUOTED([TS_CLASS], [1],
- [Prevent being scheduled RR])
- OS_CFLAGS=""
- OS_CPPFLAGS="-D_REENTRANT"
- OS_LDFLAGS="-Wl,-rpath-link=/usr/lib"
- OS_DYFLAGS="-Wl,--export-dynamic"
- DARWIN_OPTS=""
- ;;
- *)
- AC_MSG_ERROR([Unsupported OS? hmmmm])
- ;;
- esac
- AC_SUBST(CP)
- # *FLAGS handling goes here
- ENV_CFLAGS="$CFLAGS"
- ENV_CPPFLAGS="$CPPFLAGS"
- ENV_LDFLAGS="$LDFLAGS"
- # debug build stuff
- if test "x${enable_debug}" = xyes; then
- AC_DEFINE_UNQUOTED([DEBUG], [1], [Compiling Debugging code])
- OPT_CFLAGS="-O0"
- PACKAGE_FEATURES="$PACKAGE_FEATURES debug"
- else
- OPT_CFLAGS="-O3"
- fi
- # gdb flags
- if test "x${GCC}" = xyes; then
- GDB_FLAGS="-ggdb3"
- else
- GDB_FLAGS="-g"
- fi
- # Look for libnss
- if test "x${enable_nss}" = xyes; then
- PKG_CHECK_MODULES([nss],[nss])
- AC_DEFINE_UNQUOTED([HAVE_LIBNSS], 1, [have libnss])
- PACKAGE_FEATURES="$PACKAGE_FEATURES nss"
- fi
- # extra warnings
- EXTRA_WARNINGS=""
- WARNLIST="
- all
- shadow
- missing-prototypes
- missing-declarations
- strict-prototypes
- declaration-after-statement
- pointer-arith
- write-strings
- cast-align
- bad-function-cast
- missing-format-attribute
- format=2
- format-security
- format-nonliteral
- no-long-long
- unsigned-char
- gnu89-inline
- no-strict-aliasing
- "
- for j in $WARNLIST; do
- if cc_supports_flag -W$j; then
- EXTRA_WARNINGS="$EXTRA_WARNINGS -W$j";
- fi
- done
- if test "x${enable_coverage}" = xyes && \
- cc_supports_flag -ftest-coverage && \
- cc_supports_flag -fprofile-arcs ; then
- AC_MSG_NOTICE([Enabling Coverage (enable -O0 by default)])
- OPT_CFLAGS="-O0"
- COVERAGE_CFLAGS="-ftest-coverage -fprofile-arcs"
- COVERAGE_LDFLAGS="-ftest-coverage -fprofile-arcs"
- PACKAGE_FEATURES="$PACKAGE_FEATURES coverage"
- else
- COVERAGE_CFLAGS=""
- COVERAGE_LDFLAGS=""
- fi
- if test "x${enable_ansi}" = xyes && \
- cc_supports_flag -std=iso9899:199409 ; then
- AC_MSG_NOTICE([Enabling ANSI Compatibility])
- ANSI_CPPFLAGS="-ansi -D_GNU_SOURCE -DANSI_ONLY"
- PACKAGE_FEATURES="$PACKAGE_FEATURES ansi"
- else
- ANSI_CPPFLAGS=""
- fi
- if test "x${enable_fatal_warnings}" = xyes && \
- cc_supports_flag -Werror ; then
- AC_MSG_NOTICE([Enabling Fatal Warnings (-Werror)])
- WERROR_CFLAGS="-Werror"
- PACKAGE_FEATURES="$PACKAGE_FEATURES fatal-warnings"
- else
- WERROR_CFLAGS=""
- fi
- # final build of *FLAGS
- CFLAGS="$ENV_CFLAGS $OPT_CFLAGS $GDB_FLAGS $OS_CFLAGS \
- $COVERAGE_CFLAGS $EXTRA_WARNINGS $WERROR_CFLAGS $NSS_CFLAGS"
- CPPFLAGS="$ENV_CPPFLAGS $ANSI_CPPFLAGS $OS_CPPFLAGS"
- LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS $OS_LDFLAGS"
- # substitute what we need:
- AC_SUBST([LCRSODIR])
- AC_SUBST([SOCKETDIR])
- AC_SUBST([SOMAJOR])
- AC_SUBST([SOMINOR])
- AC_SUBST([SOMICRO])
- AC_SUBST([SONAME])
- AC_SUBST([OS_DYFLAGS])
- AC_SUBST([NSS_LDFLAGS])
- AM_CONDITIONAL(BUILD_DARWIN, test -n "${DARWIN_OPTS}")
- AC_SUBST([DARWIN_OPTS])
- AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}")
- AC_SUBST([LINT_FLAGS])
- AC_DEFINE_UNQUOTED([LCRSODIR], "$(eval echo ${LCRSODIR})", [LCRSO directory])
- AC_DEFINE_UNQUOTED([SOCKETDIR], "$(eval echo ${SOCKETDIR})", [Socket directory])
- AC_DEFINE_UNQUOTED([LOCALSTATEDIR], "$(eval echo ${localstatedir})", [localstate directory])
- AC_DEFINE_UNQUOTED([SYSCONFDIR], "$(eval echo ${sysconfdir})", [sysconfig directory])
- AC_OUTPUT
- AC_MSG_RESULT([])
- AC_MSG_RESULT([$PACKAGE configuration:])
- AC_MSG_RESULT([ Version = ${VERSION}])
- AC_MSG_RESULT([ Prefix = ${prefix}])
- AC_MSG_RESULT([ Executables = ${sbindir}])
- AC_MSG_RESULT([ Man pages = ${mandir}])
- AC_MSG_RESULT([ Doc dir = ${docdir}])
- AC_MSG_RESULT([ Libraries = ${libdir}])
- AC_MSG_RESULT([ Header files = ${includedir}])
- AC_MSG_RESULT([ Arch-independent files = ${datadir}])
- AC_MSG_RESULT([ State information = ${localstatedir}])
- AC_MSG_RESULT([ System configuration = ${sysconfdir}])
- AC_MSG_RESULT([ LCRSO = ${LCRSODIR}])
- AC_MSG_RESULT([ SOCKETDIR = ${SOCKETDIR}])
- AC_MSG_RESULT([ Features =${PACKAGE_FEATURES}])
- AC_MSG_RESULT([])
- AC_MSG_RESULT([$PACKAGE build info:])
- AC_MSG_RESULT([ Library SONAME = ${SONAME}])
- AC_MSG_RESULT([ Default optimization = ${OPT_CFLAGS}])
- AC_MSG_RESULT([ Default debug options = ${GDB_CFLAGS}])
- AC_MSG_RESULT([ Extra compiler warnings = ${EXTRA_WARNING}])
- AC_MSG_RESULT([ Env. defined CFLAG = ${ENV_CFLAGS}])
- AC_MSG_RESULT([ Env. defined CPPFLAGS = ${ENV_CPPFLAGS}])
- AC_MSG_RESULT([ Env. defined LDFLAGS = ${ENV_LDFLAGS}])
- AC_MSG_RESULT([ OS defined CFLAGS = ${OS_CFLAGS}])
- AC_MSG_RESULT([ OS defined CPPFLAGS = ${OS_CPPFLAGS}])
- AC_MSG_RESULT([ OS defined LDFLAGS = ${OS_LDFLAGS}])
- AC_MSG_RESULT([ OS defined DYFLAGS = ${OS_DYFLAGS}])
- AC_MSG_RESULT([ ANSI defined CPPFLAGS = ${ANSI_CPPFLAGS}])
- AC_MSG_RESULT([ Coverage CFLAGS = ${COVERAGE_CFLAGS}])
- AC_MSG_RESULT([ Coverage LDFLAGS = ${COVERAGE_LDFLAGS}])
- AC_MSG_RESULT([ Fatal War. CFLAGS = ${WERROR_CFLAGS}])
- AC_MSG_RESULT([ Final CFLAGS = ${CFLAGS}])
- AC_MSG_RESULT([ Final CPPFLAGS = ${CPPFLAGS}])
- AC_MSG_RESULT([ Final LDFLAGS = ${LDFLAGS}])
|