1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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
168
169
170
171
172
173
174
175
176
|
dnl -*- mode: shell-script; sh-indentation: 2; -*-
dnl $Id$
dnl Process this file with autoconf to produce a configure script.
AC_INIT([nettle], [1.6])
AC_CONFIG_SRCDIR([arcfour.c])
AC_PREREQ(2.50)
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER([config.h])
SHLIBMAJOR=0
SHLIBMINOR=0
AC_CANONICAL_HOST
# 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
AC_ARG_ENABLE(public-key,
AC_HELP_STRING([--disable-public-key], [Disable public key algorithms]),,
[enable_public_key=yes])
AC_ARG_ENABLE(assembler,
AC_HELP_STRING([--disable-assembler],[Disable assembler code]),,
[enable_assembler=yes])
AC_ARG_ENABLE(shared,
AC_HELP_STRING([--enable-shared], [Build a shared library]),,
[enable_shared=no])
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])
# Checks for programs.
AC_PROG_CC
AC_PROG_MAKE_SET
AC_PROG_RANLIB
AM_PROG_CC_STDC
if test "x$am_cv_prog_cc_stdc" = xno ; then
AC_ERROR([the C compiler doesn't handle ANSI-C])
fi
# Select assembler code
asm_path=
case "$host" in
[i?86*-*-* | k[5-8]*-*-* | pentium*-*-* | athlon-*-*])
asm_path=x86
;;
*sparc*-*-*)
asm_path=sparc
;;
esac
# echo "enable_assembler: $enable_assembler, asm_path: $asm_path"
if test "x$enable_assembler" = xyes ; then
if test -n "$asm_path"; then
AC_MSG_NOTICE([Looking for assembler files in $asm_path/.])
found=no
for tmp_f in aes.asm aes-encrypt.asm aes-decrypt.asm machine.m4; do
# echo "Looking for $srcdir/$asm_path/$tmp_f"
if test -f "$srcdir/$asm_path/$tmp_f"; then
# echo found
found=yes
AC_CONFIG_LINKS($tmp_f:$asm_path/$tmp_f)
fi
done
if test "$found" = no; then
enable_assembler=no
AC_MSG_WARN([No assembler files found.])
fi
fi
fi
SHLIBCFLAGS="-fpic"
SHLIBFORLINK=libnettle.so
SHLIBSONAME='$(SHLIBFORLINK).$(SHLIBMAJOR)'
SHLIBFILE='$(SHLIBSONAME).$(SHLIBMINOR)'
SHLIBLINK='$(CC) $(LDFLAGS) -shared -Wl,-soname=$(SHLIBSONAME)'
echo "enable_shared: $enable_shared"
if test "x$enable_shared" = xyes ; then
SHLIBTARGET='$(SHLIBFORLINK)'
SHLIBINSTALL=install-shared
else
SHLIBTARGET=''
SHLIBINSTALL=''
fi
AC_SUBST(SHLIBCFLAGS)
AC_SUBST(SHLIBMAJOR)
AC_SUBST(SHLIBMINOR)
AC_SUBST(SHLIBFORLINK)
AC_SUBST(SHLIBSONAME)
AC_SUBST(SHLIBFILE)
AC_SUBST(SHLIBLINK)
AC_SUBST(SHLIBTARGET)
AC_SUBST(SHLIBINSTALL)
AC_PATH_PROG(M4, m4, m4)
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
# Needed by the supplied memcmp.c
AC_C_BIGENDIAN
AC_REPLACE_FUNCS(memxor)
# 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.
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)
RSA_EXAMPLES="rsa-keygen rsa-sign rsa-verify"
else
RSA_EXAMPLES=""
fi
AH_TEMPLATE([WITH_PUBLIC_KEY], [Define to enable public key features])
AC_SUBST(RSA_EXAMPLES)
# Add -R flags needed to run programs linked with gmp
LSH_RPATH_FIX
# Check for openssl's libcrypto (used only for benchmarking)
AC_CHECK_LIB(crypto, BF_ecb_encrypt)
LSH_RPATH_FIX
# Set these flags *last*, or else the test programs won't compile
if test x$GCC = xyes ; then
# 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"
# Don't enable -Wcast-align as it results in tons of warnings in the
# DES code. And when using stdio.
# Don't enable -Waggregate-return, as that causes warnings for glibc
# inttypes.h.
fi
AC_OUTPUT(Makefile testsuite/Makefile examples/Makefile config.m4)
|