configure.ac 16 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
AC_INIT([nettle], [2.2], [nettle-bugs@lists.lysator.liu.se])
6
AC_PREREQ(2.61)
7
8
9
10
AC_CONFIG_SRCDIR([arcfour.c])
# Needed to stop autoconf from looking for files in parent directories.
AC_CONFIG_AUX_DIR([.])

11
AC_CONFIG_HEADER([config.h])
12

13
14
LIBNETTLE_MAJOR=4
LIBNETTLE_MINOR=0
15

16
17
LIBHOGWEED_MAJOR=2
LIBHOGWEED_MINOR=0
18

19
20
AC_CANONICAL_HOST

21
22
23
24
25
26
# 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
27
  CPPFLAGS="$CPPFLAGS -I`echo $with_include_path | sed 's/:/ -I/g'`"
28
29
30
31
32
33
34
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
35
  LDFLAGS="$LDFLAGS -L`echo $with_lib_path | sed 's/:/ -L/g'`"
36
37
fi

38
39
40
41
AC_ARG_ENABLE(public-key,
  AC_HELP_STRING([--disable-public-key], [Disable public key algorithms]),,
  [enable_public_key=yes])

42
AC_ARG_ENABLE(assembler,
43
44
  AC_HELP_STRING([--disable-assembler],[Disable assembler code]),,
  [enable_assembler=yes])
45

46
AC_ARG_ENABLE(shared,
47
  AC_HELP_STRING([--enable-shared], [Build a shared library]),,
48
49
  [enable_shared=no])

50
51
52
53
54
AC_ARG_ENABLE(pic,
  AC_HELP_STRING([--disable-pic],
  [Do not try to compile library files as position independent code]),,
  [enable_pic=yes])

55
56
57
58
AC_ARG_ENABLE(openssl,
  AC_HELP_STRING([--disable-openssl], [Do not include openssl glue in the benchmark program]),,
  [enable_openssl=yes])
  
59
60
61
62
63
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])

64
# Checks for programs.
Niels Möller's avatar
Niels Möller committed
65
AC_PROG_CC
66
67
68
69
70
71
72
73

# 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.

Niels Möller's avatar
Niels Möller committed
74
if test "x$CC" = xrntcl ; then
75
    AC_MSG_NOTICE([Compiling with rntcl; clearing EXEEXT and disabling assembler])
76
77
    ac_exeext=''
    ac_cv_exeext=''
Niels Möller's avatar
Niels Möller committed
78
    EXEEXT=''
79
    enable_assembler=no
80
81
fi

82
83
84
85
86
87
88
89
# Used by the testsuite only
AC_PROG_CXX

AC_LANG_PUSH(C++)
AC_TRY_COMPILE([],[return 0;],[CXX_TESTS='cxx-test$(EXEEXT)'], [CXX_TESTS=''])
AC_SUBST([CXX_TESTS])
AC_LANG_POP

Niels Möller's avatar
Niels Möller committed
90
AC_PROG_MAKE_SET
Niels Möller's avatar
Niels Möller committed
91
AC_PROG_RANLIB
92
AC_CHECK_TOOL(NM, nm, strings)
93
94
# Used only for the GNU-stack configure test.
AC_CHECK_TOOL(OBJDUMP, objdump, false)
Niels Möller's avatar
Niels Möller committed
95

96
if test "x$ac_cv_prog_cc_stdc" = xno ; then
97
  AC_ERROR([the C compiler doesn't handle ANSI-C]) #'
Niels Möller's avatar
Niels Möller committed
98
fi
99

100
101
AC_PROG_INSTALL

102
103
104
105
# According to the autoconf manual, needs install-sh from
# autoconf-2.60 or automake-1.10 to avoid races.
AC_PROG_MKDIR_P

106
107
LSH_DEPENDENCY_TRACKING

108
if test x$enable_dependency_tracking = xyes ; then
109
110
111
  # Since the makefiles use include to get the dependency files, we must
  # make sure that the files exist. We generate some more files than are
  # actually needed.
112

113
114
  AC_CONFIG_COMMANDS([dummy-dep-files],
  [(cd "$srcdir" && find . -name '*.c' -print) \
115
 | sed 's/\.c$//' | (while read f; do echo > "$f.o.d"; echo > "$f.po.d"; done)
116
])
117
fi
118

119
# Figure out ABI. Currently, configurable only by setting CFLAGS.
120
121
ABI=standard

122
case "$host_cpu" in
123
  [x86_64 | amd64])
124
    AC_TRY_COMPILE([
125
126
#if defined(__x86_64__) || defined(__arch64__)
#error 64-bit x86
127
128
#endif
    ], [], [
129
      ABI=32
130
    ], [
131
      ABI=64
132
    ])
133
    ;;
134
  *sparc*)
