va_copy checks.
[silc.git] / configure.ad
index 5d62cf4c5768ea65c1df51fb7c7cf1b661571717..3244e3786b8962bd6746ab7decd1bf3cb4f40f36 100644 (file)
@@ -3,7 +3,7 @@
 #
 #  Author: Pekka Riikonen <priikone@silcnet.org>
 #
-#  Copyright (C) 2000 - 2005 Pekka Riikonen
+#  Copyright (C) 2000 - 2006 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
@@ -44,6 +44,25 @@ case "$target" in
     ;;
 esac
 
+# Get CPU
+case "$host_cpu" in
+  i386)
+    AC_DEFINE([SILC_I386], [], [SILC_I386])
+    ;;
+  i?86)
+    AC_DEFINE([SILC_I486], [], [SILC_I486])
+    ;;
+  x86_64)
+    AC_DEFINE([SILC_X86_64], [], [SILC_X86_64])
+    ;;
+  powerpc*)
+    AC_DEFINE([SILC_POWERPC], [], [SILC_POWERPC])
+    ;;
+  ia64)
+    AC_DEFINE([SILC_IA64], [], [SILC_IA64])
+    ;;
+esac
+
 # Control compiler optimizations
 CFLAGS=`echo $CFLAGS | sed 's/-O[ 0123456789s]*//g'`
 
@@ -277,6 +296,109 @@ AC_ARG_ENABLE(asm,
     want_asm=true
   ])
 
+##
+## va_copy checks
+##
+va_copy=false
+AC_MSG_CHECKING(for va_copy)
+AC_TRY_COMPILE(
+  [
+    #include <stdarg.h>
+    #include <stdlib.h>
+  ],
+  [
+    int t(int x, ...)
+    {
+      va_list va, cp;
+      va_start(va, x);
+      va_copy(cp, va);
+      if (va_arg(cp, int) != 0xff11)
+        return 1;
+      va_end(va);
+      va_end(cp);
+      return 0;
+    }
+    int main()
+    {
+      return t(0, 0xff11);
+    }
+  ],
+  [
+    AC_DEFINE([HAVE_VA_COPY], [], [HAVE_VA_COPY])
+    AC_MSG_RESULT(yes)
+    va_copy=true
+  ],
+  [
+    AC_MSG_RESULT(no)
+    va_copy=false
+  ]
+)
+
+if test x$va_copy = xfalse; then
+  AC_MSG_CHECKING(for __va_copy)
+  AC_TRY_COMPILE(
+  [
+    #include <stdarg.h>
+    #include <stdlib.h>
+  ],
+  [
+    int t(int x, ...)
+    {
+      va_list va, cp;
+      va_start(va, x);
+      __va_copy(cp, va);
+      if (va_arg(cp, int) != 0xff11)
+        return 1;
+      va_end(va);
+      va_end(cp);
+      return 0;
+    }
+    int main()
+    {
+      return t(0, 0xff11);
+    }
+  ],
+  [
+    AC_DEFINE([HAVE___VA_COPY], [], [HAVE___VA_COPY])
+    AC_MSG_RESULT(yes)
+    va_copy=true
+  ],
+  [
+    AC_MSG_RESULT(no)
+    va_copy=false
+  ]
+  )
+fi
+
+if test x$va_copy = xfalse; then
+  AC_RUN_IFELSE(
+    [
+      #include <stdarg.h>
+      #include <stdlib.h>
+      int t(int x, ...)
+      {
+        va_list va, cp;
+        va_start(va, x);
+        cp = va;
+        if (va_arg(cp, int) != 0xff11)
+          return 1;
+        va_end(va);
+        va_end(cp);
+        return 0;
+      }
+      int main()
+      {
+        return t(0, 0xff11);
+      }
+    ],
+    [va_copy=false],
+    [
+      AC_DEFINE([SILC_VA_COPY_ARRAY], [], [SILC_VA_COPY_ARRAY])
+    ],
+    [va=copy=false]
+  )
+fi
+
 ##
 ## Compiler and compiler flag checks
 ##
@@ -451,13 +573,13 @@ if test -n "$with_silc_includes" || test -n "$with_silc_libs"; then
   fi
 
   # Check libs to link against
-  f=`$EGREP __SILC_HAVE_PTHREAD $ac_silc_includes/silcincludes.h`
+  f=`$EGREP __SILC_HAVE_PTHREAD $ac_silc_includes/silc.h`
   if test -n "$f"; then
     LIBS="$LIBS -lpthread"
     check_threads=false
     has_threads=true
   fi
-  f=`$EGREP __SILC_HAVE_SIM $ac_silc_includes/silcincludes.h`
+  f=`$EGREP __SILC_HAVE_SIM $ac_silc_includes/silc.h`
   if test -n "$f"; then
     LIBS="$LIBS -ldl"
   fi
@@ -468,6 +590,9 @@ else
 #ifdef SILC_DIST_CLIENTLIB
   PKG_CHECK_MODULES(SILCCLIENT, silcclient, compile_libs=false, compile_libs=true)
 #endif SILC_DIST_CLIENTLIB
+#ifdef SILC_DIST_SERVERLIB
+  PKG_CHECK_MODULES(SILCSERVER, silcserver, compile_libs=false, compile_libs=true)
+#endif SILC_DIST_SERVERLIB
 
   if test x$compile_libs = xfalse; then
     LIBSUBDIR=
@@ -477,6 +602,10 @@ else
     LIBS="$LIBS $SILCCLIENT_LIBS"
     CFLAGS="$CFLAGS $SILCCLIENT_CFLAGS"
 #endif SILC_DIST_CLIENTLIB
+#ifdef SILC_DIST_SERVERLIB
+    LIBS="$LIBS $SILCSERVER_LIBS"
+    CFLAGS="$CFLAGS $SILCSERVER_CFLAGS"
+#endif SILC_DIST_SERVERLIB
   fi
 fi
 #endif SILC_DIST_TOOLKIT
@@ -1091,7 +1220,7 @@ Makefile.defines
 Makefile.defines_int
 includes/Makefile
 includes/silcversion.h
-includes/silcincludes.h
+includes/silc.h
 #endif SILC_DIST_COMPILER
 #ifdef SILC_DIST_APPS
 apps/Makefile