Simplify the upgrade path handling from PPA.
[deb_libnfs.git] / configure.ac
index 8b9979681d2e348b942161053c175d2247372c89..2e64295be8b37d782639bc579ac25a5dbc9f6eaa 100644 (file)
@@ -1,69 +1,35 @@
 AC_PREREQ(2.50)
-AC_INIT(libnfs, m4_esyscmd([grep 'Version:' ./packaging/RPM/libnfs.spec.in 2>/dev/null | head -1 | sed -e 's/[ \t]*Version:[ \t]*\([^ \t]*\)[ \t]*.*/\1/' | tr -d '\n']))
-AC_CONFIG_SRCDIR([lib/init.c])
-
-if test "${libdir}" = '${exec_prefix}/lib'; then
-  case `uname -m` in
-    x86_64|ppc64|powerpc64)
-      libdir='${exec_prefix}/lib64'
-      ;;
-    *)
-      libdir='${exec_prefix}/lib'
-      ;;
-  esac
-fi
+AC_INIT([libnfs], [1.9.6], [ronniesahlberg@gmail.com])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([foreign])
+AC_CANONICAL_HOST
 
-is_solaris="no"
-install="/usr/bin/install"
-ldconfig="ldconfig"
+# Work around stupid autoconf default cflags. pt 1
+SAVE_CFLAGS="x${CFLAGS}"
 
-case `uname` in
-  Linux*)
-    ;;
-  AIX*)
-    ;;
-  SunOS)
-    is_solaris="yes"
-    install="ginstall"
-    ldconfig="echo no ldconfig on solaris"
-    LIBS="$LIBS -lsocket -lnsl"
-    ;;
-  *)
-    ;;
-esac
+AC_PROG_CC
+AC_PROG_LIBTOOL
 
-if test "$ac_cv_prog_gcc" = yes; then
-   CFLAGS="$CFLAGS -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings"
-fi
+AM_PROG_CC_C_O
+PKG_PROG_PKG_CONFIG
 
-LOGDIR='${localstatedir}/log'
-AC_ARG_WITH([logdir],
-       [  --with-logdir=DIR       path to log directory [[LOCALSTATEDIR/log]]],
-       LOGDIR=$withval)
-if test ! -z "$LOGDIR"; then
-  if test "$LOGDIR" = "yes" -o "$LOGDIR" = "no"; then
-    AC_MSG_ERROR([--with-logdir must specify a path])
-  fi
+# Work around stupid autoconf default cflags. pt 2
+if test "$SAVE_CFLAGS" = "x"; then
+  CFLAGS=""
 fi
-AC_SUBST(LOGDIR)
-
-AC_CONFIG_HEADER(config.h)
-
-EXTRA_OBJ=""
 
-#AC_CHECK_HEADERS(sched.h)
-#AC_CHECK_FUNCS(mlockall)
+# We always want 64 bit file offsets
+CFLAGS="${CFLAGS} -D_FILE_OFFSET_BITS=64"
 
-AC_CACHE_CHECK([for sin_len in sock],libnfs_cv_HAVE_SOCK_SIN_LEN,[
-AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>],
-[struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
-libnfs_cv_HAVE_SOCK_SIN_LEN=yes,libnfs_cv_HAVE_SOCK_SIN_LEN=no)])
-if test x"$libnfs_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
-    AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
-fi
+#option: examples
+AC_ARG_ENABLE([examples],
+              [AC_HELP_STRING([--enable-examples],
+                              [Build example programs])],
+             [ENABLE_EXAMPLES=$enableval],
+             [ENABLE_EXAMPLES="no"])
 
+# We need popt to compile the examples
+if test x$ENABLE_EXAMPLES = xyes; then
 AC_MSG_CHECKING(whether libpopt is available)
 ac_save_CFLAGS="$CFLAGS"
 ac_save_LIBS="$LIBS"
@@ -91,15 +57,118 @@ CFLAGS="$ac_save_CFLAGS"
 LIBS="$ac_save_LIBS"
 if test "$ac_cv_have_popt" = yes ; then
   AC_MSG_RESULT(yes)
