Added.
[silc.git] / lib / configure.ad
index ff9e2a3c99acf4d1da9d4a8d7f7fd8112e01808e..d9b6ba39fdfea5d7cc848d52b8bb2529e019b656 100644 (file)
@@ -4,7 +4,7 @@
 #
 #  Author: Pekka Riikonen <priikone@silcnet.org>
 #
-#  Copyright (C) 2005 Pekka Riikonen
+#  Copyright (C) 2005, 2007 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
@@ -18,6 +18,8 @@
 
 if test x$compile_libs = xtrue; then
 
+AM_PROG_AS
+
 ##
 ## Will compile included libs
 ##
@@ -26,14 +28,14 @@ AC_MSG_NOTICE([Configuring SILC libraries])
 # SILC Library directories
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/contrib"
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silccore"
+#ifdef SILC_DIST_CRYPTO
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silccrypt"
+#endif SILC_DIST_CRYPTO
 #ifdef SILC_DIST_MATH
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcmath"
-#ifdef SILC_DIST_MPI
-SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcmath/mpi"
-#endif SILC_DIST_MPI
 #endif SILC_DIST_MATH
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcutil"
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcapputil"
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcske"
 #ifdef SILC_DIST_SFTP
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcsftp"
@@ -41,9 +43,33 @@ SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcsftp"
 #ifdef SILC_DIST_SIM
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcsim"
 #endif SILC_DIST_SIM
-#ifdef SILC_DIST_CLIENT
+#ifdef SILC_DIST_CLIENTLIB
 SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcclient"
-#endif SILC_DIST_CLIENT
+#endif SILC_DIST_CLIENTLIB
+#ifdef SILC_DIST_ASN1
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcasn1"
+#endif SILC_DIST_ASN1
+#ifdef SILC_DIST_SKR
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcskr"
+#endif SILC_DIST_SKR
+#ifdef SILC_DIST_SERVERLIB
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcserver"
+#endif SILC_DIST_SERVERLIB
+#ifdef SILC_DIST_HTTP
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silchttp"
+#endif SILC_DIST_HTTP
+#ifdef SILC_DIST_VCARD
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcvcard"
+#endif SILC_DIST_VCARD
+#ifdef SILC_DIST_ACC
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcacc"
+#endif SILC_DIST_ACC
+#ifdef SILC_DIST_PGP
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcpgp"
+#endif SILC_DIST_PGP
+#ifdef SILC_DIST_SSH
+SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcssh"
+#endif SILC_DIST_SSH
 
 ##
 ## Library versioning.
@@ -56,8 +82,8 @@ SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcclient"
 #  - If functions were added, increment [LIB]_AGE
 #  - If functions were removed, set [LIB]_AGE to 0
 #
-# where [LIB] is LIBSILC and LIBSILCCLIENT, and where "functions" means
-# functions public interfaces.
+# where [LIB] is LIBSILC, LIBSILCCLIENT or LIBSILCSERVER, and where
+# "functions" means functions public interfaces (API).
 #
 # The LIB_BASE_VERSION defines the SILC software major.minor version and
 # it is increment only when these version numbers actually change.
@@ -65,17 +91,22 @@ SILC_LIB_INCLUDES="$SILC_LIB_INCLUDES -I$SILC_TOP_SRCDIR/lib/silcclient"
 
 # Base version for libraries.  Do not change this unless SILC version
 # changes too.
-LIB_BASE_VERSION=1.0
+LIB_BASE_VERSION=1.1
 
 # libsilc versions
-LIBSILC_CURRENT=5              # prev = 4
+LIBSILC_CURRENT=2              # prev = 1
 LIBSILC_REVISION=0             # prev = 0
-LIBSILC_AGE=3                  # prev = 3
+LIBSILC_AGE=0                  # prev = 0
 
 # libsilcclient versions
-LIBSILCCLIENT_CURRENT=4                # prev = 4
+LIBSILCCLIENT_CURRENT=2                # prev = 1
 LIBSILCCLIENT_REVISION=0       # prev = 0
