r74: * Added checks for GLib (not used yet, but will be in this release)
authoryoe <yoe>
Sun, 27 Jun 2004 11:34:55 +0000 (11:34 +0000)
committeryoe <yoe>
Sun, 27 Jun 2004 11:34:55 +0000 (11:34 +0000)
* Improved checks for nbd.h to
  - check whether the file is recent enough
  - error out of configure if it isn't found

Makefile.am
cliserv.h
configure.ac
nbd-server.c

index 0505999..7ce6308 100644 (file)
@@ -2,6 +2,8 @@ bin_PROGRAMS = nbd-server
 EXTRA_PROGRAMS = nbd-client
 nbd_client_SOURCES = nbd-client.c cliserv.h
 nbd_server_SOURCES = nbd-server.c cliserv.h
 EXTRA_PROGRAMS = nbd-client
 nbd_client_SOURCES = nbd-client.c cliserv.h
 nbd_server_SOURCES = nbd-server.c cliserv.h
+nbd_server_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@
+nbd_server_LDADD = @GLIB_LIBS@
 man1_MANS = nbd-server.1
 man8_MANS = nbd-client.8
 EXTRA_DIST = nbd-client.8.sgml nbd-server.1.sgml gznbd winnbd
 man1_MANS = nbd-server.1
 man8_MANS = nbd-client.8
 EXTRA_DIST = nbd-client.8.sgml nbd-server.1.sgml gznbd winnbd
index ebcb036..b05e7ee 100644 (file)
--- a/cliserv.h
+++ b/cliserv.h
@@ -35,15 +35,7 @@ typedef unsigned long long u64;
 #error I need at least some 64-bit type
 #endif
 
 #error I need at least some 64-bit type
 #endif
 
-#ifdef HAVE_LOCAL_NBD_H
-#include "nbd.h"
-#else
-#ifdef HAVE_LINUX_NBD_H
-#include <linux/nbd.h>
-#else
-#error I need an nbd.h somewhere. Either install it in <linux/nbd.h> or put it in the current directory.
-#endif
-#endif
+#include NBD_H
 
 #if NBD_LFS==1
 #define _LARGEFILE_SOURCE
 
 #if NBD_LFS==1
 #define _LARGEFILE_SOURCE
index 61b7660..989733f 100644 (file)
@@ -1,12 +1,12 @@
 dnl Configure script for NBD system
 dnl (c) 1998 Martin Mares <mj@ucw.cz>, (c) 2000 Pavel Machek <pavel@ucw.cz>,
 dnl Configure script for NBD system
 dnl (c) 1998 Martin Mares <mj@ucw.cz>, (c) 2000 Pavel Machek <pavel@ucw.cz>,
-dnl (c) 2003-2004 Wouter Verhelst
+dnl (c) 2003-2004 Wouter Verhelst <wouter@debian.org>
 AC_INIT([nbd],[2.7.99pre2.8],[wouter@debian.org])
 AM_INIT_AUTOMAKE()
 
 AC_ARG_ENABLE(
   lfs,
 AC_INIT([nbd],[2.7.99pre2.8],[wouter@debian.org])
 AM_INIT_AUTOMAKE()
 
 AC_ARG_ENABLE(
   lfs,
-  AS_HELP_STRING(--enable-lfs,Enable Large File Support),
+  AC_HELP_STRING(--enable-lfs,Enable Large File Support),
   [
     if test "x$enableval" = "xyes" ; then
       NBD_LFS=1
   [
     if test "x$enableval" = "xyes" ; then
       NBD_LFS=1
@@ -27,7 +27,7 @@ fi
 
 AC_ARG_ENABLE(
   syslog,
 
 AC_ARG_ENABLE(
   syslog,
-  AS_HELP_STRING(--enable-syslog,Enable Syslog logging),
+  AC_HELP_STRING(--enable-syslog,Enable Syslog logging),
   [
     if test "x$enableval" = "xyes" ; then
       ISSERVER=1
   [
     if test "x$enableval" = "xyes" ; then
       ISSERVER=1
@@ -46,13 +46,7 @@ else
 fi
 
 AC_PROG_CC
 fi
 
 AC_PROG_CC
-AC_MSG_CHECKING(whether warnings should be enabled)
-if test -n "$GCC" ; then
-  AC_MSG_RESULT(yes)
-  #CFLAGS="$CFLAGS -Wall -W -Wno-parentheses -Wstrict-prototypes -Wno-unused"
-else
-  AC_MSG_RESULT(no)
-fi
+AC_PROG_CPP
 AC_PROG_INSTALL
 AC_C_BIGENDIAN
 AC_C_INLINE
 AC_PROG_INSTALL
 AC_C_BIGENDIAN
 AC_C_INLINE
@@ -71,19 +65,30 @@ case "`uname`" in
               ;;
      *) AC_MSG_RESULT(no) ;;
 esac
               ;;
      *) AC_MSG_RESULT(no) ;;
 esac
-AC_MSG_CHECKING(whether there is a local nbd.h)
-if test -f nbd.h; then
-  AC_DEFINE(HAVE_LOCAL_NBD_H,1, [Define to 1 if you want to use a local nbd.h (not provided, must be supplied by you)])
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-fi
-AC_CHECK_HEADERS([linux/nbd.h],,,
-[[#define u32 unsigned int
-#define u64 unsigned long int
-]])
+AC_MSG_CHECKING(where to find a working nbd.h)
+dnl We need to check for NBD_CMD_DISC, but that's part of an enum, it is not
+dnl #define'd. Therefore, we check for something which is differently #define'd
+dnl in the old or new versions, even if we don't really care about that.
+dnl This might break at some time, but it should work for now, so...
+AC_TRY_CPP([#include "nbd.h"
+#ifdef LOCAL_END_REQUEST
+#error not here
+#endif
+], 
+  [AC_DEFINE(NBD_H, "nbd.h", Set to where a (recent enough) nbd.h can be found)
+    NBD_H='"nbd.h"'],
+  AC_TRY_CPP([#include <linux/nbd.h>
+#ifdef LOCAL_END_REQUEST
+#error not here
+#endif
+],
+    [AC_DEFINE(NBD_H, <linux/nbd.h>) NBD_H='<linux/nbd.h>'],
+    AC_MSG_ERROR(Could not find a (recent enough) nbd.h)
+  )
+)
+AC_MSG_RESULT($NBD_H)
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h sys/ioctl.h sys/mount.h sys/socket.h syslog.h])
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h sys/ioctl.h sys/mount.h sys/socket.h syslog.h])
-AM_PATH_GLIB_2_0(2.2.3, [HAVE_GLIB=yes], AC_MSG_ERROR([Missing glib]))
+AM_PATH_GLIB_2_0(2.2.0, [HAVE_GLIB=yes], AC_MSG_ERROR([Missing glib]))
 AC_HEADER_SYS_WAIT
 AC_TYPE_OFF_T
 AC_TYPE_PID_T
 AC_HEADER_SYS_WAIT
 AC_TYPE_OFF_T
 AC_TYPE_PID_T
index 60f8a46..58050bc 100644 (file)
@@ -81,6 +81,8 @@
 #include <strings.h>
 #include <dirent.h>
 
 #include <strings.h>
 #include <dirent.h>
 
+#include <glib.h>
+
 /* used in cliserv.h, so must come first */
 #define MY_NAME "nbd_server"
 #include "cliserv.h"
 /* used in cliserv.h, so must come first */
 #define MY_NAME "nbd_server"
 #include "cliserv.h"