diff options
Diffstat (limited to 'configure.in')
-rw-r--r-- | configure.in | 115 |
1 files changed, 96 insertions, 19 deletions
diff --git a/configure.in b/configure.in index a9975bf6..6ea0a81a 100644 --- a/configure.in +++ b/configure.in @@ -15,11 +15,15 @@ AM_CONFIG_HEADER(config.h) VERSION=`cat $srcdir/VERSION` PACKAGE=gnupg ALL_LINGUAS="de es_ES fr it pl pt_BR ru" +static_modules="sha1 md5 rmd160" AC_SUBST(VERSION) AC_SUBST(PACKAGE) AC_DEFINE_UNQUOTED(VERSION, "$VERSION") AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") +MODULES_IN_CIPHER=`awk '/# MODULES: / { for(i=3;i<=NF;i++) print $i}' \ + $srcdir/cipher/Makefile.am` + AC_MSG_CHECKING([whether use of /dev/random is requested]) AC_ARG_ENABLE(dev-random, [ --disable-dev-random disable the use of dev random], @@ -91,6 +95,8 @@ if test "$GCC" = yes; then CFLAGS="$CFLAGS -Wall" fi +try_gettext=yes +try_gdbm=yes case "${target}" in i386--mingw32) # special stuff for Windoze NT @@ -99,9 +105,19 @@ case "${target}" in CPP="i386--mingw32-gcc -E" RANLIB="i386--mingw32-ranlib" ac_cv_have_dev_random=no - AC_DEFINE(USE_RNDW32) AC_DEFINE(USE_ONLY_8DOT3) AC_DEFINE(HAVE_DRIVE_LETTERS) + AC_DEFINE(HAVE_DOSISH_SYSTEM) + try_gettext="no" + try_gdbm="no" + ;; + i386-emx-os2) + # OS/2 with the EMX environment + ac_cv_have_dev_random=no + AC_DEFINE(HAVE_DRIVE_LETTERS) + AC_DEFINE(HAVE_DOSISH_SYSTEM) + try_gettext="no" + try_gdbm="no" ;; *-*-hpux*) if test -z "$GCC" ; then @@ -126,6 +142,9 @@ case "${target}" in i386--mingw32) PRINTABLE_OS_NAME="MingW32" ;; + i386-emx-os2) + PRINTABLE_OS_NAME="OS/2" + ;; *-linux*) PRINTABLE_OS_NAME="GNU/Linux" ;; @@ -154,9 +173,13 @@ AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM") dnl Checks for libraries. +if test "$try_gettext" = yes; then AM_GNU_GETTEXT +fi +if test "$try_gdbm" = yes; then AC_CHECK_LIB(gdbm,gdbm_firstkey) +fi if test "$try_dynload" = yes ; then @@ -252,7 +275,6 @@ AC_CACHE_CHECK(for random device, ac_cv_have_dev_random, ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi]) if test "$ac_cv_have_dev_random" = yes; then AC_DEFINE(HAVE_DEV_RANDOM) - AC_DEFINE(USE_RNDLINUX) fi else AC_MSG_CHECKING(for random device) @@ -262,42 +284,93 @@ fi dnl -dnl Figure how to link the random modules +dnl Figure out the default linkage mode for cipher modules dnl +dnl (We always need a static rmd160) +static_modules="$static_modules rmd160" if test "$ac_cv_have_dev_random" = yes; then - AC_DEFINE(USE_RNDLINUX) - STATIC_RANDOM_OBJS="rndlinux.o" - DYNAMIC_RANDOM_MODS="" + static_modules="$static_modules rndlinux" else case "${target}" in i386--mingw32) - AC_DEFINE(USE_RNDW32) - STATIC_RANDOM_OBJS="" - DYNAMIC_RANDOM_MODS="" + static_modules="$static_modules rndw32" + ;; + i386-emx-os2) + static_modules="$static_modules rndos2" ;; m68k-atari-mint) - AC_DEFINE(USE_RNDATARI) - STATIC_RANDOM_OBJS="" - DYNAMIC_RANDOM_MODS="" + static_modules="$static_modules rndatari" ;; *) - AC_DEFINE(USE_RNDUNIX) - STATIC_RANDOM_OBJS="rndunix.o" - DYNAMIC_RANDOM_MODS="" + static_modules="$static_modules rndunix" ;; esac fi -AC_SUBST(STATIC_RANDOM_OBJS) -AC_SUBST(DYNAMIC_RANDOM_MODS) +dnl +dnl Parse the modules list and build the list +dnl of static and dymically linked modules +dnl +STATIC_CIPHER_NAMES="" +STATIC_CIPHER_OBJS="" +DYNAMIC_CIPHER_MODS="" +GNUPG_MSG_PRINT([dynamically linked cipher modules:]) +for name in $MODULES_IN_CIPHER; do + x="no" + for i in $static_modules; do + if test "$name" = "$i" ; then + x="yes" + fi + done; + if test $x = yes; then + STATIC_CIPHER_NAMES="$STATIC_CIPHER_NAMES $name" + STATIC_CIPHER_OBJS="$STATIC_CIPHER_OBJS $name.o" + else + DYNAMIC_CIPHER_MODS="$DYNAMIC_CIPHER_MODS $name" + GNUPG_MSG_PRINT([$name]) + fi +done +AC_MSG_RESULT() +AC_SUBST(STATIC_CIPHER_OBJS) +AC_SUBST(STATIC_CIPHER_NAMES) +AC_SUBST(DYNAMIC_CIPHER_MODS) + +dnl +dnl And build the constructor file +dnl +cat <<EOF >cipher/construct.c +/* automatically generated by configure - do not edit */ + +EOF +GNUPG_MSG_PRINT([statically linked cipher modules:]) +for name in $STATIC_CIPHER_NAMES; do + echo "void ${name}_constructor(void);" >>cipher/construct.c + GNUPG_MSG_PRINT([$name]) +done +AC_MSG_RESULT() +cat <<EOF >>cipher/construct.c + +void +cipher_modules_constructor(void) +{ + static int done = 0; + if( done ) + return; + done = 1; + +EOF +for name in $STATIC_CIPHER_NAMES; do + echo " ${name}_constructor();" >>cipher/construct.c +done +echo '}' >>cipher/construct.c + + dnl dnl Figure how to link the cipher modules dnl dnl (form now these are only dynamic) -STATIC_CIPHER_OBJS="" -DYNAMIC_CIPHER_MODS="twofish tiger" AC_SUBST(STATIC_CIPHER_OBJS) AC_SUBST(DYNAMIC_CIPHER_MODS) @@ -351,6 +424,10 @@ fi fi AC_SUBST(ZLIBS) +if echo "$VERSION" | grep '[a-zA-Z]' >/dev/null ; then + AC_DEFINE(IS_DEVELOPMENT_VERSION) +fi + GNUPG_DO_LINK_FILES |