-LIBSILCCLIENT_AGE=3            # prev = 3
+LIBSILCCLIENT_AGE=0            # prev = 0
+
+# libsilcserver versions
+LIBSILCSERVER_CURRENT=1                # prev = 0
+LIBSILCSERVER_REVISION=0       # prev = 0
+LIBSILCSERVER_AGE=0            # prev = 0
 
 # Substitute the version numbers
 AC_SUBST(LIB_BASE_VERSION)
@@ -85,6 +116,67 @@ AC_SUBST(LIBSILC_AGE)
 AC_SUBST(LIBSILCCLIENT_CURRENT)
 AC_SUBST(LIBSILCCLIENT_REVISION)
 AC_SUBST(LIBSILCCLIENT_AGE)
+AC_SUBST(LIBSILCSERVER_CURRENT)
+AC_SUBST(LIBSILCSERVER_REVISION)
+AC_SUBST(LIBSILCSERVER_AGE)
+
+# Check for big-endian machines
+AC_C_BIGENDIAN
+
+# Check for epoll_wait and verify that epoll_create works
+AC_CHECK_FUNC(epoll_wait,
+  [
+    AC_RUN_IFELSE(
+      [
+        #include <sys/epoll.h>
+        int main()
+        {
+          int ret = epoll_create(5);
+          if (ret < 0)
+            return 1;
+          close(ret);
+          return 0;
+        }
+      ],
+      [
+        AC_DEFINE([HAVE_EPOLL_WAIT], [1], [HAVE_EPOLL_WAIT])
+      ],
+    )
+  ])
+
+#
+# Memory alignment.  User can specify what alignment memory allocation and
+# SilcStack allocation use.  Default is system default alignemnt.
+#
+AC_ARG_WITH(alignment,
+  [  --with-alignment=NUMBER  Memory alignment in bytes],
+  [
+    AC_DEFINE_UNQUOTED([SILC_ALIGNMENT], [$withval], [SILC_ALIGNMENT])
+    AC_MSG_RESULT(Memory allocation alignment is $withval bytes)
+  ],
+  [
+    AC_DEFINE([SILC_ALIGNMENT], SILC_SIZEOF_VOID_P, [SILC_ALIGNMENT])
+  ])
+
+
+MODULESDIR="$silc_prefix/lib/modules"
+#ifdef SILC_DIST_SIM
+# SIM modules directory
+#
+AC_ARG_WITH(simdir,
+  [[  --with-simdir=DIR       directory for SIM modules [PREFIX/modules]]],
+  [
+    case "$withval" in
+      no|yes)
+        ;;
+      *)
+        MODULESDIR="$withval"
+        ;;
+    esac
+  ])
+AC_DEFINE_UNQUOTED([SILC_MODULESDIR], "$MODULESDIR", [SILC_MODULESDIR])
+#endif SILC_DIST_SIM
+AC_SUBST(MODULESDIR)
 
 #ifdef SILC_DIST_TOOLKIT
 # Stack trace checking
@@ -107,6 +199,49 @@ AC_ARG_ENABLE(stack-trace,
   )
 #endif SILC_DIST_TOOLKIT
 
+#ifdef SILC_DIST_INPLACE
+#
+# Profiling options (never delivered to distributions)
+#
+AC_MSG_CHECKING(whether to enable gprof)
+AC_ARG_ENABLE(gprof,
+  [  --enable-gprof          enable gprof profiling],
+  [
+    case "${enableval}" in
+      yes)
+        AC_MSG_RESULT(yes)
+        SILC_ADD_CFLAGS(-pg)
+        LIBS="$LIBS -pg"
+        ;;
+      *)
+        AC_MSG_RESULT(no)
+        ;;
+    esac
+  ],
+  [
+    AC_MSG_RESULT(no)
+  ])
+
+AC_MSG_CHECKING(whether to enable gcov)
+AC_ARG_ENABLE(gcov,
+  [  --enable-gcov           enable gcov],
+  [
+    case "${enableval}" in
+      yes)
+        AC_MSG_RESULT(yes)
+        SILC_ADD_CFLAGS(-fprofile-arcs)
+        LIBS="$LIBS -lgcov"
+        ;;
+      *)
+        AC_MSG_RESULT(no)
+        ;;
+    esac
+  ],
+  [
+    AC_MSG_RESULT(no)
+  ])
+#endif SILC_DIST_INPLACE
+
 #
 # Makefile outputs
 #