135
136
137
138
139
    AC_TRY_COMPILE([
#if defined(__sparcv9) || defined(__arch64__)
#error 64-bit sparc
#endif
    ], [], [
140
      ABI=32
141
    ], [
142
      ABI=64
143
    ])
144
    ;;
145
146
147
esac

if test "x$ABI" != xstandard ; then
148
  AC_MSG_NOTICE([Compiler uses $ABI-bit ABI. To change, set CC.])
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
177
178
179
180
  if test "$libdir" = '${exec_prefix}/lib' ; then
    # Try setting a better default
    case "$host_cpu:$host_os:$ABI" in
      *:solaris*:32|*:sunos*:32)
	libdir='${exec_prefix}/lib'
	;;
      *:solaris*:64|*:sunos*:64)
	libdir='${exec_prefix}/lib/64'
	;;
      # According to the fhs, all architectures except IA64
      # puts 32-bit libraries in lib, and 64-bit in lib64.
      *:linux*:32)
	libdir='${exec_prefix}/lib'
	;;
      *:linux*:64)
	libdir='${exec_prefix}/lib64'
	;;
      # On freebsd, it seems 32-bit libraries are in lib32,
      # and 64-bit in lib. Don't know about "kfreebsd", does
      # it follow the Linux fhs conventions?
      *:freebsd*:32)
	libdir='${exec_prefix}/lib32'
	;;
      *:freebsd*:64)
	libdir='${exec_prefix}/lib'
	;;
      *)
        AC_MSG_WARN([Don't know where to install $ABI-bit libraries on this system.]); #'

    esac
    AC_MSG_NOTICE([Libraries to be installed in $libdir.])
  fi
181
182
183
184
185
186
187
188
189
fi

# Select assembler code
asm_path=
case "$host_cpu" in
  [i?86* | k[5-8]* | pentium* | athlon])
    asm_path=x86
    ;;
  [x86_64 | amd64])
Niels Möller's avatar
Niels Möller committed
190
    if test "$ABI" = 64 ; then
191
192
193
194
195
196
      asm_path=x86_64
    else
      asm_path=x86
    fi
    ;;
  *sparc*)
Niels Möller's avatar
Niels Möller committed
197
    if test "$ABI" = 64 ; then
198
199
200
201
202
      asm_path=sparc64
    else
      asm_path=sparc32
    fi
    ;;
203
204
205
  *)
    enable_assembler=no
    ;;
206
207
esac

208
# echo "enable_assembler: $enable_assembler, asm_path: $asm_path"
209

210
if test "x$enable_assembler" = xyes ; then
211
  if test -n "$asm_path"; then
Niels Möller's avatar
Niels Möller committed
212
    AC_MSG_NOTICE([Looking for assembler files in $asm_path/.])
213
    found=no
214
    for tmp_f in aes-encrypt-internal.asm aes-decrypt-internal.asm \
215
		 arcfour-crypt.asm camellia-crypt-internal.asm \
Niels Möller's avatar
Niels Möller committed
216
		 md5-compress.asm memxor.asm sha1-compress.asm machine.m4; do
217
218
#       echo "Looking for $srcdir/$asm_path/$tmp_f"
      if test -f "$srcdir/$asm_path/$tmp_f"; then
219
#        echo found
220
        found=yes
221
        AC_CONFIG_LINKS($tmp_f:$asm_path/$tmp_f)
222
223
224
225
226
227
228
229
230
      fi
    done
    if test "$found" = no; then
      enable_assembler=no
      AC_MSG_WARN([No assembler files found.])
    fi
  fi
fi

231
232
233
LSH_CCPIC

SHLIBCFLAGS="$CCPIC"
234

