configure.ac 5.27 KB
Newer Older
Niels Möller's avatar
Niels Möller committed
1 2
dnl -*- mode: shell-script; sh-indentation: 2; -*-

3 4
dnl Process this file with autoconf to produce a configure script.

5 6
AC_INIT([nettle], [1.6])
AC_CONFIG_SRCDIR([arcfour.c])
7
AC_PREREQ(2.50)
8
AM_INIT_AUTOMAKE
9
AM_CONFIG_HEADER([config.h])
10

11 12 13
SHLIBMAJOR=0
SHLIBMINOR=0

14 15
AC_CANONICAL_HOST

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
# Command line options
AC_ARG_WITH(include-path,
  AC_HELP_STRING([--with-include-path], [A colon-separated list of directories to search for include files]),,
  [with_include_path=''])

if test x$with_include_path != x ; then
  CPPFLAGS="$CPPFLAGS -I `echo $with_include_path | sed 's/:/ -I /g'`"
fi

AC_ARG_WITH(lib-path,
  AC_HELP_STRING([--with-lib-path], [A colon-separated list of directories to search for libraries]),,
  [with_lib_path=''])

if test x$with_lib_path != x ; then
  LDFLAGS="-L `echo $with_lib_path | sed 's/:/ -L /g'`"
fi

33 34 35 36
AC_ARG_ENABLE(public-key,
  AC_HELP_STRING([--disable-public-key], [Disable public key algorithms]),,
  [enable_public_key=yes])

37
AC_ARG_ENABLE(assembler,
38 39
  AC_HELP_STRING([--disable-assembler],[Disable assembler code]),,
  [enable_assembler=yes])
40

41
AC_ARG_ENABLE(shared,
42
  AC_HELP_STRING([--enable-shared], [Build a shared library]),,
43 44
  [enable_shared=no])

45 46 47 48 49
LSH_RPATH_INIT([`echo $with_lib_path | sed 's/:/ /g'` \
    `echo $exec_prefix | sed "s@^NONE@$prefix/lib@g" | sed "s@^NONE@$ac_default_prefix/lib@g"` \
    /usr/local/lib /sw/local/lib /sw/lib \
    /usr/gnu/lib /opt/gnu/lib /sw/gnu/lib /usr/freeware/lib /usr/pkg/lib])

50
# Checks for programs.
Niels Möller's avatar
Niels Möller committed
51
AC_PROG_CC
Niels Möller's avatar
Niels Möller committed
52
AC_PROG_MAKE_SET
Niels Möller's avatar
Niels Möller committed
53
AC_PROG_RANLIB
Niels Möller's avatar
Niels Möller committed
54
AM_PROG_CC_STDC
Niels Möller's avatar
Niels Möller committed
55

Niels Möller's avatar
Niels Möller committed
56 57 58
if test "x$am_cv_prog_cc_stdc" = xno ; then
  AC_ERROR([the C compiler doesn't handle ANSI-C])
fi
59

60
# Select assembler code
61
asm_path=
62 63
case "$host" in
  [i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-*])
64
    asm_path=x86
65 66
    ;;
  *sparc*-*-*)
67
    asm_path=sparc
68 69 70
    ;;
esac

71
# echo "enable_assembler: $enable_assembler, asm_path: $asm_path"
72

73
if test "x$enable_assembler" = xyes ; then
74
  if test -n "$asm_path"; then
Niels Möller's avatar
Niels Möller committed
75
    AC_MSG_NOTICE([Looking for assembler files in $asm_path/.])
76
    found=no
Niels Möller's avatar
Niels Möller committed
77
    for tmp_f in aes.asm aes-encrypt.asm aes-decrypt.asm machine.m4; do
78 79
#       echo "Looking for $srcdir/$asm_path/$tmp_f"
      if test -f "$srcdir/$asm_path/$tmp_f"; then
80
#        echo found
81
        found=yes
82
        AC_CONFIG_LINKS($tmp_f:$asm_path/$tmp_f)
83 84 85 86 87 88 89 90 91
      fi
    done
    if test "$found" = no; then
      enable_assembler=no
      AC_MSG_WARN([No assembler files found.])
    fi
  fi
fi

92 93
SHLIBCFLAGS="-fpic"
SHLIBFORLINK=libnettle.so
94 95
SHLIBSONAME='$(SHLIBFORLINK).$(SHLIBMAJOR)'
SHLIBFILE='$(SHLIBSONAME).$(SHLIBMINOR)'
96 97
SHLIBLINK='$(CC) $(LDFLAGS) -shared -Wl,-soname=$(SHLIBSONAME)'

98 99
echo "enable_shared: $enable_shared"
     
