dnl! dnl! aegis - a project change supervisor dnl! Copyright (C) 1994, 1995, 1997-1999, 2001-2010, 2012, 2014 Peter Miller dnl! Copyright (C) 2006-2009 Walter Franzini dnl! dnl! This program is free software; you can redistribute it and/or dnl! modify it under the terms of the GNU General Public License as dnl! published by the Free Software Foundation; either version 3 of the dnl! License, or (at your option) any later version. dnl! dnl! This program is distributed in the hope that it will be useful, dnl! but WITHOUT ANY WARRANTY; without even the implied warranty of dnl! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl! General Public License for more details. dnl! dnl! You should have received a copy of the GNU General Public License dnl! along with this program. If not, see . dnl! AC_INIT(install-sh) AC_CONFIG_HEADER(common/config.h) AC_LANG(C++) AC_PROG_CXX AC_PROG_CPP AC_CANONICAL_HOST AC_GNU_SOURCE dnl! dnl! Look for an existing Aegis installation, and use the "aegis dnl! --configured" command to replicate its configuration. dnl! Unless they said --with-no-aegis-configured dnl! if test "x$prefix" = "xNONE" then if test "x$with_no_aegis_configured" = "x"; then cfgval=`aegis --configured 2> /dev/null` if test $? -eq 0; then eval "$cfgval" else cfgval=`which aegis 2> /dev/null` if test $? -ne 0; then case "$cfgval" in /bin/aegis ) prefix=/ ;; */bin/aegis ) prefix=`echo $cfgval | sed 's|/bin/aegis$||'` ;; esac fi fi fi fi AC_PROG_INSTALL AC_PROG_YACC if test "$YACC" = "yacc" -a ! -f /usr/bin/yacc then AC_MSG_RESULT([ You must have the bison command installed in order to build Aegis. Homepage: http://www.gnu.org/software/bison/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install bison ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install bison ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the bison package. ]) fi exit 1 fi AC_CHECK_PROGS(AR, ar) AC_PROG_RANLIB AC_MINIX AC_ISC_POSIX AC_OBJEXT AC_EXEEXT dnl! dnl! Large file support. dnl! AC_TYPE_OFF_T AC_FUNC_FSEEKO AC_SYS_LARGEFILE dnl! dnl! DO NOT check for -ldmalloc, using dnl! AC_CHECK_LIB(dmalloc, dmalloc_malloc) dnl! or similar. dnl! dnl! The dmalloc library can be instructed to log to a file, dnl! circumventing the Aegis I/O layer, thus it's possible to create dnl! file owned by root. The dmalloc library should only ever be dnl! used as a debugging tool, and NEVER be used in a production build dnl! of Aegis. dnl! dnl! Solaris 2.5.1 and below wide-character support AC_CHECK_FUNC(wschr, , unset ac_cv_func_wschr AC_CHECK_LIB(w, wschr)) dnl! dnl! we need to check for libiconv before we check for libintl dnl! AC_CHECK_LIB(iconv, iconv, , unset ac_cv_func_iconv) dnl! dnl! Solaris needs to use the GNU Gettext to have any chance of dnl! having working error message translation. So we look for -lintl dnl! unconditionally. dnl! AC_CHECK_LIB(intl, gettext, , [ unset ac_cv_func_gettext AC_CHECK_LIB(gettext, gettext, , unset ac_cv_func_gettext) ] ) AC_CHECK_FUNC(setsockopt, , unset ac_cv_func_setsockopt AC_CHECK_LIB(socket, setsockopt)) dnl! dnl! Check the presence of libm. We use additional parentheses around dnl! the name of the function to avoid problems if atan2 is *also* dnl! defined as a macro. dnl! AC_CHECK_LIB(m, (atan2)) AC_CHECK_LIB(rx, regcomp) AC_CHECK_LIB(z, gzopen, , [ AC_MSG_RESULT([ You must have the zlib compression library installed in order to build Aegis. Please install zlib, and then re-run this ./configure script. Homepage: http://www.zlib.net/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install zlib1g-dev ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install zlib-devel ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the zlib-devel package in addition to the zlib package. ]) fi exit 1 ] ) AC_CHECK_LIB(bz2, BZ2_bzopen, , [ AC_MSG_RESULT([ You must have the BZip2 compression library installed in order to build Aegis. Please install the bzip2 library, and then re-run this ./configure script. Homepage: http://www.bzip.org/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install libbz2-dev bzip2 ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install libbz2-devel bzip2 ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the bzip2-devel package in addition to the bzip package. ]) fi exit 1 ] ) AC_CHECK_LIB(crypt, crypt) AC_CHECK_LIB(magic, magic_file, , [ AC_MSG_RESULT([ You may like to have the file magic number library installed in order to build Aegis. This will result is superior Content-Type information being inserted at several points in the code. Homepage: http://www.darwinsys.com/file/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install libmagic-dev ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install libmagic-devel ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the libmagic-devel package in addition to the libmagic package. ]) fi ] ) dnl! The -lclu library is for OSF/1 clustering AC_CHECK_LIB(clu, clu_info) STATIC_LIBS= dnl! dnl! Look for static libraries necessary with -lcurl, but we don't need dnl! them when we are using shared libraries. dnl! AC_CHECK_PROGS(CURL_CONFIG, curl-config) if test -n "$CURL_CONFIG" then CFLAGS="$CFLAGS `$CURL_CONFIG --cflags`" CXXFLAGS="$CXXFLAGS `$CURL_CONFIG --cflags`" STATIC_LIBS="`$CURL_CONFIG --libs`" fi dnl! dnl! The curl library is used to read from arbitrary URLs. dnl! AC_CHECK_LIB(curl, curl_multi_perform, [], [ AC_MSG_RESULT([ You may like to have the multi-protocol file transfer library installed in order to build Aegis. Homepage: http://curl.haxx.se/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ One of the following commands may be used to install it: sudo apt-get install libcurl4-gnutls-dev sudo apt-get install libcurl3-dev (The first is preferred, it is more Free; the second needs openssl, which is not so Free.) ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install libcurl-devel ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the libcurl-devel package in addition to the libcurl package. ]) fi ], [$STATIC_LIBS]) dnl! dnl! Look for static libraries necessary with -lxml2, but we don't need dnl! them when we are using shared libraries. dnl! AC_CHECK_PROGS(XML2_CONFIG, xml2-config) if test -n "$XML2_CONFIG" then CFLAGS="$CFLAGS `$XML2_CONFIG --cflags`" CXXFLAGS="$CXXFLAGS `$XML2_CONFIG --cflags`" STATIC_LIBS="$STATIC_LIBS `$XML2_CONFIG --libs` -lpthread" fi dnl! dnl! The libxml2 library is used by the aerevml(1) command to parse its dnl! input files. dnl! AC_CHECK_LIB(xml2, xmlTextReaderRead, [], [ AC_MSG_RESULT([ You must have the Gnome libxml2 library installed in order to build Aegis. Please install the xml2 library version 1.8.17 or later, and then re-run this ./configure script. You do not have to install the rest of Gnome, the library can be used on its own. Homepage: http://xmlsoft.org/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install libxml2-dev ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install libxml2-devel ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the libxml2-devel package in addition to the libxml2 package. ]) fi exit 1 ], [$STATIC_LIBS] ) dnl! dnl! Arrange for a special make variable for static builds. dnl! AC_SUBST(STATIC_LIBS) dnl! dnl! Try to detect a library with the UUID functions, where available dnl! (FreeBSD) prefer libc. dnl! dnl! The OSSP variant has uuid_load in -luuid dnl! and which include file? dnl! *** later we check for uuid_create, uuid_make and uuid_export dnl! dnl! The e2fsprogs variant has uuid_generate in -luuid dnl! and which include file? dnl! *** later we check for uuid_generate and uuid_unparse dnl! dnl! The DCE compliant variant has uuid_hash in -luuid dnl! The include file is dnl! *** later we check for uuid_create and uuid_to_string dnl! dnl! The BSD variant has uuid_has in libc (no -l required) dnl! The include file is dnl! *** it is supposed to be the same as the DCE variant. Is it? AC_CHECK_LIB(c, uuid_hash,, AC_CHECK_LIB(uuid, uuid_load) AC_CHECK_LIB(uuid, uuid_generate) AC_CHECK_LIB(uuid, uuid_hash) ) dnl! dnl! If there are no UUID libraries we can roll our own, but first we dnl! need to see if the Linux kernel will do it for us. dnl! AC_MSG_CHECKING([for Linux /proc/sys/kernel/random/uuid]) HAVE_LINUX_UUID=no if test -f "/proc/sys/kernel/random/uuid" then AC_DEFINE(HAVE_LINUX_UUID, 1, [Define this symbol if your system has /proc/sys/kernel/random/uuid]) AC_DEFINE(LINUX_UUID_FILENAME,["/proc/sys/kernel/random/uuid"], [Define this symbol if your system has /proc/sys/kernel/random/uuid]) AC_DEFINE(LINUX_UUID_SIZE, 36, [Define this symbol if your system has /proc/sys/kernel/random/uuid]) HAVE_LINUX_UUID=yes fi AC_MSG_RESULT([$HAVE_LINUX_UUID]) AC_CHECK_PROGS(MSGFMT, gmsgfmt msgfmt) AC_CHECK_PROGS(MSGCAT, gmsgcat msgcat) AC_CHECK_PROGS(GROFF, groff roff) AC_CHECK_PROGS(SOELIM, roffpp gsoelim soelim) AC_CHECK_PROGS(REFER, grefer refer) AC_PROG_AWK dnl! dnl! We need some way to determine the value of the default MANPATH dnl! setting, so that we can append to it. There are (at least) two dnl! incompatible man implementations out there. The one used by Debian dnl! Linux has a "manpath -q" command, the one used by RedHat Linux has dnl! a "man -w" command. If neither works, assume a constant string. dnl! AC_CHECK_PROGS(MANPATH_PROG, manpath) if test -n "$MANPATH_PROG" then dnl! dnl! Sometimes manpath prints irritating warnings, dnl! but not all versions have -q to silence them. dnl! MANPATH_PROG="$MANPATH_PROG 2>/dev/null" else dnl! dnl! Some versions of man have a -w option, but it's short for --whatis dnl! and so they print nothing on stdout, and an error message about dnl! the missing argument on stderr. Some versions of man -w do the dnl! same thing as manpath. dnl! temp_str=`man -w 2>/dev/null` if test -n "$temp_str" then MANPATH_PROG="man -w 2>/dev/null" else MANPATH_PROG="echo /usr/man:/usr/share/man" fi fi AC_CHECK_PROGS(LOCALE_PROG, locale, , [${PATH}:/usr/sbin:/sbin]) if test -n "$LOCALE_PROG" then AC_DEFINE(HAVE_LOCALE_PROG, 1, [Define this symbol if your system has the locale(1) program.]) fi AC_CHECK_PROGS(LOCALE_GEN_PROG, locale-gen, , [${PATH}:/usr/sbin:/sbin]) if test -n "$LOCALE_GEN_PROG" then AC_DEFINE(HAVE_LOCALE_GEN_PROG, 1, [Define this symbol if your system has the locale-gen(8) program.]) fi AC_PATH_PROG(WISH, wish, /usr/local/bin/wish) AC_PATH_PROG(VI_PROG, vi, /bin/vi) AC_PATH_PROG(PERL, perl, /usr/local/bin/perl) AC_DEFINE_UNQUOTED(CONF_PERL, ["$PERL"], [Set this to be the absolute path of a Perl interpreter.]) dnl! dnl! See if we are using GNU diff dnl! AC_CHECK_PROGS(DIFFsimple, gdiff diff, diff) AC_PATH_PROG(DIFF, $DIFFsimple, /usr/local/bin/$DIFFsimple) AC_DEFINE_UNQUOTED(CONF_DIFF, ["$DIFF"], [Set this to be the absolute path of the GNU diff command.]) AC_MSG_CHECKING([for GNU diff]) HAVE_GNU_DIFF=no if $DIFF --version > conftest.out 2>&1 then if grep 'GNU diff' conftest.out > conftest.err 2>&1 then AC_DEFINE(HAVE_GNU_DIFF, 1, [Define this symbol of your system has GNU diff.]) HAVE_GNU_DIFF=yes fi fi AC_MSG_RESULT([$HAVE_GNU_DIFF]) dnl! dnl! Find the patch program, and check whether or not it understands dnl! the -f and -s options. dnl! AC_CHECK_PROGS(PATCHsimple, gpatch patch) AC_PATH_PROG(PATCH, $PATCHsimple, /usr/local/bin/$PATCHsimple) AC_DEFINE_UNQUOTED(CONF_PATCH, ["$PATCH"], [Set this to be the absolute path of the GNU diff command.]) AC_MSG_CHECKING([for GNU patch]) HAVE_GNU_PATCH=no if $PATCH -f -s < /dev/null > conftest.out 2>&1 then AC_DEFINE(HAVE_GNU_PATCH, 1, [Define this symbol of your system has GNU patch.]) HAVE_GNU_PATCH=yes fi AC_MSG_RESULT([$HAVE_GNU_PATCH]) dnl! dnl! Test if groff takes -ms or -mgs for the macro package. dnl! AC_MSG_CHECKING([for $GROFF -ms macros]) if test `echo ' ' | groff -mgs 2> /dev/null | wc -l` -gt 0 then GROFF_MS_MACROS=gs else GROFF_MS_MACROS=s fi AC_SUBST(GROFF_MS_MACROS) AC_MSG_RESULT([-m$GROFF_MS_MACROS]) dnl! dnl! Test if groff takes -mm or -mgm for the macro package. dnl! AC_MSG_CHECKING([for $GROFF -mm macros]) if test `echo ' ' | groff -mgm 2> /dev/null | wc -l` -gt 0 then GROFF_MM_MACROS=gm else GROFF_MM_MACROS=m fi AC_SUBST(GROFF_MM_MACROS) AC_MSG_RESULT([-m$GROFF_MM_MACROS]) dnl! dnl! Test to see where TIOCGWINSZ is defined. dnl! AC_MSG_CHECKING([for TIOCGWINSZ]) AC_TRY_RUN([ #include int main(int argc, char **argv){ #ifdef TIOCGWINSZ struct winsize window_size; window_size.ws_col = 0; return(window_size.ws_col); #else return(1); #endif }] , AC_DEFINE(HAVE_winsize_SYS_IOCTL_H,1, [Define this symbol if your system as AND it defines TIOCGWINSZ and struct winsize.]) AC_MSG_RESULT([sys/ioctl.h]), AC_MSG_RESULT([not found]), AC_MSG_RESULT(cross)) dnl! dnl! Test to see where struct winsize is defined. dnl! AC_MSG_CHECKING([for struct winsize]) AC_TRY_RUN([ #include int main(int argc, char **argv){ #ifdef TIOCGWINSZ struct winsize window_size; window_size.ws_col = 0; return(window_size.ws_col); #else return(1); #endif }] , AC_DEFINE(HAVE_winsize_TERMIOS_H,1, [Define this symbol if your system as AND it defines TIOCGWINSZ and struct winsize.]) AC_MSG_RESULT([termios.h]), AC_MSG_RESULT([not found]), AC_MSG_RESULT(cross)) dnl! dnl! Test to see if stdarg.h is available *and* works. dnl! AC_MSG_CHECKING([for working stdarg.h]) AC_TRY_RUN([ #include char *foo = "test"; #if defined(__GNUC__) || __STDC__ int test(char*,...); #endif int test(fmt)char*fmt;{va_list ap;char*a;int x; va_start(ap,fmt);a=va_arg(ap,char*);x=(a!=foo);va_end(ap);return x;} int main(int argc, char **argv){ return(test("",foo));}] , AC_DEFINE(HAVE_STDARG_H,1, [Define this symbol of your system has AND it works.]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no), AC_MSG_RESULT(cross)) dnl! dnl! Test to see if mblen is available *and* works. dnl! AC_MSG_CHECKING([for working mblen]) AC_TRY_RUN([ #include int main(){mblen(0,0); return(mblen("OK", 2) != 1);}], AC_DEFINE(HAVE_MBLEN,1, [Define this symbol of your system has mblen AND it works.]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no), AC_MSG_RESULT(cross)) AC_CHECK_HEADERS( \ bits/c++locale.h \ boost/shared_ptr.hpp \ bzlib.h \ crypt.h \ curl/curl.h \ curl/multi.h \ dce/rpc.h \ dce/uuid.h \ execinfo.h \ fcntl.h \ iso646.h \ libgettext.h \ libintl.h \ limits.h \ locale.h \ magic.h \ memory.h \ mntent.h \ new.h \ regex.h \ rxposix.h \ shadow.h \ stddef.h \ stdlib.h \ string.h \ sys/clu.h \ sys/ioctl.h \ sys/prctl.h \ sys/uuid.h \ tr1/memory \ unistd.h \ uuid.h \ uuid/uuid.h \ wchar.h \ wctype.h \ widec.h \ zlib.h \ ) # # Look for the C++ header. # AC_MSG_CHECKING([for ]) AC_COMPILE_IFELSE([#include ], AC_DEFINE(HAVE_HEADER_NEW, 1, [Define this symbol of your system has the C++ header]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no)) AC_HEADER_DIRENT AC_TYPE_SIGNAL AC_TYPE_SIZE_T AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_COMPUTE_INT(ac_cv_long_bit, [sizeof(long) * CHAR_BIT], [#include ], [ac_cv_long_bit="sizeof(long) * CHAR_BIT"]) AC_DEFINE_UNQUOTED(LONG_BIT, [$ac_cv_long_bit], [Define this symbol to be the number of bits in a long. This is analogous to the standard CHAR_BIT define.]) AC_HEADER_TIME AC_C_CONST AC_SYS_LONG_FILE_NAMES AC_CHECK_FUNCS( \ backtrace \ clu_info \ crypt \ curl_easy_strerror \ curl_multi_strerror \ getpgrp \ igetspnam \ initgroups \ gettext \ gettimeofday \ iswctype \ lutime \ magic_file \ mbrtowc \ memmem \ pathconf \ prctl \ regcomp \ rpc_string_free \ seteuid setlocale \ setresuid \ setreuid \ sighold \ sigrelse \ sigprocmask \ snprintf \ strcasecmp \ strendcpy \ strlcat \ strlcpy \ strncasecmp \ strerror \ strftime \ strsignal \ strtoll \ strtoul \ strverscmp \ symlink \ tcgetpgrp \ uuid_create \ uuid_export \ uuid_generate \ uuid_hash \ uuid_load \ uuid_make \ uuid_to_string \ uuid_unparse \ vsnprintf \ wcrtomb \ wcslen \ wcswidth \ wcwidth \ xmlReaderForIO \ ) AC_CHECK_DECLS([crypt],,, [ #if HAVE_UNISTD_H #include #endif #if HAVE_CRYPT_H #include #endif ]) AC_CHECK_DECLS([mbrtowc, wcrtomb, wcwidth, wcswidth],,, [ #if HAVE_WCHAR_H #include #endif ]) dnl! the strsignal function is usually defined in dnl! but is sometimes defined in AC_CHECK_DECLS([strsignal],,, [ #if HAVE_STRING_H #include #include #endif ]) dnl! dnl! Check to see if wint_t is defined. dnl! The ANSI C standard states that this symbol shall be defined dnl! by and . The GNU people also define it in dnl! , but this is incorrect. dnl! AC_MSG_CHECKING([for wint_t]) AC_TRY_COMPILE([ #ifdef HAVE_WCHAR_H #include #endif ], [ wint_t x; ], AC_DEFINE(HAVE_WINT_T,1, [Define this symbol of your system has the wint_t type defined. It is usually in or .]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))dnl dnl! dnl! Check to see if mbstate_t is defined. dnl! AC_MSG_CHECKING([for mbstate_t]) AC_TRY_COMPILE([ #include #ifdef HAVE_STDDEF_H #include #endif /* Solaris bug 1250837: include wchar.h before widec.h */ #ifdef HAVE_WCHAR_H #include #endif #ifdef HAVE_WIDEC_H #include #endif #ifdef HAVE_WCTYPE_H #include #endif ], [ mbstate_t x; return sizeof x;], AC_DEFINE(HAVE_MBSTATE_T,1, [Define this symbol of your system has the mbstate_t type defined. It is usually in or .]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))dnl dnl! dnl! Test to see if iswprint is available *and* works. dnl! AC_MSG_CHECKING([for working iswprint]) AC_TRY_RUN([ #include /* Solaris bug 1250837: include wchar.h before widec.h */ #ifdef HAVE_WCHAR_H #include #endif #ifdef HAVE_WIDEC_H #include #endif #ifdef HAVE_WCTYPE_H #include #endif int main(int argc, char **argv){ return(iswprint('a') == 0);}] , AC_DEFINE(HAVE_ISWPRINT,1, [Define this symbol of your system has iswprint() AND it works.]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no), AC_MSG_RESULT(cross))dnl dnl! dnl! Test to see if getpgrp() or getpgrp(0) should be used to dnl! discover the process group of the current process. dnl! AC_MSG_CHECKING([for appropriate getpgrp argument]) AC_TRY_RUN([ int main(int argc, char **argv) { #ifdef HAVE_GETPGRP if (getpgrp(32767) == getpgrp(0)) return(2); #endif return(0); }] , AC_DEFINE(CONF_getpgrp_arg, 0, [Set this to a suitable argument for the getpgrp function to discover the process group of the current process.]) AC_MSG_RESULT(zero), AC_DEFINE(CONF_getpgrp_arg, []) AC_MSG_RESULT(empty), AC_MSG_RESULT(cross)) dnl! dnl! Test to see if the pw_comment field exists in dnl! the passwd struct defined in the include file. dnl! AC_MSG_CHECKING([for pw_comment in struct passwd]) AC_TRY_COMPILE([ #include #include ], [ struct passwd *pw; pw = getpwnam("root"); printf("%s\n", pw->pw_comment); ], AC_DEFINE(HAVE_pw_comment,1, [Define this symbol if your system has the pw_comment field in the passwd struct defined in .]) AC_MSG_RESULT(yes),AC_MSG_RESULT(no))dnl dnl! dnl! Test to see if the tm_zone field exists in dnl! the struct tm defined in the include file. dnl! AC_MSG_CHECKING([for tm_zone in struct tm]) AC_TRY_COMPILE([ #include #ifdef TIME_WITH_SYS_TIME #include #include #else #ifdef HAVE_SYS_TIME_H #include #else #include #endif #endif], [struct tm *tm; printf("%s\n", tm->tm_zone);], AC_DEFINE(HAVE_tm_zone,1, [Define this symbol if your system has the tm_zone field in the tm struct defined in .]) AC_MSG_RESULT(yes),AC_MSG_RESULT(no))dnl dnl! dnl! Test to find a Bourne shell which understands functions dnl! AC_MSG_CHECKING([for a Bourne shell which understands functions]) if test "z$SH" = "z"; then if test -f /bin/sh5; then SH=/bin/sh5 else SH=/bin/sh fi fi AC_SUBST(SH) AC_DEFINE_UNQUOTED(CONF_SHELL, ["$SH"], [Set this to be the absolute path of a Bourne shell which understands functions.]) AC_MSG_RESULT($SH) dnl! dnl! Evaluate some of the variables, to remove ${prefix} references. dnl! This way, they can be used in C programs and Roff input. dnl! Make sure that aegis is mentioned in the libdir and datadir paths; dnl! add it if it is not already there. dnl! test "x$prefix" = xNONE && prefix="${ac_default_prefix-/usr/local}" test "x$exec_prefix" = xNONE && exec_prefix="$prefix" eval "bindir=$bindir" eval "datarootdir=$datarootdir" eval "datadir=$datadir" eval "libdir=$libdir" eval "mandir=$mandir" eval "sharedstatedir=$sharedstatedir" eval "sysconfdir=$sysconfdir" dnl! dnl! support for NLSDIR substitution dnl! and ./configure --with-nlsdir=path option dnl! AC_ARG_WITH(nlsdir, [ --with-nlsdir=PATH specify where the locale files should go]) if test "x$NLSDIR" = "x"; then if test "x$with_nlsdir" != "x"; then NLSDIR=$with_nlsdir else NLSDIR=${datarootdir}/locale fi fi eval "NLSDIR=$NLSDIR" AC_SUBST(NLSDIR) dnl! dnl! See if there is already existing library files dnl! Use uid/gid if so, otherwise use 3/3 dnl! dnl! Cygwin always runs in "single user" mode, so this test isn't dnl! useful. Just default the values to the preferred ones. dnl! if test "x$AEGIS_UID" = "x"; then AC_MSG_CHECKING([for owner of aegis library files]) AEGIS_UID=3 AEGIS_GID=3 if test "$OSTYPE" != "cygwin32" -a "$OSTYPE" != "cygwin" ; then if test -f ${sharedstatedir}/lockfile -o -f ${libdir}/lockfile ; then cat > conftest.$ac_ext << 'EOF' #line __oline__ "configure" #include #include #include main(int ac, char **av){struct stat st; if (stat(*(av+1),&st)!=0)return(1); printf("%d\n", ac>2?st.st_gid:st.st_uid);return(0);} EOF if AC_TRY_EVAL(ac_link); then if maybe=`./conftest ${sharedstatedir}/lockfile`; then AEGIS_UID=$maybe else if maybe=`./conftest ${libdir}/lockfile`; then AEGIS_UID=$maybe fi fi if maybe=`./conftest ${sharedstatedir}/lockfile gid`; then AEGIS_GID=$maybe else if maybe=`./conftest ${libdir}/lockfile gid`; then AEGIS_GID=$maybe fi fi fi rm -rf conftest* fi fi AC_SUBST(AEGIS_UID) AC_SUBST(AEGIS_GID) AC_MSG_RESULT([$AEGIS_UID, $AEGIS_GID]) fi dnl! dnl! If the libz.h is not present, Aegis will fail to compile. dnl! If the -lz is not present, Aegis will fail to link. dnl! if test "$ac_cv_lib_z_gzopen" != "yes" -o "$ac_cv_header_zlib_h" != "yes" then AC_MSG_RESULT([ You need to install the GNU zlib compression library, and then re-run this configure script. Remember to use \`\`rm config.cache'' before you do.]) fi dnl! dnl! If the curl/curl.h and -lcurl are not present, remote files are dnl! inaccessable. dnl! if test "$ac_cv_lib_curl_curl_multi_perform" != "yes" -o \ "$ac_cv_header_curl_curl_h" != "yes" then AC_MSG_RESULT([ You may wish to install the Curl library, used to access remote files. Don't Panic: this library is optional, nothing will break, but you will not be able to use all of aedist's functions. If you choose to install the Curl library, first use \`\`rm config.cache'', and then re-run this configure script.]) fi dnl! dnl! Warn them about UUID libraries. dnl! UUID_OK=0 if test "$ac_cv_func_uuid_generate" = "yes" \ -a "$ac_cv_func_uuid_unparse" = "yes" then UUID_OK=1 fi if test "$ac_cv_func_uuid_create" = "yes" \ -a "$ac_cv_func_uuid_make" = "yes" \ -a "$ac_cv_func_uuid_export" = "yes" then UUID_OK=1 fi if test "$ac_cv_func_uuid_create" = "yes" \ -a "$ac_cv_func_uuid_to_string" = "yes" then UUID_OK=1 fi AC_DEFINE_UNQUOTED([UUID_OK], [$UUID_OK], [Define this symbol if your system has a working UUID implementation.]) if test "$UUID_OK" != "1" then AC_MSG_RESULT([ You may wish to install one of the following UUID library flavors: * e2fsprogs implementation * OSSP implementation Don't Panic: this library is optional, nothing will break.]) dnl! ' <-- this is a work-around for a vim syntax highlighting bug OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ ONE of the following commands may be used to install it: sudo apt-get install uuid-dev sudo apt-get install libossp-uuid-dev ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install uuid-devel ]) OK=yes fi fi dnl! dnl! If the gettext function exists, assume the msgfmt program does dnl! also, and arrange for the Makefile to install the .mo files dnl! from the .po files. dnl! po_files=no if test "$ac_cv_func_gettext" = "yes" then if test -n "$MSGFMT" then po_files=yes fi fi if test "$po_files" = "no" then AC_MSG_RESULT([ Aegis will emit much more useful error messages if you install GNU Gettext and then re-run this ./configure script. Remember to use \`\`rm config.cache'' before you do. Homepage: http://www.gnu.org/software/gettext/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install gettext ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install gettext ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the gettext package. ]) fi fi AC_SUBST(po_files) dnl! dnl! If the soelim program exists, and understands the -I option, dnl! arrange for the Makefile to install the .ps files from the dnl! documentation source files. dnl! if test -n "$SOELIM" then if $SOELIM -I. /dev/null > /dev/null 2>&1 then : nothing else AC_MSG_RESULT([ The $SOELIM program does not understand the -I option. GNU Groff 1.15 or later works correctly. See the BUILDING file for details.]) GROFF= fi else GROFF= fi if test -n "$REFER" then : nothing else # It turns out that somehow Debian systems get a half-assed groff # install from build-essential. Looking for "refer" is a better # test of the completeness of the groff install than either # "groff" or "soelim" on their own, plus it's needed for the build. GROFF= fi if test -n "$GROFF" then HAVE_GROFF=yes else HAVE_GROFF=no AC_MSG_RESULT([ The Aegis documentation set and manual pages will be formatted and installed if you first install GNU Groff 1.15 or later and then re-run this ./configure script. Remember to use \`\`rm config.cache'' before you do. Homepage: http://www.gnu.org/software/groff/]) OK=no if apt-get --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo apt-get install groff ]) OK=yes fi if yum --version > /dev/null 2> /dev/null; then AC_MSG_RESULT([ The following command may be used to install it: sudo yum install groff ]) OK=yes fi if test "$OK" != "yes"; then AC_MSG_RESULT([ If you are using a package based install, you will need the groff package. ]) fi fi AC_SUBST(HAVE_GROFF) if test "$HAVE_GNU_DIFF" != "yes" then AC_MSG_RESULT([ Some of the tests in the Aegis test suite (133, 136, 167, 168, 180, 195) assume the presence of GNU diff. Some functionality will be more limited without it. You may wish to install GNU Diff 2.8 or later and then re-run this ./configure script. Remember to use \`\`rm config.cache'' before you do. ]) fi dnl! dnl! If the $host is Linux then we add -rdynamic to LD_FLAGS in order dnl! to make make backtrace return function names. dnl! case $host in i?86-*-gnu* | *amd64* | *86_64* ) LDFLAGS="$LDFLAGS -rdynamic" ;; esac AC_SUBST(LDFLAGS) # program prefix is the bit to add to the start of the name if test ${PROGRAM_PREFIX-NONE} != NONE -a ${program_prefix-NONE} != NONE; then PROGRAM_PREFIX=${program_prefix} fi AC_SUBST(PROGRAM_PREFIX) # program suffix is the bit to add to the end of the name (before .exe) if test ${PROGRAM_SUFFIX-NONE} != NONE -a ${program_suffix-NONE} != NONE; then PROGRAM_SUFFIX=${program_suffix} fi AC_SUBST(PROGRAM_SUFFIX) AH_TOP( [/* * aegis - project change supervisor * Copyright (C) 1991-2008, 2010, 2012, 2014 Peter Miller * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see * . */ #ifndef COMMON_CONFIG_H #define COMMON_CONFIG_H ]) AH_BOTTOM( [/* * This defines the file creation mask. See umask(2) for more information. * Some bits are not available, because aegis is _meant_ to be paranoid. * Owner: always has read, write and search/exec. * Group: always has read and search/exec, so that developers can get at the * baseline. There is never group write, because then developers * could trash the baseline, which is counter-productive. * Others: There is never others write, for the same reason as group. * Others read and search/execute is configurable. * * The permissions mask in binary looks like * 000 010 X1X * where the Xs may be configured. * * Alternatives for default umask are thus * 027 others get nothing * 026 others can execute the results if they know where they are going * 022 others can see and copy and execute anything * 023 don't do this (why is left as an exersize for the reader) * * Projects have a configurable umask, this is just the default. * See aepattr(1) for more information. */ #define DEFAULT_UMASK 026 /* * These symbols define where non-system user IDs start, * and where non-system group IDs start. * This is mostly to ensure that accounts "root" and "bin" * and "uucp" are not project owners. */ #define AEGIS_MIN_UID 100 #define AEGIS_MIN_GID 10 /* * There is more to do, but we need to insulate it from config.status, * because it screws up the #undef lines. They are all implications of * the above information, so there is no need for you to edit the file, * if you are configuring Aegis manually. */ #include #endif /* COMMON_CONFIG_H */]) AC_OUTPUT(Makefile lib/cshrc lib/profile etc/libdir.so common/libdir.cc etc/compat.2.3) dnl! vim: set ts=8 sw=4 et :