235
case "$host_os" in
236
237
238
239
240
241
242
243
244
245
246
247
248
  mingw32*)
    LIBNETTLE_FORLINK='libnettle-$(LIBNETTLE_MAJOR)-$(LIBNETTLE_MINOR).dll'
    LIBNETTLE_SONAME=''
    LIBNETTLE_FILE='libnettle.dll.a'
    LIBNETTLE_LINK='$(CC) $(LDFLAGS) -shared -Wl,--out-implib=$(LIBNETTLE_FILE) -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive'
    LIBNETTLE_LIBS='-Wl,--no-whole-archive $(LIBS)'

    LIBHOGWEED_FORLINK='libhogweed-$(LIBHOGWEED_MAJOR)-$(LIBHOGWEED_MINOR).dll'
    LIBHOGWEED_SONAME=''
    LIBHOGWEED_FILE='libhogweed.dll.a'
    LIBHOGWEED_LINK='$(CC) $(LDFLAGS) -shared -Wl,--out-implib=$(LIBHOGWEED_FILE) -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive'
    LIBHOGWEED_LIBS='-Wl,--no-whole-archive $(LIBS) libnettle.dll.a'
    ;;
249
  cygwin*)
250
    LIBNETTLE_FORLINK='cygnettle-$(LIBNETTLE_MAJOR)-$(LIBNETTLE_MINOR).dll'
251
252
253
254
255
    LIBNETTLE_SONAME=''
    LIBNETTLE_FILE='libnettle.dll.a'
    LIBNETTLE_LINK='$(CC) $(LDFLAGS) -shared -Wl,--out-implib=$(LIBNETTLE_LIBFILE) -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive'
    LIBNETTLE_LIBS='-Wl,--no-whole-archive $(LIBS)'

256
    LIBHOGWEED_FORLINK='cyghogweed-$(LIBHOGWEED_MAJOR)-$(LIBHOGWEED_MINOR).dll'
257
    LIBHOGWEED_SONAME=''
258
    LIBHOGWEED_FILE='libhogweed.dll.a'
259
260
    LIBHOGWEED_LINK='$(CC) $(LDFLAGS) -shared -Wl,--out-implib=$(LIBHOGWEED_LIBFILE) -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive'
    LIBHOGWEED_LIBS='-Wl,--no-whole-archive $(LIBS)'
261
    ;;
Grant Robinson's avatar
Grant Robinson committed
262
  darwin*)
263
264
265
266
267
268
    LIBNETTLE_FORLINK=libnettle.dylib
    LIBNETTLE_SONAME='$(LIBNETTLE_FORLINK).$(LIBNETTLE_MAJOR)'
    LIBNETTLE_FILE='$(LIBNETTLE_SONAME).$(LIBNETTLE_MINOR)'
    LIBNETTLE_LINK='$(CC) -dynamiclib $(LDFLAGS)'
    LIBNETTLE_LIBS=''

269
    LIBHOGWEED_FORLINK=libhogweed.dylib
270
271
272
273
    LIBHOGWEED_SONAME='$(LIBHOGWEED_FORLINK).$(LIBHOGWEED_MAJOR)'
    LIBHOGWEED_FILE='$(LIBHOGWEED_SONAME).$(LIBHOGWEED_MINOR)'
    LIBHOGWEED_LINK='$(CC) -dynamiclib $(LDFLAGS)'
    LIBHOGWEED_LIBS=''
Grant Robinson's avatar
Grant Robinson committed
274
    ;;
275
  *)
276
277
278
279
280
281
    LIBNETTLE_FORLINK=libnettle.so
    LIBNETTLE_SONAME='$(LIBNETTLE_FORLINK).$(LIBNETTLE_MAJOR)'
    LIBNETTLE_FILE='$(LIBNETTLE_SONAME).$(LIBNETTLE_MINOR)'
    LIBNETTLE_LINK='$(CC) $(LDFLAGS) -shared -Wl,-soname=$(LIBNETTLE_SONAME)'
    LIBNETTLE_LIBS=''

282
    LIBHOGWEED_FORLINK=libhogweed.so
283
284
    LIBHOGWEED_SONAME='$(LIBHOGWEED_FORLINK).$(LIBHOGWEED_MAJOR)'
    LIBHOGWEED_FILE='$(LIBHOGWEED_SONAME).$(LIBHOGWEED_MINOR)'
