configure.ac 5.7 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.

Niels Möller's avatar
Niels Möller committed
5
AC_INIT([nettle], [1.10])
6
AC_CONFIG_SRCDIR([arcfour.c])
7
AC_PREREQ(2.50)
8
AM_INIT_AUTOMAKE
9
AM_CONFIG_HEADER([config.h])
10

Niels Möller's avatar
Niels Möller committed
11
SHLIBMAJOR=2
12
SHLIBMINOR=1
13

14 15
AC_CANONICAL_HOST

16 17 18 19 20 21
# 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
22
  CPPFLAGS="$CPPFLAGS -I`echo $with_include_path | sed 's/:/ -I/g'`"
23 24 25 26 27 28 29
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
30
  LDFLAGS="$LDFLAGS -L`echo $with_lib_path | sed 's/:/ -L/g'`"
31 32
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
52 53 54 55 56 57 58 59 60 61 62 63 64 65

# When $CC foo.c -o foo creates both foo and foo.exe, autoconf picks
# up the foo.exe and sets exeext to .exe. That is correct for cygwin,
# which has some kind of magic link from foo to foo.exe, but not for
# rntcl. A better check for the cygwin case would check if the
# contents of foo and foo.exe are equal; in the rntcl case, foo is a
# sh script, and foo.exe is a windows executable.

if "x$CC" = xrntcl ; then
    AC_MSG_NOTICE([Compiling with rntcl; clearing exeext])
    ac_exeext=''
    ac_cv_exeext=''
fi

Niels Möller's avatar
Niels Möller committed
66
AC_PROG_MAKE_SET
Niels Möller's avatar
Niels Möller committed
67
AC_PROG_RANLIB
Niels Möller's avatar
Niels Möller committed
68
AM_PROG_CC_STDC
Niels Möller's avatar
Niels Möller committed
69

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

74
# Select assembler code
75
asm_path=
76 77
case "$host" in
  [i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-*])
78
    asm_path=x86
79 80
    ;;
  *sparc*-*-*)
81
    asm_path=sparc
82
    ;;
83 84 85
  *)
    enable_assembler=no
    ;;
86 87
esac

88
# echo "enable_assembler: $enable_assembler, asm_path: $asm_path"
89

90
if test "x$enable_assembler" = xyes ; then
91
  if test -n "$asm_path"; then
Niels Möller's avatar
Niels Möller committed
92
    AC_MSG_NOTICE([Looking for assembler files in $asm_path/.])
93
    found=no
94
    for tmp_f in aes.asm aes-encrypt.asm aes-decrypt.asm \
95
		 arcfour-crypt.asm sha1-compress.asm machine.m4; do
96 97
#       echo "Looking for $srcdir/$asm_path/$tmp_f"
      if test -f "$srcdir/$asm_path/$tmp_f"; then
98
#        echo found
99
        found=yes
100
        AC_CONFIG_LINKS($tmp_f:$asm_path/$tmp_f)
101 102 103 104 105 106 107 108 109
      fi
    done
    if test "$found" = no; then
      enable_assembler=no
      AC_MSG_WARN([No assembler files found.])
    fi
  fi
fi

110 111
SHLIBCFLAGS="-fpic"
SHLIBFORLINK=libnettle.so
112 113
SHLIBSONAME='$(SHLIBFORLINK).$(SHLIBMAJOR)'
SHLIBFILE='$(SHLIBSONAME).$(SHLIBMINOR)'
114 115
SHLIBLINK='$(CC) $(LDFLAGS) -shared -Wl,-soname=$(SHLIBSONAME)'

116 117
echo "enable_shared: $enable_shared"
     
118 119 120
if test "x$enable_shared" = xyes ; then
  SHLIBTARGET='$(SHLIBFORLINK)'
  SHLIBINSTALL=install-shared
121 122 123
else
  SHLIBTARGET=''
  SHLIBINSTALL=''
124 125
fi

126 127 128
AM_CONDITIONAL([ENABLE_ASSEMBLER], [test x$enable_assembler = xyes])
AM_CONDITIONAL([ENABLE_SHARED],  [test x$enable_shared = xyes])

129
AC_SUBST(SHLIBCFLAGS)
130 131
AC_SUBST(SHLIBMAJOR)
AC_SUBST(SHLIBMINOR)
132 133 134 135
AC_SUBST(SHLIBFORLINK)
AC_SUBST(SHLIBSONAME)
AC_SUBST(SHLIBFILE)
AC_SUBST(SHLIBLINK)
136 137
AC_SUBST(SHLIBTARGET)
AC_SUBST(SHLIBINSTALL)
138
	
Niels Möller's avatar
Niels Möller committed
139
AC_PATH_PROG(M4, m4, m4)
140

141
# Checks for typedefs, structures, and compiler characteristics.
Niels Möller's avatar
Niels Möller committed
142
AC_C_CONST
Niels Möller's avatar
Niels Möller committed
143 144 145 146 147
AC_C_INLINE
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME

Niels Möller's avatar
Niels Möller committed
148
LSH_FUNC_ALLOCA
Niels Möller's avatar
Niels Möller committed
149

Niels Möller's avatar
Niels Möller committed
150
# Needed by the supplied memcmp.c
Niels Möller's avatar
Niels Möller committed
151
AC_C_BIGENDIAN
Niels Möller's avatar
Niels Möller committed
152 153
AC_REPLACE_FUNCS(memxor)

Niels Möller's avatar
Niels Möller committed
154
LSH_GCC_ATTRIBUTES
Niels Möller's avatar
Niels Möller committed
155

156 157 158
# According to Simon Josefsson, looking for uint32_t and friends in
# sys/types.h is needed on some systems, in particular cygwin.
AX_CREATE_STDINT_H([nettle-types.h], [sys/types.h])
159

160 161 162 163
# 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.
164 165 166 167 168
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)
169
  RSA_EXAMPLES='rsa-keygen$(EXEEXT) rsa-sign$(EXEEXT) rsa-verify$(EXEEXT) rsa-encrypt$(EXEEXT) rsa-decrypt$(EXEEXT)'
170 171
else
  RSA_EXAMPLES=""
172 173 174
fi

AH_TEMPLATE([WITH_PUBLIC_KEY], [Define to enable public key features])
175
AC_SUBST(RSA_EXAMPLES)
176

177 178
# Add -R flags needed to run programs linked with gmp
LSH_RPATH_FIX
179

180 181 182 183 184
AH_TEMPLATE([HAVE_LIBCRYPTO],
	    [Define if you have openssl's libcrypto (used for benchmarking)])

OPENSSL_LIBFLAGS=''

185
# Check for openssl's libcrypto (used only for benchmarking)
186 187 188 189 190 191
AC_CHECK_LIB(crypto, BF_ecb_encrypt,
  [AC_DEFINE(HAVE_LIBCRYPTO)
   OPENSSL_LIBFLAGS='-lcrypto'
])

AC_SUBST(OPENSSL_LIBFLAGS)
192

Niels Möller's avatar
Niels Möller committed
193 194
# Set these flags *last*, or else the test programs won't compile
if test x$GCC = xyes ; then
195 196 197 198 199 200 201 202 203
  # 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
204 205 206

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

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