@@ -114,26 +249,31 @@ AC_CONFIG_FILES(
 lib/Makefile
 lib/contrib/Makefile
 lib/silccore/Makefile
-lib/silccrypt/Makefile
 #ifdef SILC_DIST_SIM
 lib/silcsim/Makefile
 #endif SILC_DIST_SIM
 lib/silcske/Makefile
 lib/silcutil/Makefile
+#ifdef SILC_DIST_TOOLKIT
 lib/silcutil/unix/Makefile
 lib/silcutil/win32/Makefile
-lib/silcutil/beos/Makefile
-lib/silcutil/os2/Makefile
-lib/silcutil/epoc/Makefile
-#ifdef SILC_DIST_MATH
-lib/silcmath/Makefile
-#endif SILC_DIST_MATH
+lib/silcutil/symbian/Makefile
+#else !SILC_DIST_TOOLKIT
+#ifdef SILC_DIST_CLIENT
+lib/silcutil/unix/Makefile
+lib/silcutil/win32/Makefile
+#else !SILC_DIST_CLIENT
+#ifdef SILC_DIST_SERVER
+lib/silcutil/unix/Makefile
+#endif SILC_DIST_SERVER
+#endif SILC_DIST_CLIENT
+#endif SILC_DIST_TOOLKIT
+lib/silcapputil/Makefile
 #ifdef SILC_DIST_SFTP
 lib/silcsftp/Makefile
 #endif SILC_DIST_SFTP
 #ifdef SILC_DIST_INPLACE
 lib/silcutil/tests/Makefile
-lib/silccrypt/tests/Makefile
 lib/silccore/tests/Makefile
 lib/silcsftp/tests/Makefile
 #endif SILC_DIST_INPLACE
@@ -143,13 +283,84 @@ lib/silcsftp/tests/Makefile
 AC_CONFIG_FILES(
 lib/silc.pc
 lib/silcclient.pc
+lib/silcserver.pc
 )
 #endif SILC_DIST_TOOLKIT
 
 #ifdef SILC_DIST_CLIENTLIB
-AC_CONFIG_FILES(lib/silcclient/Makefile)
+AC_CONFIG_FILES(
+lib/silcclient/Makefile
+lib/silcclient/tests/Makefile
+)
 #endif SILC_DIST_CLIENTLIB
 
+#ifdef SILC_DIST_SERVERLIB
+AC_CONFIG_FILES(
+lib/silcserver/Makefile
+lib/silcserver/tests/Makefile
+)
+#endif SILC_DIST_SERVERLIB
+
+#ifdef SILC_DIST_ASN1
+AC_CONFIG_FILES(
+lib/silcasn1/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silcasn1/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_ASN1
+
+#ifdef SILC_DIST_SKR
+AC_CONFIG_FILES(
+lib/silcskr/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silcskr/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_SKR
+
+#ifdef SILC_DIST_HTTP
+AC_CONFIG_FILES(
+lib/silchttp/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silchttp/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_HTTP
+
+#ifdef SILC_DIST_VCARD
+AC_CONFIG_FILES(
+lib/silcvcard/Makefile
+)
+#endif SILC_DIST_VCARD
+
+#ifdef SILC_DIST_ACC
+AC_CONFIG_FILES(
+lib/silcacc/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silcacc/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_ACC
+
+#ifdef SILC_DIST_PGP
+AC_CONFIG_FILES(
+lib/silcpgp/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silcpgp/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_PGP
+
+#ifdef SILC_DIST_SSH
+AC_CONFIG_FILES(
+lib/silcssh/Makefile
+#ifdef SILC_DIST_INPLACE
+lib/silcssh/tests/Makefile
+#endif SILC_DIST_INPLACE
+)
+#endif SILC_DIST_SSH
+
 fi     # compile_libs
 
 #endif SILC_DIST_LIB