285
286
287
288
289
290
291
    LIBHOGWEED_LINK='$(CC) $(LDFLAGS) -L. -shared -Wl,-soname=$(LIBHOGWEED_SONAME)'
    # Requested by debian, to make linking with only -lhogweed work
    # (does not work in general, e.g., with static linking all of
    # -lhogweed -lgmp -lnettle are still required). Also makes dlopen
    # of libhogweed.so work, without having to use RTLD_GLOBAL.
    # Depends on -L. above, to locate nettle.so.
    LIBHOGWEED_LIBS='-lnettle -lgmp'
292
293
    ;;
esac
294

295
296
297
298
if test "x$enable_pic" = xyes; then
  CCPIC_MAYBE="$CCPIC"
else
  CCPIC_MAYBE=''
299
fi
300
AC_SUBST([CCPIC_MAYBE])
301

302
ASM_SYMBOL_PREFIX=''
303
ASM_ELF_STYLE='no'
304
ASM_TYPE_FUNCTION=''
305
ASM_MARK_NOEXEC_STACK=''
306
ASM_ALIGN_LOG=''
307
308
309
310
311
312
313
314

if test x$enable_assembler = xyes ; then
  AC_CACHE_CHECK([if globals are prefixed by underscore],
  nettle_cv_asm_underscore,
  [ # Default is no underscore
    nettle_cv_asm_underscore=no
    AC_COMPILE_IFELSE(
      [int a_global_symbol;],
315
      [ $NM conftest.$OBJEXT >conftest.out
316
317
318
319
320
321
322
323
        if grep _a_global_symbol conftest.out >/dev/null ; then
          nettle_cv_asm_underscore=yes
        elif grep a_global_symbol conftest.out >/dev/null ; then
          nettle_cv_asm_underscore=no
        else
          AC_MSG_WARN([nm doesn't list a_global_symbol at all])
	fi],
      [AC_MSG_WARN([test program with a single global could not be compiled!?])])])
324
  if test x$nettle_cv_asm_underscore = xyes ; then
325
    ASM_SYMBOL_PREFIX='_'
326
  fi
327
328
329
330
331
332
333
334
335
336
337
338

  AC_CACHE_CHECK([if we should use a .note.GNU-stack section],
  nettle_cv_asm_gnu_stack,
  [ # Default
    nettle_cv_asm_gnu_stack=no

    cat >conftest.c <<EOF
int foo() { return 0; }
EOF
    nettle_compile="$CC $CFLAGS $CPPFLAGS -c conftest.c >conftest.out 2>&1"
    if AC_TRY_EVAL(nettle_compile); then
      cat conftest.out >&AC_FD_CC
339
      $OBJDUMP -x conftest.o | grep '\.note\.GNU-stack' > /dev/null \
340
341
342
343
344
345
346
347
348
349
350
      && nettle_cv_asm_gnu_stack=yes
    else
      cat conftest.out >&AC_FD_CC
      echo "configure: failed program was:" >&AC_FD_CC
      cat conftest.s >&AC_FD_CC
    fi
    rm -f conftest.*])
  if test x$nettle_cv_asm_gnu_stack = xyes ; then
    ASM_MARK_NOEXEC_STACK='.section .note.GNU-stack,"",@progbits'
  fi

351
352
353
  AC_CACHE_CHECK([for ELF-style .type,%function pseudo-ops],
    [nettle_cv_asm_type_percent_function],
    [GMP_TRY_ASSEMBLE([
354
355
.text
.globl foo
356
.type foo,%function
357
358
359
360
foo:
.Lend:

.size foo, .Lend - foo
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
],
       [nettle_cv_asm_type_percent_function=yes],
       [nettle_cv_asm_type_percent_function=no])])

dnl Needs double quote for the # character
  AC_CACHE_CHECK([[for ELF-style .type,#function pseudo-ops]],
    [nettle_cv_asm_type_hash_function],
    [GMP_TRY_ASSEMBLE([
.text
.globl foo
.type foo,#function
foo:
.Lend:

.size foo, .Lend - foo
],
       [nettle_cv_asm_type_hash_function=yes],
       [nettle_cv_asm_type_hash_function=no])])

  if test x$nettle_cv_asm_type_percent_function = xyes ; then
381
    ASM_ELF_STYLE='yes'
382
383
384
385
386
387
    ASM_TYPE_FUNCTION='%function'
  else
    if test x$nettle_cv_asm_type_hash_function = xyes ; then
      ASM_ELF_STYLE='yes'
      ASM_TYPE_FUNCTION='#function'
    fi
388
  fi
389
390
391
392
393
394
395
396
397
398
  AC_CACHE_CHECK([if .align assembly directive is logarithmic],
    [nettle_cv_asm_align_log],
    [GMP_TRY_ASSEMBLE([
.align 3
],
       [nettle_cv_asm_align_log=yes],
       [nettle_cv_asm_align_log=no])])
  if test x$nettle_cv_asm_align_log = xyes ; then
    ASM_ALIGN_LOG='yes'
  fi
399
400
401
fi

AC_SUBST(ASM_SYMBOL_PREFIX)
402
AC_SUBST(ASM_ELF_STYLE)
403
AC_SUBST(ASM_TYPE_FUNCTION)
404
AC_SUBST(ASM_MARK_NOEXEC_STACK)
405
AC_SUBST(ASM_ALIGN_LOG)
406

407
AC_SUBST(SHLIBCFLAGS)
408
409
410
411
412
413
414
415
416

AC_SUBST(LIBNETTLE_MAJOR)
AC_SUBST(LIBNETTLE_MINOR)
AC_SUBST(LIBNETTLE_FORLINK)
AC_SUBST(LIBNETTLE_SONAME)
AC_SUBST(LIBNETTLE_FILE)
AC_SUBST(LIBNETTLE_LINK)
AC_SUBST(LIBNETTLE_LIBS)

Niels Möller's avatar
Niels Möller committed
417
418
419
420
421
422
423
AC_SUBST(LIBHOGWEED_MAJOR)
AC_SUBST(LIBHOGWEED_MINOR)
AC_SUBST(LIBHOGWEED_FORLINK)
AC_SUBST(LIBHOGWEED_SONAME)
AC_SUBST(LIBHOGWEED_FILE)
AC_SUBST(LIBHOGWEED_LINK)
AC_SUBST(LIBHOGWEED_LIBS)
Niels Möller's avatar
Niels Möller committed
424

Niels Möller's avatar
Niels Möller committed
425
AC_PATH_PROG(M4, m4, m4)
426

427
# Checks for typedefs, structures, and compiler characteristics.
Niels Möller's avatar
Niels Möller committed
428
AC_C_CONST
Niels Möller's avatar
Niels Möller committed
429
430
431
432
AC_C_INLINE
AC_TYPE_UID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
Niels Möller's avatar
Niels Möller committed
433
AC_CHECK_SIZEOF(long)
Niels Möller's avatar
Niels Möller committed
434

Niels Möller's avatar
Niels Möller committed
435
AC_CHECK_HEADERS([openssl/blowfish.h openssl/des.h openssl/cast.h openssl/aes.h],,
436
437
438
[enable_openssl=no
 break])

Niels Möller's avatar
Niels Möller committed
439
LSH_FUNC_ALLOCA
Niels Möller's avatar
Niels Möller committed
440
LSH_FUNC_STRERROR
Niels Möller's avatar
Niels Möller committed
441

Niels Möller's avatar
Niels Möller committed
442
# Needed by the supplied memcmp.c
Niels Möller's avatar
Niels Möller committed
443
AC_C_BIGENDIAN
Niels Möller's avatar
Niels Möller committed
444
445
AC_REPLACE_FUNCS(memxor)

Niels Möller's avatar
Niels Möller committed
446
LSH_GCC_ATTRIBUTES
Niels Möller's avatar
Niels Möller committed
447

448
449
# According to Simon Josefsson, looking for uint32_t and friends in
# sys/types.h is needed on some systems, in particular cygwin.
450
AX_CREATE_STDINT_H([nettle-stdint.h], [sys/types.h])
451

Niels Möller's avatar
Niels Möller committed
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
# Check for file locking. We (AC_PROG_CC?) have already checked for
# sys/types.h and unistd.h.
AC_CACHE_CHECK([for fcntl file locking],
		nettle_cv_fcntl_locking,
[AC_TRY_COMPILE([
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <fcntl.h>
],[
int op = F_SETLKW;
struct flock fl;
],
nettle_cv_fcntl_locking=yes,
nettle_cv_fcntl_locking=no)])

AH_TEMPLATE([HAVE_FCNTL_LOCKING], [Define if fcntl file locking is available])
if test "x$nettle_cv_fcntl_locking" = "xyes" ; then
  AC_DEFINE(HAVE_FCNTL_LOCKING)
fi

476
477
478
# Checks for libraries
AC_CHECK_LIB(gmp, __gmpz_getlimbn,,
    [AC_MSG_WARN(
Niels Möller's avatar
Niels Möller committed
479
[GNU MP not found, or not 3.1 or up, see http://gmplib.org/.
480
481
482
Support for public key algorithms will be unavailable.])]
    enable_public_key=no)

Niels Möller's avatar
Niels Möller committed
483
484
485
486
487
488
# Add -R flags needed to run programs linked with gmp
LSH_RPATH_FIX

AH_TEMPLATE([HAVE_MPZ_POWM_SEC], [Define if mpz_powm_sec is available (appeared in GMP-5)])
AC_CHECK_FUNC(__gmpz_powm_sec, [AC_DEFINE(HAVE_MPZ_POWM_SEC)])

489
490
AH_TEMPLATE([WITH_HOGWEED], [Defined if public key features are enabled])

491
if test "x$enable_public_key" = xyes ; then
492
493
494
495
496
497
498
499
  AC_DEFINE(WITH_HOGWEED)
  IF_HOGWEED=''
else
  IF_HOGWEED='#'
fi

if test "x$enable_shared" = xyes ; then
  IF_SHARED=''
500
else
501
  IF_SHARED='#'
502
503
fi

504
505
AC_SUBST(IF_HOGWEED)
AC_SUBST(IF_SHARED)
506

507
508
OPENSSL_LIBFLAGS=''

509
# Check for openssl's libcrypto (used only for benchmarking)
510
511
512
513
514
515
516
517
518
519
520
521
if test x$enable_openssl = xyes ; then
  AC_CHECK_LIB(crypto, BF_ecb_encrypt,
    [OPENSSL_LIBFLAGS='-lcrypto'],
    [enable_openssl=no])
fi

AH_TEMPLATE([WITH_OPENSSL],
	    [Define if you have openssl's libcrypto (used for benchmarking)])

if test x$enable_openssl = xyes ; then
  AC_DEFINE(WITH_OPENSSL)
fi
522
523

AC_SUBST(OPENSSL_LIBFLAGS)
524

525
526
527
528
529
530
# Choose strategy for Camellia round
AH_BOTTOM(
[/* Needs include of <limits.h> before use. */
#define HAVE_NATIVE_64_BIT (SIZEOF_LONG * CHAR_BIT >= 64)
])

531
532
533
534
535
536
537
538
539
540
541
542
543
# clock_gettime is in librt on *-*-osf5.1 and on glibc, so add -lrt to
# BENCH_LIBS if needed. On linux (tested on x86_32, 2.6.26),
# clock_getres reports ns accuracy, while in a quick test on osf
# clock_getres said only 1 millisecond.

old_LIBS="$LIBS"
AC_SEARCH_LIBS(clock_gettime, rt, [
  AC_DEFINE([HAVE_CLOCK_GETTIME],1,[Define to 1 if you have the `clock_gettime' function])])
BENCH_LIBS="$LIBS"
LIBS="$old_LIBS"

AC_SUBST(BENCH_LIBS)

Niels Möller's avatar
Niels Möller committed
544
545
# Set these flags *last*, or else the test programs won't compile
if test x$GCC = xyes ; then
546
  # Using -ggdb3 makes (some versions of) Redhat's gcc-2.96 dump core
547
  if $CC --version | grep '^2\.96$' 1>/dev/null 2>&1; then
548
549
550
551
    true
  else
    CFLAGS="$CFLAGS -ggdb3"
  fi
552
  # FIXME: It would be better to actually test if this option works and/or is needed.
Niels Möller's avatar
Niels Möller committed
553
  # Or perhaps use -funsigned-char.
554
  if $CC --version | grep 'gcc.* 4\.' 1>/dev/null 2>&1; then
555
556
    CFLAGS="$CFLAGS -Wno-pointer-sign"
  fi
557
558
559
  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
560
561
562

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

567
568
569
570
AC_CONFIG_FILES([config.make config.m4 Makefile])
AC_CONFIG_FILES([tools/Makefile testsuite/Makefile examples/Makefile])

AC_OUTPUT
571