+  MAYBE_EXAMPLES="examples"
 else
   AC_MSG_RESULT(no)
-  AC_MSG_NOTICE(You need libpopt to compile libnfs. Install the libpopt-dev package.)
-  exit
+  AC_MSG_NOTICE(You need libpopt to compile the sample libnfs clients.)
+  AC_MSG_NOTICE(Only the library will be compiled and installed.)
+fi
 fi
 
-AC_SUBST(libdir)
-AC_SUBST(install)
-AC_SUBST(ldconfig)
-#AC_SUBST(LIBNFS_LDFLAGS)
+AC_SUBST(MAYBE_EXAMPLES)
+
+
+case $host in
+  *solaris*)
+    AC_CHECK_HEADERS([sys/filio.h])
+    AC_CHECK_HEADERS([sys/sockio.h])
+    AC_CHECK_LIB([socket], [main], , [AC_MSG_ERROR([Can not find required library])])
+    AC_CHECK_LIB([nsl],    [main], , [AC_MSG_ERROR([Can not find required library])])
+    ;;
+  *)
+    ;;
+esac
+
+# check for poll.h
+dnl Check for poll.h
+AC_CHECK_HEADERS([poll.h])
+
+# check for unistd.h
+dnl Check for unistd.h
+AC_CHECK_HEADERS([unistd.h])
+
+# check for netdb.h
+dnl Check for netdb.h
+AC_CHECK_HEADERS([netdb.h])
+
+# check for utime.h
+dnl Check for utime.h
+AC_CHECK_HEADERS([utime.h])
+
+# check for net/if.h
+dnl Check for net/if.h
+AC_CHECK_HEADERS([net/if.h])
+
+# check for sys/time.h
+dnl Check for sys/time.h
+AC_CHECK_HEADERS([sys/time.h])
+
+# check for sys/ioctl.h
+dnl Check for sys/ioctl.h
+AC_CHECK_HEADERS([sys/ioctl.h])
+
+# check for sys/vfs.h
+dnl Check for sys/vfs.h
+AC_CHECK_HEADERS([sys/vfs.h])
+
+# check for sys/statvfs.h
+dnl Check for sys/statvfs.h
+AC_CHECK_HEADERS([sys/statvfs.h])
+
+# check for sys/socket.h
+dnl Check for sys/socket.h
+AC_CHECK_HEADERS([sys/socket.h])
+
+# check for netinet/tcp.h
+dnl Check for netinet/tcp.h
+AC_CHECK_HEADERS([netinet/tcp.h])
+
+# check for netinet/in.h
+dnl Check for netinet/in.h
+AC_CHECK_HEADERS([netinet/in.h])
+
+# check for arpa/inet.h
+dnl Check for arpa/inet.h
+AC_CHECK_HEADERS([arpa/inet.h])
+
+# check for SA_LEN
+dnl Check if sockaddr data structure includes a "sa_len"
+AC_CHECK_MEMBER([struct sockaddr.sa_len],
+                [ AC_DEFINE(HAVE_SOCKADDR_LEN,1,[Whether sockaddr struct has sa_len]) ],
+                [],
+                [
+#include <sys/types.h>
+#include <sys/socket.h>
+])
+
+# check for sockaddr_storage
+dnl Check if sockaddr structure includes a "ss_family"
+AC_CHECK_MEMBER([struct sockaddr_storage.ss_family],
+                [ AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[Whether we have sockaddr_Storage]) ],
+                [],
+                [
+#include <sys/types.h>
+#include <sys/socket.h>
+])
+
+AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec])
+
+# check where makedev is defined
+AC_HEADER_MAJOR
+
+#output
+AC_CONFIG_FILES([Makefile]
+                [doc/Makefile]
+                [include/Makefile]
+                [lib/Makefile]
+                [mount/Makefile]
+                [nfs/Makefile]
+                [nlm/Makefile]
+                [nsm/Makefile]
+                [portmap/Makefile]
+                [rquota/Makefile]
+                [utils/Makefile]
+                [examples/Makefile]
+               )
 
-AC_OUTPUT(Makefile)
+AC_OUTPUT([libnfs.pc])