summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac286
1 files changed, 26 insertions, 260 deletions
diff --git a/configure.ac b/configure.ac
index 48fb510f..c5a05fe4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT([Box Backup], 0.11, [boxbackup@boxbackup.org])
+AC_INIT([Box Backup], 0.11, [boxbackup@boxbackup.org],[boxbackup])
AC_CONFIG_SRCDIR([lib/common/Box.h])
AC_CONFIG_HEADERS([lib/common/BoxConfig.h])
@@ -13,6 +13,7 @@ test -s install-sh || rm install-sh
### Checks for programs.
AC_LANG([C++])
+AC_PROG_CC
AC_PROG_CXX
AC_CXX_EXCEPTIONS
AC_CXX_NAMESPACES
@@ -21,265 +22,7 @@ if test "x$ac_cv_cxx_exceptions" != "xyes" || \
AC_MSG_ERROR([[basic compile checks failed, the C++ compiler is broken]])
fi
-if test "x$GXX" = "xyes"; then
- # Use -Wall if we have gcc. This gives better warnings
- AC_SUBST([CXXFLAGS_STRICT], ['-Wall -Wundef'])
-
- # Use -rdynamic if we have gcc, but not mingw. This is needed for backtrace
- case $target_os in
- mingw*) ;;
- *) AC_SUBST([LDADD_RDYNAMIC], ['-rdynamic']) ;;
- esac
-fi
-
-AC_PATH_PROG([PERL], [perl], [AC_MSG_ERROR([[perl executable was not found]])])
-
-case $target_os in
-mingw*)
- TARGET_PERL=perl
- ;;
-*)
- TARGET_PERL=$PERL
- ;;
-esac
-
-AC_SUBST([TARGET_PERL])
-AC_DEFINE_UNQUOTED([PERL_EXECUTABLE], ["$TARGET_PERL"],
- [Location of the perl executable])
-
-AC_CHECK_TOOL([AR], [ar],
- [AC_MSG_ERROR([[cannot find ar executable]])])
-AC_CHECK_TOOL([RANLIB], [ranlib],
- [AC_MSG_ERROR([[cannot find ranlib executable]])])
-
-case $target_os in
-mingw*)
- AC_CHECK_TOOL([WINDRES], [windres],
- [AC_MSG_ERROR([[cannot find windres executable]])])
- ;;
-esac
-
-### Checks for libraries.
-
-case $target_os in
-mingw32*) ;;
-winnt) ;;
-*)
- AC_SEARCH_LIBS([nanosleep], [rt], [ac_have_nanosleep=yes],
- [AC_MSG_ERROR([[cannot find a short sleep function (nanosleep)]])])
- ;;
-esac
-
-AC_CHECK_HEADER([zlib.h],, [AC_MSG_ERROR([[cannot find zlib.h]])])
-AC_CHECK_LIB([z], [zlibVersion],, [AC_MSG_ERROR([[cannot find zlib]])])
-VL_LIB_READLINE([have_libreadline=yes], [have_libreadline=no])
-
-## Check for Berkely DB. Restrict to certain versions
-AX_PATH_BDB([1.x or 4.1], [
- LIBS="$BDB_LIBS $LIBS"
- LDFLAGS="$BDB_LDFLAGS $LDFLAGS"
- CPPFLAGS="$CPPFLAGS $BDB_CPPFLAGS"
-
- AX_COMPARE_VERSION([$BDB_VERSION],[ge],[4.1],,
- [AX_COMPARE_VERSION([$BDB_VERSION],[lt],[2],,
- [AC_MSG_ERROR([[only Berkely DB versions 1.x or at least 4.1 are currently supported]])]
- )]
- )
- AX_SPLIT_VERSION([BDB_VERSION], [$BDB_VERSION])
-])
-
-## Check for Open SSL, use old versions only if explicitly requested
-AC_SEARCH_LIBS([gethostbyname], [nsl socket resolv])
-AC_SEARCH_LIBS([shutdown], [nsl socket resolv])
-AX_CHECK_SSL(, [AC_MSG_ERROR([[OpenSSL is not installed but is required]])])
-AC_ARG_ENABLE(
- [old-ssl],
- [AC_HELP_STRING([--enable-old-ssl],
- [Allow use of pre-0.9.7 Open SSL - NOT RECOMMENDED, read the documentation])])
-AC_CHECK_LIB(
- [crypto],
- [EVP_CipherInit_ex],, [
- if test "x$enable_old_ssl" = "xyes"; then
- AC_DEFINE([HAVE_OLD_SSL], 1, [Define to 1 if SSL is pre-0.9.7])
- else
- AC_MSG_ERROR([[found an old (pre 0.9.7) version of SSL.
-Upgrade or read the documentation for alternatives]])
- fi
- ])
-
-
-### Checks for header files.
-
-case $target_os in
-mingw32*) ;;
-winnt*) ;;
-*)
- AC_HEADER_DIRENT
- ;;
-esac
-
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS([dlfcn.h execinfo.h getopt.h process.h pwd.h signal.h])
-AC_CHECK_HEADERS([syslog.h time.h cxxabi.h])
-AC_CHECK_HEADERS([netinet/in.h])
-AC_CHECK_HEADERS([sys/param.h sys/socket.h sys/time.h sys/types.h sys/wait.h])
-AC_CHECK_HEADERS([sys/uio.h sys/xattr.h])
-AC_CHECK_HEADERS([bsd/unistd.h])
-
-AC_CHECK_HEADER([regex.h], [have_regex_h=yes])
-
-if test "$have_regex_h" = "yes"; then
- AC_DEFINE([HAVE_REGEX_H], [1], [Define to 1 if regex.h is available])
-else
- AC_CHECK_HEADER([pcreposix.h], [have_pcreposix_h=yes])
-fi
-
-if test "$have_pcreposix_h" = "yes"; then
- AC_DEFINE([PCRE_STATIC], [1], [Box Backup always uses static PCRE])
- AC_SEARCH_LIBS([regcomp], ["pcreposix -lpcre"],,[have_pcreposix_h=no_regcomp])
-fi
-
-if test "$have_pcreposix_h" = "yes"; then
- AC_DEFINE([HAVE_PCREPOSIX_H], [1], [Define to 1 if pcreposix.h is available])
-fi
-
-if test "$have_regex_h" = "yes" -o "$have_pcreposix_h" = "yes"; then
- have_regex_support=yes
- AC_DEFINE([HAVE_REGEX_SUPPORT], [1], [Define to 1 if regular expressions are supported])
-else
- have_regex_support=no
-fi
-
-AC_SEARCH_LIBS([dlsym], ["dl"])
-
-### Checks for typedefs, structures, and compiler characteristics.
-
-AC_CHECK_TYPES([u_int8_t, u_int16_t, u_int32_t, u_int64_t])
-AC_CHECK_TYPES([uint8_t, uint16_t, uint32_t, uint64_t])
-
-AC_HEADER_STDBOOL
-AC_C_CONST
-AC_C_BIGENDIAN
-AC_TYPE_UID_T
-AC_TYPE_MODE_T
-AC_TYPE_OFF_T
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-
-AC_CHECK_MEMBERS([struct stat.st_flags])
-AC_CHECK_MEMBERS([struct stat.st_mtimespec])
-AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec])
-AC_CHECK_MEMBERS([struct stat.st_atimensec])
-AC_CHECK_MEMBERS([struct sockaddr_in.sin_len],,, [[
- #include <sys/types.h>
- #include <netinet/in.h>
- ]])
-AC_CHECK_MEMBERS([DIR.d_fd],,, [[#include <dirent.h>]])
-AC_CHECK_MEMBERS([DIR.dd_fd],,, [[#include <dirent.h>]])
-
-AC_CHECK_DECLS([INFTIM],,, [[#include <poll.h>]])
-AC_CHECK_DECLS([SO_PEERCRED],,, [[#include <sys/socket.h>]])
-AC_CHECK_DECLS([O_BINARY],,,)
-
-# Solaris provides getpeerucred() instead of getpeereid() or SO_PEERCRED
-AC_CHECK_HEADERS([ucred.h])
-AC_CHECK_FUNCS([getpeerucred])
-
-AC_CHECK_DECLS([optreset],,, [[#include <getopt.h>]])
-AC_CHECK_DECLS([dirfd],,,
- [[
- #include <getopt.h>
- #include <dirent.h>
- ]])
-
-AC_HEADER_TIME
-AC_STRUCT_TM
-AX_CHECK_DIRENT_D_TYPE
-AC_SYS_LARGEFILE
-AX_CHECK_DEFINE_PRAGMA
-if test "x$ac_cv_c_bigendian" != "xyes"; then
- AX_BSWAP64
-fi
-
-case $target_os in
-mingw32*) ;;
-winnt*) ;;
-*)
- AX_RANDOM_DEVICE
- AX_CHECK_MOUNT_POINT(,[
- AC_MSG_ERROR([[cannot work out how to discover mount points on your platform]])
- ])
- AC_CHECK_MEMBERS([struct dirent.d_ino],,, [[#include <dirent.h>]])
-;;
-esac
-
-AX_CHECK_MALLOC_WORKAROUND
-
-
-### Checks for library functions.
-
-AC_FUNC_CLOSEDIR_VOID
-AC_FUNC_ERROR_AT_LINE
-AC_TYPE_SIGNAL
-AC_FUNC_STAT
-AC_CHECK_FUNCS([getpeereid lchown setproctitle getpid gettimeofday waitpid])
-AC_SEARCH_LIBS([setproctitle], ["bsd"])
-
-# NetBSD implements kqueue too differently for us to get it fixed by 0.10
-# TODO: Remove this when NetBSD kqueue implementation is working
-netbsd_hack=`echo $target_os | sed 's/netbsd.*/netbsd/'`
-if test "$netbsd_hack" != "netbsd"; then
- AC_CHECK_FUNCS([kqueue])
-fi
-
-AX_FUNC_SYSCALL
-AX_CHECK_SYSCALL_LSEEK
-AC_CHECK_FUNCS([listxattr llistxattr getxattr lgetxattr setxattr lsetxattr])
-AC_CHECK_DECLS([XATTR_NOFOLLOW],,, [[#include <sys/xattr.h>]])
-
-
-### Miscellaneous complicated feature checks
-
-## Check for large file support active. AC_SYS_LARGEFILE has already worked
-## out how to enable it if necessary, we just use this to report to the user
-AC_CACHE_CHECK([if we have large file support enabled],
- [box_cv_have_large_file_support],
- [AC_TRY_RUN([
- $ac_includes_default
- int main()
- {
- return sizeof(off_t)==4;
- }
- ],
- [box_cv_have_large_file_support=yes],
- [box_cv_have_large_file_support=no],
- [box_cv_have_large_file_support=no # safe for cross-compile]
- )
- ])
-
-if test "x$box_cv_have_large_file_support" = "xyes"; then
- AC_DEFINE([HAVE_LARGE_FILE_SUPPORT], [1],
- [Define to 1 if large files are supported])
-fi
-
-## Find out how to do file locking
-AC_CHECK_FUNCS([flock])
-AC_CHECK_DECLS([O_EXLOCK],,, [[#include <fcntl.h>]])
-AC_CHECK_DECLS([F_SETLK],,, [[#include <fcntl.h>]])
-
-case $target_os in
-mingw32*) ;;
-winnt*) ;;
-*)
-if test "x$ac_cv_func_flock" != "xyes" && \
- test "x$ac_cv_have_decl_O_EXLOCK" != "xyes" && \
- test "x$ac_cv_have_decl_F_SETLK" != "xyes"
-then
- AC_MSG_ERROR([[cannot work out how to do file locking on your platform]])
-fi
-;;
-esac
+m4_include([infrastructure/m4/boxbackup_tests.m4])
## Get tmpdir
temp_directory_name="/tmp"
@@ -347,6 +90,7 @@ AC_CONFIG_FILES([infrastructure/BoxPlatform.pm
test/bbackupd/testfiles/bbackupd-exclude.conf
test/bbackupd/testfiles/bbackupd-snapshot.conf
test/bbackupd/testfiles/bbackupd-symlink.conf
+ test/bbackupd/testfiles/bbackupd-temploc.conf
])
AX_CONFIG_SCRIPTS([bin/bbackupd/bbackupd-config
bin/bbackupquery/makedocumentation.pl
@@ -384,6 +128,21 @@ if ! $PERL ./infrastructure/makebuildenv.pl \
exit 1
fi
+cat parcels.txt | sed -e 's/#.*//' | while read cmd subdir configure_args; do
+ if test "$cmd" = "subdir"; then
+ echo
+ export CC CXX CFLAGS CXXFLAGS LDFLAGS LIBS
+ args="$configure_args --target=$target_alias"
+ echo "Configuring $subdir with: $args"
+
+ cd $subdir
+ if ! ./configure $args; then
+ echo "Configuring $subdir with $args failed!" >&2
+ exit 1
+ fi
+ fi
+done || exit $?
+
# Write summary of important info
tee config.log.features <<EOC
A summary of the build configuration is below. Box Backup will function
@@ -397,6 +156,13 @@ Readline: $have_libreadline
Extended attributes: $ac_cv_header_sys_xattr_h
EOC
+cat > config.env <<EOC
+CC="$CC"
+CXX="$CXX"
+CXXFLAGS="$CXXFLAGS"
+LDFLAGS="$LDFLAGS"
+LIBS="$LIBS"
+EOC
### Warnings at end for visibility