Enabled AES assembler support on x86-64 in shared libraries.
[crypto.git] / lib / silccrypt / configure.ad
index b9ccd4dadb01ee9bc548c765c4514dcd7f2d3bba..64cf800b6938d2f144d1f7badf7026d72962a852 100644 (file)
@@ -3,7 +3,7 @@
 #
 #  Author: Pekka Riikonen <priikone@silcnet.org>
 #
-#  Copyright (C) 2006 Pekka Riikonen
+#  Copyright (C) 2006 - 2008 Pekka Riikonen
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
 #  GNU General Public License for more details.
 #
 
-if test x$compile_libs = xtrue; then
-
 AC_MSG_NOTICE([configuring crypto library])
 SILC_CRYPTO_CFLAGS=
 
 aes_asm=false
+SILC_AES_ASM_FLAGS=
+
 case "$host_cpu" in
   i?86)
-    if test x$have_assembler = xtrue; then
-      aes_asm=true
-      AC_DEFINE([SILC_AES_ASM], [], [SILC_AES_ASM])
+    AC_DEFINE([SILC_SHA256_X86], [], [SILC_SHA256_X86])
+
+    if test "${pic_mode:-default}" != "yes" ; then
+      # Don't enable ASM AES with shared libs as the code doesn't support PIC.
+      if test x$have_assembler = xtrue -a "$enable_shared" != "yes"; then
+        aes_asm=true
+        AC_DEFINE([SILC_AES_ASM], [], [SILC_AES_ASM])
+      fi
     fi
     ;;
   x86_64)
-    if test x$have_assembler = xtrue; then
-      aes_asm=true
-      AC_DEFINE([SILC_AES_ASM], [], [SILC_AES_ASM])
+
+    if test "${pic_mode:-default}" != "yes" ; then
+      if test x$have_assembler = xtrue; then
+        aes_asm=true
+       SILC_AES_ASM_FLAGS=-prefer-non-pic
+        AC_DEFINE([SILC_AES_ASM], [], [SILC_AES_ASM])
+      fi
     fi
     ;;
   default)
     aes_asm=false
     ;;
 esac
-AM_CONDITIONAL(SILC_AES_ASM, test x$aes_asm = xtrue)
 
 SILC_ADD_CC_FLAGS(SILC_CRYPTO, -fno-regmove)
-if test x$summary_debug = xno; then
+if test x$summary_debug = xno -a x$want_cc_optimizations = xtrue; then
   SILC_ADD_CC_FLAGS(SILC_CRYPTO, -fomit-frame-pointer -O3)
 fi
 
 AC_SUBST(SILC_CRYPTO_CFLAGS)
+AC_SUBST(SILC_AES_ASM_FLAGS)
 
-AC_CONFIG_FILES(
-lib/silccrypt/Makefile
-#ifdef SILC_DIST_INPLACE
-lib/silccrypt/tests/Makefile
-#endif SILC_DIST_INPLACE
-)
-
-fi     # compile_libs
+# AM_CONDITIONAL is so bad that it itself cannot be defined in conditional
+AM_CONDITIONAL(SILC_AES_ASM, test x$aes_asm = xtrue)