]> xenbits.xensource.com Git - xcp/xen-api-libs.git/commitdiff
Use autoconf to detect: xen headers; XS_RESTRICT in patchqueue; ocaml packages xmlm...
authorDavid Scott <dave.scott@eu.citrix.com>
Wed, 11 Nov 2009 17:41:48 +0000 (17:41 +0000)
committerDavid Scott <dave.scott@eu.citrix.com>
Wed, 11 Nov 2009 17:41:48 +0000 (17:41 +0000)
Modify the xen-api-libs.hg master Makefile to conditionally compile only those libraries whose system dependencies are met. So we:
* don't compile the xen libraries (xc, xb etc) if xen/xen.h is missing
* don't compile the cdrom library if the linux ioctls are missing
* don't compile the xml-light2, rss libraries if xmlm is missing
* don't compile rpc-light if type-conv is missing
* don't compile camldm if libdevicemapper is missing

This makes it easier for these libs to be used by other tools which may not need (eg) the xen or devicemapper bindings. Note that xen-api.hg needs most of these so any missing library will lead to a xen-api.hg build failure.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Makefile.in
configure.ac
log/Makefile
log/syslog_stubs.c
stdext/config.h.in [deleted file]

index 6fbb68617ecb3303b7996d404e626dc1d5756430..839b9e7132975cd05faea092b90d659a047ce5c9 100644 (file)
+AUTOMAKE_OPTIONS = foreign
+HAVE_XEN = @XEN@
+HAVE_DEVICE_MAPPER = @DEVICE_MAPPER@
+HAVE_LINUX_CDROM = @LINUX_CDROM@
+HAVE_XMLM = @OCAML_PKG_xmlm@
+HAVE_TYPECONV = @OCAML_PKG_type_conv@
+
 .PHONY: all
 all:
        $(MAKE) -C uuid
-       $(MAKE) -C camldm
        $(MAKE) -C stdext
        $(MAKE) -C log
        $(MAKE) -C stunnel
        $(MAKE) -C pciutil
-       $(MAKE) -C cdrom
-       $(MAKE) -C xml-light2
-       $(MAKE) -C rss
-       $(MAKE) -C rpc-light
        $(MAKE) -C http-svr
        $(MAKE) -C close-and-exec
        $(MAKE) -C sexpr
+ifeq ($(HAVE_TYPECONV),type-conv)
+       $(MAKE) -C rpc-light
+endif
+ifeq ($(HAVE_XMLM),xmlm)
+       $(MAKE) -C xml-light2
+       $(MAKE) -C rss
+endif
+ifeq ($(HAVE_LINUX_CDROM),1)
+       $(MAKE) -C cdrom
+endif
+ifeq ($(HAVE_DEVICE_MAPPER),1)
+       $(MAKE) -C camldm
+endif
 
 .PHONY: allxen
 allxen:
+ifeq ($(HAVE_XEN),1)
        $(MAKE) -C mmap
        $(MAKE) -C xc
        $(MAKE) -C xb
        $(MAKE) -C xs
        $(MAKE) -C xsrpc
        $(MAKE) -C eventchn
+endif
 
 install:
        $(MAKE) -C uuid install
-       $(MAKE) -C camldm install
        $(MAKE) -C stdext install
        $(MAKE) -C log install
        $(MAKE) -C stunnel install
        $(MAKE) -C pciutil install
-       $(MAKE) -C cdrom install
-       $(MAKE) -C xml-light2 install
-       $(MAKE) -C rss install
-       $(MAKE) -C rpc-light install
        $(MAKE) -C http-svr install
        $(MAKE) -C close-and-exec install
        $(MAKE) -C sexpr install
+ifeq ($(HAVE_TYPECONV),type-conv)
+       $(MAKE) -C rpc-light install
+endif
+ifeq ($(HAVE_XMLM),xmlm)
+       $(MAKE) -C xml-light2 install
+       $(MAKE) -C rss install
+endif
+ifeq ($(HAVE_LINUX_CDROM),1)
+       $(MAKE) -C cdrom install
+endif
+ifeq ($(HAVE_DEVICE_MAPPER),1)
+       $(MAKE) -C camldm install
+endif
 
 installxen:
+ifeq ($(HAVE_XEN),1)
        $(MAKE) -C mmap install
        $(MAKE) -C xc install
        $(MAKE) -C xb install
        $(MAKE) -C xs install
        $(MAKE) -C xsrpc install
        $(MAKE) -C eventchn install
+endif
 
 uninstall:
        $(MAKE) -C uuid uninstall
-       $(MAKE) -C camldm uninstall
        $(MAKE) -C stdext uninstall
        $(MAKE) -C log uninstall
        $(MAKE) -C stunnel uninstall
        $(MAKE) -C pciutil uninstall
