From e95b4a80df703a2091206c8e432c6ed6e78451d8 Mon Sep 17 00:00:00 2001 From: yoe Date: Sun, 27 Jun 2004 11:34:55 +0000 Subject: [PATCH 1/1] r74: * Added checks for GLib (not used yet, but will be in this release) * Improved checks for nbd.h to - check whether the file is recent enough - error out of configure if it isn't found --- Makefile.am | 2 ++ cliserv.h | 10 +--------- configure.ac | 49 +++++++++++++++++++++++++++---------------------- nbd-server.c | 2 ++ 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0505999..7ce6308 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 +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 diff --git a/cliserv.h b/cliserv.h index ebcb036..b05e7ee 100644 --- 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 -#ifdef HAVE_LOCAL_NBD_H -#include "nbd.h" -#else -#ifdef HAVE_LINUX_NBD_H -#include -#else -#error I need an nbd.h somewhere. Either install it in or put it in the current directory. -#endif -#endif +#include NBD_H #if NBD_LFS==1 #define _LARGEFILE_SOURCE diff --git a/configure.ac b/configure.ac index 61b7660..989733f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,12 +1,12 @@ dnl Configure script for NBD system dnl (c) 1998 Martin Mares , (c) 2000 Pavel Machek , -dnl (c) 2003-2004 Wouter Verhelst +dnl (c) 2003-2004 Wouter Verhelst 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 @@ -27,7 +27,7 @@ fi 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 @@ -46,13 +46,7 @@ else 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 @@ -71,19 +65,30 @@ case "`uname`" in ;; *) 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 +#ifdef LOCAL_END_REQUEST +#error not here +#endif +], + [AC_DEFINE(NBD_H, ) 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]) -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 diff --git a/nbd-server.c b/nbd-server.c index 60f8a46..58050bc 100644 --- a/nbd-server.c +++ b/nbd-server.c @@ -81,6 +81,8 @@ #include #include +#include + /* used in cliserv.h, so must come first */ #define MY_NAME "nbd_server" #include "cliserv.h" -- 1.7.10.4