100 101 102
if test "x$enable_shared" = xyes ; then
  SHLIBTARGET='$(SHLIBFORLINK)'
  SHLIBINSTALL=install-shared
103 104 105
else
  SHLIBTARGET=''
  SHLIBINSTALL=''
106 107 108
fi

AC_SUBST(SHLIBCFLAGS)
109 110
AC_SUBST(SHLIBMAJOR)
AC_SUBST(SHLIBMINOR)
111 112 113 114
AC_SUBST(SHLIBFORLINK)
AC_SUBST(SHLIBSONAME)
AC_SUBST(SHLIBFILE)
AC_SUBST(SHLIBLINK)
115 116
AC_SUBST(SHLIBTARGET)
AC_SUBST(SHLIBINSTALL)
117
	
Niels Möller's avatar
Niels Möller committed
118
AC_PATH_PROG(M4, m4, m4)
119

120
# Checks for typedefs, structures, and compiler characteristics.
Niels Möller's avatar
Niels Möller committed
121
AC_C_CONST
Niels Möller's avatar
Niels Möller committed
122 123 124 125 126
AC_C_INLINE
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME

127
# Needed by the supplied memcmp.c
Niels Möller's avatar
Niels Möller committed
128 129 130 131
AC_C_BIGENDIAN

AC_REPLACE_FUNCS(memxor)

Niels Möller's avatar
Niels Möller committed
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
# Check for gcc's __attribute__ construction
AC_CACHE_CHECK(for __attribute__,
	       lsh_cv_c_attribute,
[ AC_TRY_COMPILE([
#include <stdlib.h>
],
[
static void foo(void) __attribute__ ((noreturn));

static void __attribute__ ((noreturn))
foo(void)
{
  exit(1);
}
],
lsh_cv_c_attribute=yes,
lsh_cv_c_attribute=no)])

AH_TEMPLATE([HAVE_GCC_ATTRIBUTE],
	    [Define if the compiler understands __attribute__])
if test "x$lsh_cv_c_attribute" = "xyes"; then
  AC_DEFINE(HAVE_GCC_ATTRIBUTE)
fi

AH_BOTTOM(
[#if __GNUC__ && HAVE_GCC_ATTRIBUTE
# define NORETURN __attribute__ ((__noreturn__))
# define PRINTF_STYLE(f, a) __attribute__ ((__format__ (__printf__, f, a)))
# define UNUSED __attribute__ ((__unused__))
#else
# define NORETURN
# define PRINTF_STYLE(f, a)
# define UNUSED
#endif
])

168 169 170 171
# Checks for libraries
AC_CHECK_LIB(gmp, __gmpz_getlimbn,,
    [AC_MSG_WARN(
[GNU MP not found, or not 3.1 or up, see http://www.swox.com/gmp.
172 173 174 175 176
Support for public key algorithms will be unavailable.])]
    enable_public_key=no)

if test "x$enable_public_key" = xyes ; then
  AC_DEFINE(WITH_PUBLIC_KEY)
177 178 179
  RSA_EXAMPLES="rsa-keygen rsa-sign rsa-verify"
else
  RSA_EXAMPLES=""
180 181 182
fi

AH_TEMPLATE([WITH_PUBLIC_KEY], [Define to enable public key features])
183
AC_SUBST(RSA_EXAMPLES)
184

185 186
# Add -R flags needed to run programs linked with gmp
LSH_RPATH_FIX
187

188 189 190 191
# Check for openssl's libcrypto (used only for benchmarking)
AC_CHECK_LIB(crypto, BF_ecb_encrypt)
LSH_RPATH_FIX

Niels Möller's avatar
Niels Möller committed
192 193
# Set these flags *last*, or else the test programs won't compile
if test x$GCC = xyes ; then
194 195 196 197 198 199 200 201 202
  # Using -ggdb3 makes (some versions of) Redhat's gcc-2.96 dump core
  if "$CC" --version | grep '^2\.96$' 1>/dev/null 2>&1; then
    true
  else
    CFLAGS="$CFLAGS -ggdb3"
  fi
  CFLAGS="$CFLAGS -Wall -W \
  -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes \
  -Wpointer-arith -Wbad-function-cast -Wnested-externs"
Niels Möller's avatar
Niels Möller committed
203 204 205

# Don't enable -Wcast-align as it results in tons of warnings in the
# DES code. And when using stdio.
206 207
# Don't enable -Waggregate-return, as that causes warnings for glibc
# inttypes.h.
Niels Möller's avatar
Niels Möller committed
208
fi
Niels Möller's avatar
Niels Möller committed
209

Niels Möller's avatar
Niels Möller committed
210
AC_OUTPUT(Makefile tools/Makefile testsuite/Makefile examples/Makefile config.m4)
211