-       $(MAKE) -C cdrom uninstall
-       $(MAKE) -C xml-light2 uninstall
-       $(MAKE) -C rss uninstall
-       $(MAKE) -C rpc-light uninstall
        $(MAKE) -C http-svr uninstall
        $(MAKE) -C close-and-exec uninstall
        $(MAKE) -C sexpr uninstall
+ifeq ($(HAVE_TYPECONV),type-conv)
+       $(MAKE) -C rpc-light uninstall
+endif
+ifeq ($(HAVE_XMLM),xmlm)
+       $(MAKE) -C xml-light2 uninstall
+       $(MAKE) -C rss uninstall
+endif
+ifeq ($(HAVE_LINUX_CDROM),1)
+       $(MAKE) -C cdrom uninstall
+endif
+ifeq ($(HAVE_DEVICE_MAPPER),1)
+       $(MAKE) -C camldm uninstall
+endif
 
 uninstallxen:
+ifeq ($(HAVE_XEN),1)
        $(MAKE) -C eventchn uninstall
        $(MAKE) -C xsrpc uninstall
        $(MAKE) -C xs uninstall
        $(MAKE) -C xb uninstall
        $(MAKE) -C xc uninstall
        $(MAKE) -C mmap uninstall
+endif
 
 bins:
        $(MAKE) -C pciutil bins
index 5c8c18a3a4d6dacf0a6090dcb8cf5c54089ae106..dd540174c50ad3bd1c9d63ea7f0df2eed5bcbf00 100644 (file)
@@ -1,10 +1,10 @@
 # -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-AC_PREREQ([2.63])
+AC_PREREQ([2.59])
 AC_INIT([xen-api-libs], [0.1], [xen-api@lists.xensource.com])
 AC_CONFIG_SRCDIR([])
-AC_CONFIG_HEADERS([stdext/config.h])
+AC_CONFIG_HEADERS([include/config.h])
 AC_CONFIG_AUX_DIR(./mk)
 
 AC_CANONICAL_SYSTEM
@@ -26,8 +26,17 @@ AC_PROG_MAKE_SET
 
 # Checks for header files.
 AC_CHECK_HEADERS([string.h sys/param.h])
+AC_CHECK_HEADERS([xen/xen.h],[XEN=1],[XEN=0])
+AC_CHECK_HEADERS([libdevmapper.h], [DEVICE_MAPPER=1], [DEVICE_MAPPER=0])
+AC_CHECK_HEADERS([linux/cdrom.h], [LINUX_CDROM=1], [LINUX_CDROM=0])
 
 # Checks for typedefs, structures, and compiler characteristics.
+AC_CHECK_DECLS([XS_RESTRICT],[],[],[
+[
+#include <errno.h>
+#include <xenctrl.h>
+#include <xen/io/xs_wire.h>
+]])
 
 # Checks for library functions.
 AC_CHECK_FUNCS([realpath])
@@ -42,5 +51,13 @@ if test "$OCAMLFIND" = "no"; then
   AC_MSG_ERROR([You must install OCaml findlib (the ocamlfind command)])
 fi
 
+AC_CHECK_OCAML_PKG([xmlm])
+AC_CHECK_OCAML_PKG([type-conv])
+
 AC_CONFIG_FILES([Makefile])
+AC_SUBST([XEN])
+AC_SUBST([DEVICE_MAPPER])
+AC_SUBST([LINUX_CDROM])
+AC_SUBST([OCAML_PKG_xmlm])
+AC_SUBST([OCAML_PKG_type_conv])
 AC_OUTPUT
index 7a9702b400a19ec281d74a94a002737789215534..aa3f6084df0285231fd3fd59c5a7d699f34e6ede 100644 (file)
@@ -1,5 +1,6 @@
 CC = gcc
-CFLAGS = -Wall -fPIC -O2 -I/opt/xensource/lib/ocaml
+OCAMLLOC := $(shell ocamlc -where)
+CFLAGS = -Wall -fPIC -O2 -I/opt/xensource/lib/ocaml -I$(OCAMLLOC)
 OCAMLC = ocamlc
 OCAMLOPT = ocamlopt 
 
index 4ecaa7a057d052fbafbb7882bc26d34b4af0b7a6..408ecefe320eac2c7a23a12e5d8e019fefd5d1cc 100644 (file)
  */
 
 #include <syslog.h>
+#include <string.h>
 #include <caml/mlvalues.h>
 #include <caml/memory.h>
 #include <caml/alloc.h>
 #include <caml/custom.h>
+#include <caml/signals.h>
 
 static int __syslog_level_table[] = {
        LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING,
diff --git a/stdext/config.h.in b/stdext/config.h.in
deleted file mode 100644 (file)
index 77a8732..0000000
+++ /dev/null
@@ -1 +0,0 @@
-// Autoconf config.h file