configure.ac 5.47 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
SHLIBMAJOR=1
12
13
SHLIBMINOR=0

14
15
AC_CANONICAL_HOST

16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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
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
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
192
AH_TEMPLATE([HAVE_LIBCRYPTO],
	    [Define if you have openssl's libcrypto (used for benchmarking)])

OPENSSL_LIBFLAGS=''

193
# Check for openssl's libcrypto (used only for benchmarking)
194
195
196
197
198
199
AC_CHECK_LIB(crypto, BF_ecb_encrypt,
  [AC_DEFINE(HAVE_LIBCRYPTO)
   OPENSSL_LIBFLAGS='-lcrypto'
])

AC_SUBST(OPENSSL_LIBFLAGS)
200

Niels Möller's avatar
Niels Möller committed
201
202
# Set these flags *last*, or else the test programs won't compile
if test x$GCC = xyes ; then
203
204
205
206
207
208
209
210
211
  # 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
212
213
214

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

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