Mailing List Archive

[VTPM v7 6/8] Add autoconf to stubdom
Please rerun autoconf after commiting this patch

Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu>
---
autogen.sh | 2 +
config/Stubdom.mk.in | 45 ++++++++++++++++
{tools/m4 => m4}/curses.m4 | 0
m4/depends.m4 | 15 ++++++
{tools/m4 => m4}/extfs.m4 | 0
{tools/m4 => m4}/features.m4 | 0
{tools/m4 => m4}/fetcher.m4 | 0
{tools/m4 => m4}/ocaml.m4 | 0
{tools/m4 => m4}/path_or_fail.m4 | 0
{tools/m4 => m4}/pkg.m4 | 0
{tools/m4 => m4}/pthread.m4 | 0
{tools/m4 => m4}/ptyfuncs.m4 | 0
{tools/m4 => m4}/python_devel.m4 | 0
{tools/m4 => m4}/python_version.m4 | 0
{tools/m4 => m4}/savevar.m4 | 0
{tools/m4 => m4}/set_cflags_ldflags.m4 | 0
m4/stubdom.m4 | 89 ++++++++++++++++++++++++++++++++
{tools/m4 => m4}/uuid.m4 | 0
stubdom/Makefile | 55 +++++---------------
stubdom/configure.ac | 58 +++++++++++++++++++++
tools/configure.ac | 28 +++++-----
21 files changed, 236 insertions(+), 56 deletions(-)
create mode 100644 config/Stubdom.mk.in
rename {tools/m4 => m4}/curses.m4 (100%)
create mode 100644 m4/depends.m4
rename {tools/m4 => m4}/extfs.m4 (100%)
rename {tools/m4 => m4}/features.m4 (100%)
rename {tools/m4 => m4}/fetcher.m4 (100%)
rename {tools/m4 => m4}/ocaml.m4 (100%)
rename {tools/m4 => m4}/path_or_fail.m4 (100%)
rename {tools/m4 => m4}/pkg.m4 (100%)
rename {tools/m4 => m4}/pthread.m4 (100%)
rename {tools/m4 => m4}/ptyfuncs.m4 (100%)
rename {tools/m4 => m4}/python_devel.m4 (100%)
rename {tools/m4 => m4}/python_version.m4 (100%)
rename {tools/m4 => m4}/savevar.m4 (100%)
rename {tools/m4 => m4}/set_cflags_ldflags.m4 (100%)
create mode 100644 m4/stubdom.m4
rename {tools/m4 => m4}/uuid.m4 (100%)
create mode 100644 stubdom/configure.ac

diff --git a/autogen.sh b/autogen.sh
index 58a71ce..ada482c 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -2,3 +2,5 @@
cd tools
autoconf
autoheader
+cd ../stubdom
+autoconf
diff --git a/config/Stubdom.mk.in b/config/Stubdom.mk.in
new file mode 100644
index 0000000..432efd7
--- /dev/null
+++ b/config/Stubdom.mk.in
@@ -0,0 +1,45 @@
+# Prefix and install folder
+prefix := @prefix@
+PREFIX := $(prefix)
+exec_prefix := @exec_prefix@
+libdir := @libdir@
+LIBDIR := $(libdir)
+
+# Path Programs
+CMAKE := @CMAKE@
+WGET := @WGET@ -c
+
+# A debug build of stubdom? //FIXME: Someone make this do something
+debug := @debug@
+vtpm = @vtpm@
+
+STUBDOM_TARGETS := @STUBDOM_TARGETS@
+STUBDOM_BUILD := @STUBDOM_BUILD@
+STUBDOM_INSTALL := @STUBDOM_INSTALL@
+
+ZLIB_VERSION := @ZLIB_VERSION@
+ZLIB_URL := @ZLIB_URL@
+
+LIBPCI_VERSION := @LIBPCI_VERSION@
+LIBPCI_URL := @LIBPCI_URL@
+
+NEWLIB_VERSION := @NEWLIB_VERSION@
+NEWLIB_URL := @NEWLIB_URL@
+
+LWIP_VERSION := @LWIP_VERSION@
+LWIP_URL := @LWIP_URL@
+
+GRUB_VERSION := @GRUB_VERSION@
+GRUB_URL := @GRUB_URL@
+
+OCAML_VERSION := @OCAML_VERSION@
+OCAML_URL := @OCAML_URL@
+
+GMP_VERSION := @GMP_VERSION@
+GMP_URL := @GMP_URL@
+
+POLARSSL_VERSION := @POLARSSL_VERSION@
+POLARSSL_URL := @POLARSSL_URL@
+
+TPMEMU_VERSION := @TPMEMU_VERSION@
+TPMEMU_URL := @TPMEMU_URL@
diff --git a/tools/m4/curses.m4 b/m4/curses.m4
similarity index 100%
rename from tools/m4/curses.m4
rename to m4/curses.m4
diff --git a/m4/depends.m4 b/m4/depends.m4
new file mode 100644
index 0000000..916e665
--- /dev/null
+++ b/m4/depends.m4
@@ -0,0 +1,15 @@
+
+AC_DEFUN([AX_DEPENDS_PATH_PROG], [
+AS_IF([test "x$$1" = "xy"], [AX_PATH_PROG_OR_FAIL([$2], [$3])], [
+AS_IF([test "x$$1" = "xn"], [
+$2="/$3-disabled-in-configure-script"
+], [
+AC_PATH_PROG([$2], [$3], [no])
+AS_IF([test x"${$2}" = "xno"], [
+$1=n
+$2="/$3-disabled-in-configure-script"
+])
+])
+])
+AC_SUBST($2)
+])
diff --git a/tools/m4/extfs.m4 b/m4/extfs.m4
similarity index 100%
rename from tools/m4/extfs.m4
rename to m4/extfs.m4
diff --git a/tools/m4/features.m4 b/m4/features.m4
similarity index 100%
rename from tools/m4/features.m4
rename to m4/features.m4
diff --git a/tools/m4/fetcher.m4 b/m4/fetcher.m4
similarity index 100%
rename from tools/m4/fetcher.m4
rename to m4/fetcher.m4
diff --git a/tools/m4/ocaml.m4 b/m4/ocaml.m4
similarity index 100%
rename from tools/m4/ocaml.m4
rename to m4/ocaml.m4
diff --git a/tools/m4/path_or_fail.m4 b/m4/path_or_fail.m4
similarity index 100%
rename from tools/m4/path_or_fail.m4
rename to m4/path_or_fail.m4
diff --git a/tools/m4/pkg.m4 b/m4/pkg.m4
similarity index 100%
rename from tools/m4/pkg.m4
rename to m4/pkg.m4
diff --git a/tools/m4/pthread.m4 b/m4/pthread.m4
similarity index 100%
rename from tools/m4/pthread.m4
rename to m4/pthread.m4
diff --git a/tools/m4/ptyfuncs.m4 b/m4/ptyfuncs.m4
similarity index 100%
rename from tools/m4/ptyfuncs.m4
rename to m4/ptyfuncs.m4
diff --git a/tools/m4/python_devel.m4 b/m4/python_devel.m4
similarity index 100%
rename from tools/m4/python_devel.m4
rename to m4/python_devel.m4
diff --git a/tools/m4/python_version.m4 b/m4/python_version.m4
similarity index 100%
rename from tools/m4/python_version.m4
rename to m4/python_version.m4
diff --git a/tools/m4/savevar.m4 b/m4/savevar.m4
similarity index 100%
rename from tools/m4/savevar.m4
rename to m4/savevar.m4
diff --git a/tools/m4/set_cflags_ldflags.m4 b/m4/set_cflags_ldflags.m4
similarity index 100%
rename from tools/m4/set_cflags_ldflags.m4
rename to m4/set_cflags_ldflags.m4
diff --git a/m4/stubdom.m4 b/m4/stubdom.m4
new file mode 100644
index 0000000..0bf0d2c
--- /dev/null
+++ b/m4/stubdom.m4
@@ -0,0 +1,89 @@
+AC_DEFUN([AX_STUBDOM_DEFAULT_ENABLE], [
+AC_ARG_ENABLE([$1],
+AS_HELP_STRING([--disable-$1], [Build and install $1 (default is ENABLED)]),[
+AX_STUBDOM_INTERNAL([$1], [$2])
+],[
+AX_ENABLE_STUBDOM([$1], [$2])
+])
+AC_SUBST([$2])
+])
+
+AC_DEFUN([AX_STUBDOM_DEFAULT_DISABLE], [
+AC_ARG_ENABLE([$1],
+AS_HELP_STRING([--enable-$1], [Build and install $1 (default is DISABLED)]),[
+AX_STUBDOM_INTERNAL([$1], [$2])
+],[
+AX_DISABLE_STUBDOM([$1], [$2])
+])
+AC_SUBST([$2])
+])
+
+AC_DEFUN([AX_STUBDOM_CONDITIONAL], [
+AC_ARG_ENABLE([$1],
+AS_HELP_STRING([--enable-$1], [Build and install $1]),[
+AX_STUBDOM_INTERNAL([$1], [$2])
+])
+])
+
+AC_DEFUN([AX_STUBDOM_CONDITIONAL_FINISH], [
+AS_IF([test "x$$2" = "xy" || test "x$$2" = "x"], [
+AX_ENABLE_STUBDOM([$1],[$2])
+],[
+AX_DISABLE_STUBDOM([$1],[$2])
+])
+AC_SUBST([$2])
+])
+
+AC_DEFUN([AX_ENABLE_STUBDOM], [
+$2=y
+STUBDOM_TARGETS="$STUBDOM_TARGETS $2"
+STUBDOM_BUILD="$STUBDOM_BUILD $1"
+STUBDOM_INSTALL="$STUBDOM_INSTALL install-$2"
+])
+
+AC_DEFUN([AX_DISABLE_STUBDOM], [
+$2=n
+])
+
+dnl Don't call this outside of this file
+AC_DEFUN([AX_STUBDOM_INTERNAL], [
+AS_IF([test "x$enableval" = "xyes"], [
+AX_ENABLE_STUBDOM([$1], [$2])
+],[
+AS_IF([test "x$enableval" = "xno"],[
+AX_DISABLE_STUBDOM([$1], [$2])
+])
+])
+])
+
+AC_DEFUN([AX_STUBDOM_FINISH], [.
+AC_SUBST(STUBDOM_TARGETS)
+AC_SUBST(STUBDOM_BUILD)
+AC_SUBST(STUBDOM_INSTALL)
+echo "Will build the following stub domains:"
+for x in $STUBDOM_BUILD; do
+ echo " $x"
+done
+])
+
+AC_DEFUN([AX_STUBDOM_LIB], [
+AC_ARG_VAR([$1_URL], [Download url for $2])
+AS_IF([test "x$$1_URL" = "x"], [
+ AS_IF([test "x$extfiles" = "xy"],
+ [$1_URL=\@S|@\@{:@XEN_EXTFILES_URL\@:}@],
+ [$1_URL="$4"])
+ ])
+$1_VERSION="$3"
+AC_SUBST($1_URL)
+AC_SUBST($1_VERSION)
+])
+
+AC_DEFUN([AX_STUBDOM_LIB_NOEXT], [
+AC_ARG_VAR([$1_URL], [Download url for $2])
+AS_IF([test "x$$1_URL" = "x"], [
+ $1_URL="$4"
+ ])
+$1_VERSION="$3"
+AC_SUBST($1_URL)
+AC_SUBST($1_VERSION)
+])
diff --git a/tools/m4/uuid.m4 b/m4/uuid.m4
similarity index 100%
rename from tools/m4/uuid.m4
rename to m4/uuid.m4
diff --git a/stubdom/Makefile b/stubdom/Makefile
index fc70d88..709b71e 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -6,44 +6,7 @@ export XEN_OS=MiniOS
export stubdom=y
export debug=y
include $(XEN_ROOT)/Config.mk
-
-#ZLIB_URL?=http://www.zlib.net
-ZLIB_URL=$(XEN_EXTFILES_URL)
-ZLIB_VERSION=1.2.3
-
-#LIBPCI_URL?=http://www.kernel.org/pub/software/utils/pciutils
-LIBPCI_URL?=$(XEN_EXTFILES_URL)
-LIBPCI_VERSION=2.2.9
-
-#NEWLIB_URL?=ftp://sources.redhat.com/pub/newlib
-NEWLIB_URL?=$(XEN_EXTFILES_URL)
-NEWLIB_VERSION=1.16.0
-
-#LWIP_URL?=http://download.savannah.gnu.org/releases/lwip
-LWIP_URL?=$(XEN_EXTFILES_URL)
-LWIP_VERSION=1.3.0
-
-#GRUB_URL?=http://alpha.gnu.org/gnu/grub
-GRUB_URL?=$(XEN_EXTFILES_URL)
-GRUB_VERSION=0.97
-
-#OCAML_URL?=$(XEN_EXTFILES_URL)
-OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
-OCAML_VERSION=3.11.0
-
-GMP_VERSION=4.3.2
-GMP_URL?=$(XEN_EXTFILES_URL)
-#GMP_URL?=ftp://ftp.gmplib.org/pub/gmp-$(GMP_VERSION)
-
-POLARSSL_VERSION=1.1.4
-POLARSSL_URL?=$(XEN_EXTFILES_URL)
-#POLARSSL_URL?=http://polarssl.org/code/releases
-
-TPMEMU_VERSION=0.7.4
-TPMEMU_URL?=$(XEN_EXTFILES_URL)
-#TPMEMU_URL?=http://download.berlios.de/tpm-emulator
-
-WGET=wget -c
+-include $(XEN_ROOT)/config/Stubdom.mk

GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH)
ifeq ($(XEN_TARGET_ARCH),x86_32)
@@ -86,12 +49,12 @@ TARGET_CPPFLAGS += -I$(XEN_ROOT)/xen/include

TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib

-TARGETS=ioemu c caml grub xenstore vtpm vtpmmgr
+TARGETS=$(STUBDOM_TARGETS)

.PHONY: all
all: build
ifeq ($(STUBDOM_SUPPORTED),1)
-build: genpath ioemu-stubdom c-stubdom pv-grub xenstore-stubdom vtpm-stubdom vtpmmgrdom
+build: genpath $(STUBDOM_BUILD)
else
build: genpath
endif
@@ -245,7 +208,7 @@ tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
mv tpm_emulator-$(TPMEMU_VERSION) $@
patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;
mkdir $@/build
- cd $@/build; cmake .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
+ cd $@/build; $(CMAKE) .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
touch $@

TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a
@@ -483,7 +446,7 @@ xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxc xenstore
#########

ifeq ($(STUBDOM_SUPPORTED),1)
-install: genpath install-readme install-ioemu install-grub install-xenstore install-vtpm install-vtpmmgr
+install: genpath install-readme $(STUBDOM_INSTALL)
else
install: genpath
endif
@@ -503,6 +466,8 @@ install-grub: pv-grub
$(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)"
$(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-grub/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/pv-grub-$(XEN_TARGET_ARCH).gz"

+install-caml: caml-stubdom
+
install-xenstore: xenstore-stubdom
$(INSTALL_DIR) "$(DESTDIR)/usr/lib/xen/boot"
$(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-xenstore/mini-os.gz "$(DESTDIR)/usr/lib/xen/boot/xenstore-stubdom.gz"
@@ -581,3 +546,9 @@ downloadclean: patchclean

.PHONY: distclean
distclean: downloadclean
+ -rm ../config/Stubdom.mk
+
+ifeq (,$(findstring clean,$(MAKECMDGOALS)))
+$(XEN_ROOT)/config/Stubdom.mk:
+ $(error You have to run ./configure before building or installing stubdom)
+endif
diff --git a/stubdom/configure.ac b/stubdom/configure.ac
new file mode 100644
index 0000000..db44d4a
--- /dev/null
+++ b/stubdom/configure.ac
@@ -0,0 +1,58 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.67])
+AC_INIT([Xen Hypervisor Stub Domains], m4_esyscmd([../version.sh ../xen/Makefile]),
+ [xen-devel@lists.xen.org], [xen], [http://www.xen.org/])
+AC_CONFIG_SRCDIR([../extras/mini-os/kernel.c])
+AC_CONFIG_FILES([../config/Stubdom.mk])
+AC_PREFIX_DEFAULT([/usr])
+AC_CONFIG_AUX_DIR([../])
+
+# M4 Macro includes
+m4_include([../m4/stubdom.m4])
+m4_include([../m4/features.m4])
+m4_include([../m4/path_or_fail.m4])
+m4_include([../m4/depends.m4])
+
+# Enable/disable stub domains
+AX_STUBDOM_DEFAULT_ENABLE([ioemu-stubdom], [ioemu])
+AX_STUBDOM_DEFAULT_DISABLE([c-stubdom], [c])
+AX_STUBDOM_DEFAULT_ENABLE([caml-stubdom], [caml])
+AX_STUBDOM_DEFAULT_ENABLE([pv-grub], [grub])
+AX_STUBDOM_DEFAULT_ENABLE([xenstore-stubdom], [xenstore])
+AX_STUBDOM_CONDITIONAL([vtpm-stubdom], [vtpm])
+AX_STUBDOM_CONDITIONAL([vtpmmgrdom], [vtpmmgr])
+
+AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of stubdom])
+AX_ARG_DEFAULT_ENABLE([extfiles], [Use xen extfiles repository for libraries])
+
+AC_ARG_VAR([CMAKE], [Path to the cmake program])
+AC_ARG_VAR([WGET], [Path to wget program])
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_MAKE_SET
+AC_PROG_INSTALL
+AX_PATH_PROG_OR_FAIL([WGET], [wget])
+
+# Checks for programs that depend on a feature
+AX_DEPENDS_PATH_PROG([vtpm], [CMAKE], [cmake])
+
+# Stubdom libraries version and url setup
+AX_STUBDOM_LIB([ZLIB], [zlib], [1.2.3], [http://www.zlib.net])
+AX_STUBDOM_LIB([LIBPCI], [libpci], [2.2.9], [http://www.kernel.org/pub/software/utils/pciutils])
+AX_STUBDOM_LIB([NEWLIB], [newlib], [1.16.0], [ftp://sources.redhat.com/pub/newlib])
+AX_STUBDOM_LIB([LWIP], [lwip], [1.3.0], [http://download.savannah.gnu.org/releases/lwip])
+AX_STUBDOM_LIB([GRUB], [grub], [0.97], [http://alpha.gnu.org/gnu/grub])
+AX_STUBDOM_LIB_NOEXT([OCAML], [ocaml], [3.11.0], [http://caml.inria.fr/pub/distrib/ocaml-3.11])
+AX_STUBDOM_LIB([GMP], [libgmp], [4.3.2], [ftp://ftp.gmplib.org/pub/gmp-4.3.2])
+AX_STUBDOM_LIB([POLARSSL], [polarssl], [1.1.4], [http://polarssl.org/code/releases])
+AX_STUBDOM_LIB([TPMEMU], [berlios tpm emulator], [0.7.4], [http://download.berlios.de/tpm-emulator])
+
+#Conditionally enable these stubdoms based on the presense of dependencies
+AX_STUBDOM_CONDITIONAL_FINISH([vtpm-stubdom], [vtpm])
+AX_STUBDOM_CONDITIONAL_FINISH([vtpmmgrdom], [vtpmmgr])
+
+AX_STUBDOM_FINISH
+AC_OUTPUT()
diff --git a/tools/configure.ac b/tools/configure.ac
index 586313d..971e3e9 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -22,20 +22,20 @@ APPEND_INCLUDES and APPEND_LIB instead when possible.])
AC_CANONICAL_HOST

# M4 Macro includes
-m4_include([m4/savevar.m4])
-m4_include([m4/features.m4])
-m4_include([m4/path_or_fail.m4])
-m4_include([m4/python_version.m4])
-m4_include([m4/python_devel.m4])
-m4_include([m4/ocaml.m4])
-m4_include([m4/set_cflags_ldflags.m4])
-m4_include([m4/uuid.m4])
-m4_include([m4/pkg.m4])
-m4_include([m4/curses.m4])
-m4_include([m4/pthread.m4])
-m4_include([m4/ptyfuncs.m4])
-m4_include([m4/extfs.m4])
-m4_include([m4/fetcher.m4])
+m4_include([../m4/savevar.m4])
+m4_include([../m4/features.m4])
+m4_include([../m4/path_or_fail.m4])
+m4_include([../m4/python_version.m4])
+m4_include([../m4/python_devel.m4])
+m4_include([../m4/ocaml.m4])
+m4_include([../m4/set_cflags_ldflags.m4])
+m4_include([../m4/uuid.m4])
+m4_include([../m4/pkg.m4])
+m4_include([../m4/curses.m4])
+m4_include([../m4/pthread.m4])
+m4_include([../m4/ptyfuncs.m4])
+m4_include([../m4/extfs.m4])
+m4_include([../m4/fetcher.m4])

# Enable/disable options
AX_ARG_DEFAULT_DISABLE([githttp], [Download GIT repositories via HTTP])
--
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [VTPM v7 6/8] Add autoconf to stubdom [ In reply to ]
On Thu, 2012-12-06 at 18:19 +0000, Matthew Fioravante wrote:
> Please rerun autoconf after commiting this patch
>
> Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu>

This fails for me with :
/local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/test.o: In function `app_main':
/local/scratch/ianc/devel/committer.git/extras/mini-os/test.c:511: multiple definition of `app_main'
/local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/main.o:/local/scratch/ianc/devel/committer.git/extras/mini-os/main.c:187: first defined here
make[2]: *** [/local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/mini-os] Error 1
make[2]: Leaving directory `/local/scratch/ianc/devel/committer.git/extras/mini-os'
make[1]: *** [caml-stubdom] Error 2
make[1]: Leaving directory `/local/scratch/ianc/devel/committer.git/stubdom'
make: *** [install-stubdom] Error 2

I'm only guessing it was this patch, but it was somewhere in this
series.

I'd already done all the autoconf faff and updated .*ignore for you
(adding autom4te.cache, config.log and config.status as appropriate). So
rather than resending please could you provide an incremental fix
against:
git://xenbits.xen.org/people/ianc/xen-unstable.git vtpm

I'll then merge that into the appropriate patch.

It also occurs to me that this series introduces a little bisection blip
where cmake will be required (i.e. from patch 3 until here). The right
way to do this would have been to put the patch introducing autoconf at
the start. I'm inclined to just gloss over that for now, but if you feel
so inclined you could reorder things.

> ---
> autogen.sh | 2 +
> config/Stubdom.mk.in | 45 ++++++++++++++++
> {tools/m4 => m4}/curses.m4 | 0
> m4/depends.m4 | 15 ++++++
> {tools/m4 => m4}/extfs.m4 | 0
> {tools/m4 => m4}/features.m4 | 0
> {tools/m4 => m4}/fetcher.m4 | 0
> {tools/m4 => m4}/ocaml.m4 | 0
> {tools/m4 => m4}/path_or_fail.m4 | 0
> {tools/m4 => m4}/pkg.m4 | 0
> {tools/m4 => m4}/pthread.m4 | 0
> {tools/m4 => m4}/ptyfuncs.m4 | 0
> {tools/m4 => m4}/python_devel.m4 | 0
> {tools/m4 => m4}/python_version.m4 | 0
> {tools/m4 => m4}/savevar.m4 | 0
> {tools/m4 => m4}/set_cflags_ldflags.m4 | 0
> m4/stubdom.m4 | 89 ++++++++++++++++++++++++++++++++
> {tools/m4 => m4}/uuid.m4 | 0
> stubdom/Makefile | 55 +++++---------------
> stubdom/configure.ac | 58 +++++++++++++++++++++
> tools/configure.ac | 28 +++++-----
> 21 files changed, 236 insertions(+), 56 deletions(-)
> create mode 100644 config/Stubdom.mk.in
> rename {tools/m4 => m4}/curses.m4 (100%)
> create mode 100644 m4/depends.m4
> rename {tools/m4 => m4}/extfs.m4 (100%)
> rename {tools/m4 => m4}/features.m4 (100%)
> rename {tools/m4 => m4}/fetcher.m4 (100%)
> rename {tools/m4 => m4}/ocaml.m4 (100%)
> rename {tools/m4 => m4}/path_or_fail.m4 (100%)
> rename {tools/m4 => m4}/pkg.m4 (100%)
> rename {tools/m4 => m4}/pthread.m4 (100%)
> rename {tools/m4 => m4}/ptyfuncs.m4 (100%)
> rename {tools/m4 => m4}/python_devel.m4 (100%)
> rename {tools/m4 => m4}/python_version.m4 (100%)
> rename {tools/m4 => m4}/savevar.m4 (100%)
> rename {tools/m4 => m4}/set_cflags_ldflags.m4 (100%)
> create mode 100644 m4/stubdom.m4
> rename {tools/m4 => m4}/uuid.m4 (100%)
> create mode 100644 stubdom/configure.ac
>
> diff --git a/autogen.sh b/autogen.sh
> index 58a71ce..ada482c 100755
> --- a/autogen.sh
> +++ b/autogen.sh
> @@ -2,3 +2,5 @@
> cd tools
> autoconf
> autoheader
> +cd ../stubdom
> +autoconf
> diff --git a/config/Stubdom.mk.in b/config/Stubdom.mk.in
> new file mode 100644
> index 0000000..432efd7
> --- /dev/null
> +++ b/config/Stubdom.mk.in
> @@ -0,0 +1,45 @@
> +# Prefix and install folder
> +prefix := @prefix@
> +PREFIX := $(prefix)
> +exec_prefix := @exec_prefix@
> +libdir := @libdir@
> +LIBDIR := $(libdir)
> +
> +# Path Programs
> +CMAKE := @CMAKE@
> +WGET := @WGET@ -c
> +
> +# A debug build of stubdom? //FIXME: Someone make this do something
> +debug := @debug@
> +vtpm = @vtpm@
> +
> +STUBDOM_TARGETS := @STUBDOM_TARGETS@
> +STUBDOM_BUILD := @STUBDOM_BUILD@
> +STUBDOM_INSTALL := @STUBDOM_INSTALL@
> +
> +ZLIB_VERSION := @ZLIB_VERSION@
> +ZLIB_URL := @ZLIB_URL@
> +
> +LIBPCI_VERSION := @LIBPCI_VERSION@
> +LIBPCI_URL := @LIBPCI_URL@
> +
> +NEWLIB_VERSION := @NEWLIB_VERSION@
> +NEWLIB_URL := @NEWLIB_URL@
> +
> +LWIP_VERSION := @LWIP_VERSION@
> +LWIP_URL := @LWIP_URL@
> +
> +GRUB_VERSION := @GRUB_VERSION@
> +GRUB_URL := @GRUB_URL@
> +
> +OCAML_VERSION := @OCAML_VERSION@
> +OCAML_URL := @OCAML_URL@
> +
> +GMP_VERSION := @GMP_VERSION@
> +GMP_URL := @GMP_URL@
> +
> +POLARSSL_VERSION := @POLARSSL_VERSION@
> +POLARSSL_URL := @POLARSSL_URL@
> +
> +TPMEMU_VERSION := @TPMEMU_VERSION@
> +TPMEMU_URL := @TPMEMU_URL@
> diff --git a/tools/m4/curses.m4 b/m4/curses.m4
> similarity index 100%
> rename from tools/m4/curses.m4
> rename to m4/curses.m4
> diff --git a/m4/depends.m4 b/m4/depends.m4
> new file mode 100644
> index 0000000..916e665
> --- /dev/null
> +++ b/m4/depends.m4
> @@ -0,0 +1,15 @@
> +
> +AC_DEFUN([AX_DEPENDS_PATH_PROG], [
> +AS_IF([test "x$$1" = "xy"], [AX_PATH_PROG_OR_FAIL([$2], [$3])], [
> +AS_IF([test "x$$1" = "xn"], [
> +$2="/$3-disabled-in-configure-script"
> +], [
> +AC_PATH_PROG([$2], [$3], [no])
> +AS_IF([test x"${$2}" = "xno"], [
> +$1=n
> +$2="/$3-disabled-in-configure-script"
> +])
> +])
> +])
> +AC_SUBST($2)
> +])
> diff --git a/tools/m4/extfs.m4 b/m4/extfs.m4
> similarity index 100%
> rename from tools/m4/extfs.m4
> rename to m4/extfs.m4
> diff --git a/tools/m4/features.m4 b/m4/features.m4
> similarity index 100%
> rename from tools/m4/features.m4
> rename to m4/features.m4
> diff --git a/tools/m4/fetcher.m4 b/m4/fetcher.m4
> similarity index 100%
> rename from tools/m4/fetcher.m4
> rename to m4/fetcher.m4
> diff --git a/tools/m4/ocaml.m4 b/m4/ocaml.m4
> similarity index 100%
> rename from tools/m4/ocaml.m4
> rename to m4/ocaml.m4
> diff --git a/tools/m4/path_or_fail.m4 b/m4/path_or_fail.m4
> similarity index 100%
> rename from tools/m4/path_or_fail.m4
> rename to m4/path_or_fail.m4
> diff --git a/tools/m4/pkg.m4 b/m4/pkg.m4
> similarity index 100%
> rename from tools/m4/pkg.m4
> rename to m4/pkg.m4
> diff --git a/tools/m4/pthread.m4 b/m4/pthread.m4
> similarity index 100%
> rename from tools/m4/pthread.m4
> rename to m4/pthread.m4
> diff --git a/tools/m4/ptyfuncs.m4 b/m4/ptyfuncs.m4
> similarity index 100%
> rename from tools/m4/ptyfuncs.m4
> rename to m4/ptyfuncs.m4
> diff --git a/tools/m4/python_devel.m4 b/m4/python_devel.m4
> similarity index 100%
> rename from tools/m4/python_devel.m4
> rename to m4/python_devel.m4
> diff --git a/tools/m4/python_version.m4 b/m4/python_version.m4
> similarity index 100%
> rename from tools/m4/python_version.m4
> rename to m4/python_version.m4
> diff --git a/tools/m4/savevar.m4 b/m4/savevar.m4
> similarity index 100%
> rename from tools/m4/savevar.m4
> rename to m4/savevar.m4
> diff --git a/tools/m4/set_cflags_ldflags.m4 b/m4/set_cflags_ldflags.m4
> similarity index 100%
> rename from tools/m4/set_cflags_ldflags.m4
> rename to m4/set_cflags_ldflags.m4
> diff --git a/m4/stubdom.m4 b/m4/stubdom.m4
> new file mode 100644
> index 0000000..0bf0d2c
> --- /dev/null
> +++ b/m4/stubdom.m4
> @@ -0,0 +1,89 @@
> +AC_DEFUN([AX_STUBDOM_DEFAULT_ENABLE], [
> +AC_ARG_ENABLE([$1],
> +AS_HELP_STRING([--disable-$1], [Build and install $1 (default is ENABLED)]),[
> +AX_STUBDOM_INTERNAL([$1], [$2])
> +],[
> +AX_ENABLE_STUBDOM([$1], [$2])
> +])
> +AC_SUBST([$2])
> +])
> +
> +AC_DEFUN([AX_STUBDOM_DEFAULT_DISABLE], [
> +AC_ARG_ENABLE([$1],
> +AS_HELP_STRING([--enable-$1], [Build and install $1 (default is DISABLED)]),[
> +AX_STUBDOM_INTERNAL([$1], [$2])
> +],[
> +AX_DISABLE_STUBDOM([$1], [$2])
> +])
> +AC_SUBST([$2])
> +])
> +
> +AC_DEFUN([AX_STUBDOM_CONDITIONAL], [
> +AC_ARG_ENABLE([$1],
> +AS_HELP_STRING([--enable-$1], [Build and install $1]),[
> +AX_STUBDOM_INTERNAL([$1], [$2])
> +])
> +])
> +
> +AC_DEFUN([AX_STUBDOM_CONDITIONAL_FINISH], [.
> +AS_IF([test "x$$2" = "xy" || test "x$$2" = "x"], [
> +AX_ENABLE_STUBDOM([$1],[$2])
> +],[
> +AX_DISABLE_STUBDOM([$1],[$2])
> +])
> +AC_SUBST([$2])
> +])
> +
> +AC_DEFUN([AX_ENABLE_STUBDOM], [.
> +$2=y
> +STUBDOM_TARGETS="$STUBDOM_TARGETS $2"
> +STUBDOM_BUILD="$STUBDOM_BUILD $1"
> +STUBDOM_INSTALL="$STUBDOM_INSTALL install-$2"
> +])
> +
> +AC_DEFUN([AX_DISABLE_STUBDOM], [
> +$2=n
> +])
> +
> +dnl Don't call this outside of this file
> +AC_DEFUN([AX_STUBDOM_INTERNAL], [
> +AS_IF([test "x$enableval" = "xyes"], [
> +AX_ENABLE_STUBDOM([$1], [$2])
> +],[
> +AS_IF([test "x$enableval" = "xno"],[
> +AX_DISABLE_STUBDOM([$1], [$2])
> +])
> +])
> +])
> +
> +AC_DEFUN([AX_STUBDOM_FINISH], [.
> +AC_SUBST(STUBDOM_TARGETS)
> +AC_SUBST(STUBDOM_BUILD)
> +AC_SUBST(STUBDOM_INSTALL)
> +echo "Will build the following stub domains:"
> +for x in $STUBDOM_BUILD; do
> + echo " $x"
> +done
> +])
> +
> +AC_DEFUN([AX_STUBDOM_LIB], [
> +AC_ARG_VAR([$1_URL], [Download url for $2])
> +AS_IF([test "x$$1_URL" = "x"], [
> + AS_IF([test "x$extfiles" = "xy"],
> + [$1_URL=\@S|@\@{:@XEN_EXTFILES_URL\@:}@],
> + [$1_URL="$4"])
> + ])
> +$1_VERSION="$3"
> +AC_SUBST($1_URL)
> +AC_SUBST($1_VERSION)
> +])
> +
> +AC_DEFUN([AX_STUBDOM_LIB_NOEXT], [
> +AC_ARG_VAR([$1_URL], [Download url for $2])
> +AS_IF([test "x$$1_URL" = "x"], [
> + $1_URL="$4"
> + ])
> +$1_VERSION="$3"
> +AC_SUBST($1_URL)
> +AC_SUBST($1_VERSION)
> +])
> diff --git a/tools/m4/uuid.m4 b/m4/uuid.m4
> similarity index 100%
> rename from tools/m4/uuid.m4
> rename to m4/uuid.m4
> diff --git a/stubdom/Makefile b/stubdom/Makefile
> index fc70d88..709b71e 100644
> --- a/stubdom/Makefile
> +++ b/stubdom/Makefile
> @@ -6,44 +6,7 @@ export XEN_OS=MiniOS
> export stubdom=y
> export debug=y
> include $(XEN_ROOT)/Config.mk
> -
> -#ZLIB_URL?=http://www.zlib.net
> -ZLIB_URL=$(XEN_EXTFILES_URL)
> -ZLIB_VERSION=1.2.3
> -
> -#LIBPCI_URL?=http://www.kernel.org/pub/software/utils/pciutils
> -LIBPCI_URL?=$(XEN_EXTFILES_URL)
> -LIBPCI_VERSION=2.2.9
> -
> -#NEWLIB_URL?=ftp://sources.redhat.com/pub/newlib
> -NEWLIB_URL?=$(XEN_EXTFILES_URL)
> -NEWLIB_VERSION=1.16.0
> -
> -#LWIP_URL?=http://download.savannah.gnu.org/releases/lwip
> -LWIP_URL?=$(XEN_EXTFILES_URL)
> -LWIP_VERSION=1.3.0
> -
> -#GRUB_URL?=http://alpha.gnu.org/gnu/grub
> -GRUB_URL?=$(XEN_EXTFILES_URL)
> -GRUB_VERSION=0.97
> -
> -#OCAML_URL?=$(XEN_EXTFILES_URL)
> -OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
> -OCAML_VERSION=3.11.0
> -
> -GMP_VERSION=4.3.2
> -GMP_URL?=$(XEN_EXTFILES_URL)
> -#GMP_URL?=ftp://ftp.gmplib.org/pub/gmp-$(GMP_VERSION)
> -
> -POLARSSL_VERSION=1.1.4
> -POLARSSL_URL?=$(XEN_EXTFILES_URL)
> -#POLARSSL_URL?=http://polarssl.org/code/releases
> -
> -TPMEMU_VERSION=0.7.4
> -TPMEMU_URL?=$(XEN_EXTFILES_URL)
> -#TPMEMU_URL?=http://download.berlios.de/tpm-emulator
> -
> -WGET=wget -c
> +-include $(XEN_ROOT)/config/Stubdom.mk
>
> GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH)
> ifeq ($(XEN_TARGET_ARCH),x86_32)
> @@ -86,12 +49,12 @@ TARGET_CPPFLAGS += -I$(XEN_ROOT)/xen/include
>
> TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib
>
> -TARGETS=ioemu c caml grub xenstore vtpm vtpmmgr
> +TARGETS=$(STUBDOM_TARGETS)
>
> .PHONY: all
> all: build
> ifeq ($(STUBDOM_SUPPORTED),1)
> -build: genpath ioemu-stubdom c-stubdom pv-grub xenstore-stubdom vtpm-stubdom vtpmmgrdom
> +build: genpath $(STUBDOM_BUILD)
> else
> build: genpath
> endif
> @@ -245,7 +208,7 @@ tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
> mv tpm_emulator-$(TPMEMU_VERSION) $@
> patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;
> mkdir $@/build
> - cd $@/build; cmake .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
> + cd $@/build; $(CMAKE) .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
> touch $@
>
> TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a
> @@ -483,7 +446,7 @@ xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxc xenstore
> #########
>
> ifeq ($(STUBDOM_SUPPORTED),1)
> -install: genpath install-readme install-ioemu install-grub install-xenstore install-vtpm install-vtpmmgr
> +install: genpath install-readme $(STUBDOM_INSTALL)
> else
> install: genpath
> endif
> @@ -503,6 +466,8 @@ install-grub: pv-grub
> $(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)"
> $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-grub/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/pv-grub-$(XEN_TARGET_ARCH).gz"
>
> +install-caml: caml-stubdom
> +
> install-xenstore: xenstore-stubdom
> $(INSTALL_DIR) "$(DESTDIR)/usr/lib/xen/boot"
> $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-xenstore/mini-os.gz "$(DESTDIR)/usr/lib/xen/boot/xenstore-stubdom.gz"
> @@ -581,3 +546,9 @@ downloadclean: patchclean
>
> .PHONY: distclean
> distclean: downloadclean
> + -rm ../config/Stubdom.mk
> +
> +ifeq (,$(findstring clean,$(MAKECMDGOALS)))
> +$(XEN_ROOT)/config/Stubdom.mk:
> + $(error You have to run ./configure before building or installing stubdom)
> +endif
> diff --git a/stubdom/configure.ac b/stubdom/configure.ac
> new file mode 100644
> index 0000000..db44d4a
> --- /dev/null
> +++ b/stubdom/configure.ac
> @@ -0,0 +1,58 @@
> +# -*- Autoconf -*-
> +# Process this file with autoconf to produce a configure script.
> +
> +AC_PREREQ([2.67])
> +AC_INIT([Xen Hypervisor Stub Domains], m4_esyscmd([../version.sh ../xen/Makefile]),
> + [xen-devel@lists.xen.org], [xen], [http://www.xen.org/])
> +AC_CONFIG_SRCDIR([../extras/mini-os/kernel.c])
> +AC_CONFIG_FILES([../config/Stubdom.mk])
> +AC_PREFIX_DEFAULT([/usr])
> +AC_CONFIG_AUX_DIR([../])
> +
> +# M4 Macro includes
> +m4_include([../m4/stubdom.m4])
> +m4_include([../m4/features.m4])
> +m4_include([../m4/path_or_fail.m4])
> +m4_include([../m4/depends.m4])
> +
> +# Enable/disable stub domains
> +AX_STUBDOM_DEFAULT_ENABLE([ioemu-stubdom], [ioemu])
> +AX_STUBDOM_DEFAULT_DISABLE([c-stubdom], [c])
> +AX_STUBDOM_DEFAULT_ENABLE([caml-stubdom], [caml])
> +AX_STUBDOM_DEFAULT_ENABLE([pv-grub], [grub])
> +AX_STUBDOM_DEFAULT_ENABLE([xenstore-stubdom], [xenstore])
> +AX_STUBDOM_CONDITIONAL([vtpm-stubdom], [vtpm])
> +AX_STUBDOM_CONDITIONAL([vtpmmgrdom], [vtpmmgr])
> +
> +AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of stubdom])
> +AX_ARG_DEFAULT_ENABLE([extfiles], [Use xen extfiles repository for libraries])
> +
> +AC_ARG_VAR([CMAKE], [Path to the cmake program])
> +AC_ARG_VAR([WGET], [Path to wget program])
> +
> +# Checks for programs.
> +AC_PROG_CC
> +AC_PROG_MAKE_SET
> +AC_PROG_INSTALL
> +AX_PATH_PROG_OR_FAIL([WGET], [wget])
> +
> +# Checks for programs that depend on a feature
> +AX_DEPENDS_PATH_PROG([vtpm], [CMAKE], [cmake])
> +
> +# Stubdom libraries version and url setup
> +AX_STUBDOM_LIB([ZLIB], [zlib], [1.2.3], [http://www.zlib.net])
> +AX_STUBDOM_LIB([LIBPCI], [libpci], [2.2.9], [http://www.kernel.org/pub/software/utils/pciutils])
> +AX_STUBDOM_LIB([NEWLIB], [newlib], [1.16.0], [ftp://sources.redhat.com/pub/newlib])
> +AX_STUBDOM_LIB([LWIP], [lwip], [1.3.0], [http://download.savannah.gnu.org/releases/lwip])
> +AX_STUBDOM_LIB([GRUB], [grub], [0.97], [http://alpha.gnu.org/gnu/grub])
> +AX_STUBDOM_LIB_NOEXT([OCAML], [ocaml], [3.11.0], [http://caml.inria.fr/pub/distrib/ocaml-3.11])
> +AX_STUBDOM_LIB([GMP], [libgmp], [4.3.2], [ftp://ftp.gmplib.org/pub/gmp-4.3.2])
> +AX_STUBDOM_LIB([POLARSSL], [polarssl], [1.1.4], [http://polarssl.org/code/releases])
> +AX_STUBDOM_LIB([TPMEMU], [berlios tpm emulator], [0.7.4], [http://download.berlios.de/tpm-emulator])
> +
> +#Conditionally enable these stubdoms based on the presense of dependencies
> +AX_STUBDOM_CONDITIONAL_FINISH([vtpm-stubdom], [vtpm])
> +AX_STUBDOM_CONDITIONAL_FINISH([vtpmmgrdom], [vtpmmgr])
> +
> +AX_STUBDOM_FINISH
> +AC_OUTPUT()
> diff --git a/tools/configure.ac b/tools/configure.ac
> index 586313d..971e3e9 100644
> --- a/tools/configure.ac
> +++ b/tools/configure.ac
> @@ -22,20 +22,20 @@ APPEND_INCLUDES and APPEND_LIB instead when possible.])
> AC_CANONICAL_HOST
>
> # M4 Macro includes
> -m4_include([m4/savevar.m4])
> -m4_include([m4/features.m4])
> -m4_include([m4/path_or_fail.m4])
> -m4_include([m4/python_version.m4])
> -m4_include([m4/python_devel.m4])
> -m4_include([m4/ocaml.m4])
> -m4_include([m4/set_cflags_ldflags.m4])
> -m4_include([m4/uuid.m4])
> -m4_include([m4/pkg.m4])
> -m4_include([m4/curses.m4])
> -m4_include([m4/pthread.m4])
> -m4_include([m4/ptyfuncs.m4])
> -m4_include([m4/extfs.m4])
> -m4_include([m4/fetcher.m4])
> +m4_include([../m4/savevar.m4])
> +m4_include([../m4/features.m4])
> +m4_include([../m4/path_or_fail.m4])
> +m4_include([../m4/python_version.m4])
> +m4_include([../m4/python_devel.m4])
> +m4_include([../m4/ocaml.m4])
> +m4_include([../m4/set_cflags_ldflags.m4])
> +m4_include([../m4/uuid.m4])
> +m4_include([../m4/pkg.m4])
> +m4_include([../m4/curses.m4])
> +m4_include([../m4/pthread.m4])
> +m4_include([../m4/ptyfuncs.m4])
> +m4_include([../m4/extfs.m4])
> +m4_include([../m4/fetcher.m4])
>
> # Enable/disable options
> AX_ARG_DEFAULT_DISABLE([githttp], [Download GIT repositories via HTTP])
> --
> 1.7.10.4
>



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [VTPM v7 6/8] Add autoconf to stubdom [ In reply to ]
Ian Campbell writes ("Re: [VTPM v7 6/8] Add autoconf to stubdom"):
> It also occurs to me that this series introduces a little bisection blip
> where cmake will be required (i.e. from patch 3 until here). The right
> way to do this would have been to put the patch introducing autoconf at
> the start. I'm inclined to just gloss over that for now, but if you feel
> so inclined you could reorder things.

I would recommend reordering things, yes.

If the bisection blip bites us, what will happen is that the automatic
bisector will finger the cmake-requiring changeset. Normally if that
happens it would be fair to ask the person who introduces the
bisection breakage to debug whatever the other problem is that the
bisector is hunting for. I wouldn't recommend knowingly putting
oneself in that position :-).

Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Re: [VTPM v7 6/8] Add autoconf to stubdom [ In reply to ]
On 12/13/2012 07:02 AM, Ian Campbell wrote:
> On Thu, 2012-12-06 at 18:19 +0000, Matthew Fioravante wrote:
>> Please rerun autoconf after commiting this patch
>>
>> Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu>
> This fails for me with :
> /local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/test.o: In function `app_main':
> /local/scratch/ianc/devel/committer.git/extras/mini-os/test.c:511: multiple definition of `app_main'
> /local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/main.o:/local/scratch/ianc/devel/committer.git/extras/mini-os/main.c:187: first defined here
> make[2]: *** [/local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/mini-os] Error 1
> make[2]: Leaving directory `/local/scratch/ianc/devel/committer.git/extras/mini-os'
> make[1]: *** [caml-stubdom] Error 2
> make[1]: Leaving directory `/local/scratch/ianc/devel/committer.git/stubdom'
> make: *** [install-stubdom] Error 2
>
> I'm only guessing it was this patch, but it was somewhere in this
> series.
Actually it looks like caml itself is just broken. The original stubdom
makefile did not include it as a build target but my configure.ac
erroneously enables it by default. The multiple definition problem
occurs because like c-stubdom its minios.cfg enables CONFIG_TEST which
defines a main function. It also defines a main function for itself.

Patch incoming
>
> I'd already done all the autoconf faff and updated .*ignore for you
> (adding autom4te.cache, config.log and config.status as appropriate). So
> rather than resending please could you provide an incremental fix
> against:
> git://xenbits.xen.org/people/ianc/xen-unstable.git vtpm
>
> I'll then merge that into the appropriate patch.
>
> It also occurs to me that this series introduces a little bisection blip
> where cmake will be required (i.e. from patch 3 until here). The right
> way to do this would have been to put the patch introducing autoconf at
> the start. I'm inclined to just gloss over that for now, but if you feel
> so inclined you could reorder things.
I think the easiest way to fix this is to remove vtpm from the default
built targets in stubdom. That way if someone does does a make or a make
install in stubdom before autoconf they won't hit the cmake dependency.


>
>> ---
>> autogen.sh | 2 +
>> config/Stubdom.mk.in | 45 ++++++++++++++++
>> {tools/m4 => m4}/curses.m4 | 0
>> m4/depends.m4 | 15 ++++++
>> {tools/m4 => m4}/extfs.m4 | 0
>> {tools/m4 => m4}/features.m4 | 0
>> {tools/m4 => m4}/fetcher.m4 | 0
>> {tools/m4 => m4}/ocaml.m4 | 0
>> {tools/m4 => m4}/path_or_fail.m4 | 0
>> {tools/m4 => m4}/pkg.m4 | 0
>> {tools/m4 => m4}/pthread.m4 | 0
>> {tools/m4 => m4}/ptyfuncs.m4 | 0
>> {tools/m4 => m4}/python_devel.m4 | 0
>> {tools/m4 => m4}/python_version.m4 | 0
>> {tools/m4 => m4}/savevar.m4 | 0
>> {tools/m4 => m4}/set_cflags_ldflags.m4 | 0
>> m4/stubdom.m4 | 89 ++++++++++++++++++++++++++++++++
>> {tools/m4 => m4}/uuid.m4 | 0
>> stubdom/Makefile | 55 +++++---------------
>> stubdom/configure.ac | 58 +++++++++++++++++++++
>> tools/configure.ac | 28 +++++-----
>> 21 files changed, 236 insertions(+), 56 deletions(-)
>> create mode 100644 config/Stubdom.mk.in
>> rename {tools/m4 => m4}/curses.m4 (100%)
>> create mode 100644 m4/depends.m4
>> rename {tools/m4 => m4}/extfs.m4 (100%)
>> rename {tools/m4 => m4}/features.m4 (100%)
>> rename {tools/m4 => m4}/fetcher.m4 (100%)
>> rename {tools/m4 => m4}/ocaml.m4 (100%)
>> rename {tools/m4 => m4}/path_or_fail.m4 (100%)
>> rename {tools/m4 => m4}/pkg.m4 (100%)
>> rename {tools/m4 => m4}/pthread.m4 (100%)
>> rename {tools/m4 => m4}/ptyfuncs.m4 (100%)
>> rename {tools/m4 => m4}/python_devel.m4 (100%)
>> rename {tools/m4 => m4}/python_version.m4 (100%)
>> rename {tools/m4 => m4}/savevar.m4 (100%)
>> rename {tools/m4 => m4}/set_cflags_ldflags.m4 (100%)
>> create mode 100644 m4/stubdom.m4
>> rename {tools/m4 => m4}/uuid.m4 (100%)
>> create mode 100644 stubdom/configure.ac
>>
>> diff --git a/autogen.sh b/autogen.sh
>> index 58a71ce..ada482c 100755
>> --- a/autogen.sh
>> +++ b/autogen.sh
>> @@ -2,3 +2,5 @@
>> cd tools
>> autoconf
>> autoheader
>> +cd ../stubdom
>> +autoconf
>> diff --git a/config/Stubdom.mk.in b/config/Stubdom.mk.in
>> new file mode 100644
>> index 0000000..432efd7
>> --- /dev/null
>> +++ b/config/Stubdom.mk.in
>> @@ -0,0 +1,45 @@
>> +# Prefix and install folder
>> +prefix := @prefix@
>> +PREFIX := $(prefix)
>> +exec_prefix := @exec_prefix@
>> +libdir := @libdir@
>> +LIBDIR := $(libdir)
>> +
>> +# Path Programs
>> +CMAKE := @CMAKE@
>> +WGET := @WGET@ -c
>> +
>> +# A debug build of stubdom? //FIXME: Someone make this do something
>> +debug := @debug@
>> +vtpm = @vtpm@
>> +
>> +STUBDOM_TARGETS := @STUBDOM_TARGETS@
>> +STUBDOM_BUILD := @STUBDOM_BUILD@
>> +STUBDOM_INSTALL := @STUBDOM_INSTALL@
>> +
>> +ZLIB_VERSION := @ZLIB_VERSION@
>> +ZLIB_URL := @ZLIB_URL@
>> +
>> +LIBPCI_VERSION := @LIBPCI_VERSION@
>> +LIBPCI_URL := @LIBPCI_URL@
>> +
>> +NEWLIB_VERSION := @NEWLIB_VERSION@
>> +NEWLIB_URL := @NEWLIB_URL@
>> +
>> +LWIP_VERSION := @LWIP_VERSION@
>> +LWIP_URL := @LWIP_URL@
>> +
>> +GRUB_VERSION := @GRUB_VERSION@
>> +GRUB_URL := @GRUB_URL@
>> +
>> +OCAML_VERSION := @OCAML_VERSION@
>> +OCAML_URL := @OCAML_URL@
>> +
>> +GMP_VERSION := @GMP_VERSION@
>> +GMP_URL := @GMP_URL@
>> +
>> +POLARSSL_VERSION := @POLARSSL_VERSION@
>> +POLARSSL_URL := @POLARSSL_URL@
>> +
>> +TPMEMU_VERSION := @TPMEMU_VERSION@
>> +TPMEMU_URL := @TPMEMU_URL@
>> diff --git a/tools/m4/curses.m4 b/m4/curses.m4
>> similarity index 100%
>> rename from tools/m4/curses.m4
>> rename to m4/curses.m4
>> diff --git a/m4/depends.m4 b/m4/depends.m4
>> new file mode 100644
>> index 0000000..916e665
>> --- /dev/null
>> +++ b/m4/depends.m4
>> @@ -0,0 +1,15 @@
>> +
>> +AC_DEFUN([AX_DEPENDS_PATH_PROG], [
>> +AS_IF([test "x$$1" = "xy"], [AX_PATH_PROG_OR_FAIL([$2], [$3])], [
>> +AS_IF([test "x$$1" = "xn"], [
>> +$2="/$3-disabled-in-configure-script"
>> +], [
>> +AC_PATH_PROG([$2], [$3], [no])
>> +AS_IF([test x"${$2}" = "xno"], [
>> +$1=n
>> +$2="/$3-disabled-in-configure-script"
>> +])
>> +])
>> +])
>> +AC_SUBST($2)
>> +])
>> diff --git a/tools/m4/extfs.m4 b/m4/extfs.m4
>> similarity index 100%
>> rename from tools/m4/extfs.m4
>> rename to m4/extfs.m4
>> diff --git a/tools/m4/features.m4 b/m4/features.m4
>> similarity index 100%
>> rename from tools/m4/features.m4
>> rename to m4/features.m4
>> diff --git a/tools/m4/fetcher.m4 b/m4/fetcher.m4
>> similarity index 100%
>> rename from tools/m4/fetcher.m4
>> rename to m4/fetcher.m4
>> diff --git a/tools/m4/ocaml.m4 b/m4/ocaml.m4
>> similarity index 100%
>> rename from tools/m4/ocaml.m4
>> rename to m4/ocaml.m4
>> diff --git a/tools/m4/path_or_fail.m4 b/m4/path_or_fail.m4
>> similarity index 100%
>> rename from tools/m4/path_or_fail.m4
>> rename to m4/path_or_fail.m4
>> diff --git a/tools/m4/pkg.m4 b/m4/pkg.m4
>> similarity index 100%
>> rename from tools/m4/pkg.m4
>> rename to m4/pkg.m4
>> diff --git a/tools/m4/pthread.m4 b/m4/pthread.m4
>> similarity index 100%
>> rename from tools/m4/pthread.m4
>> rename to m4/pthread.m4
>> diff --git a/tools/m4/ptyfuncs.m4 b/m4/ptyfuncs.m4
>> similarity index 100%
>> rename from tools/m4/ptyfuncs.m4
>> rename to m4/ptyfuncs.m4
>> diff --git a/tools/m4/python_devel.m4 b/m4/python_devel.m4
>> similarity index 100%
>> rename from tools/m4/python_devel.m4
>> rename to m4/python_devel.m4
>> diff --git a/tools/m4/python_version.m4 b/m4/python_version.m4
>> similarity index 100%
>> rename from tools/m4/python_version.m4
>> rename to m4/python_version.m4
>> diff --git a/tools/m4/savevar.m4 b/m4/savevar.m4
>> similarity index 100%
>> rename from tools/m4/savevar.m4
>> rename to m4/savevar.m4
>> diff --git a/tools/m4/set_cflags_ldflags.m4 b/m4/set_cflags_ldflags.m4
>> similarity index 100%
>> rename from tools/m4/set_cflags_ldflags.m4
>> rename to m4/set_cflags_ldflags.m4
>> diff --git a/m4/stubdom.m4 b/m4/stubdom.m4
>> new file mode 100644
>> index 0000000..0bf0d2c
>> --- /dev/null
>> +++ b/m4/stubdom.m4
>> @@ -0,0 +1,89 @@
>> +AC_DEFUN([AX_STUBDOM_DEFAULT_ENABLE], [
>> +AC_ARG_ENABLE([$1],
>> +AS_HELP_STRING([--disable-$1], [Build and install $1 (default is ENABLED)]),[
>> +AX_STUBDOM_INTERNAL([$1], [$2])
>> +],[
>> +AX_ENABLE_STUBDOM([$1], [$2])
>> +])
>> +AC_SUBST([$2])
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_DEFAULT_DISABLE], [
>> +AC_ARG_ENABLE([$1],
>> +AS_HELP_STRING([--enable-$1], [Build and install $1 (default is DISABLED)]),[
>> +AX_STUBDOM_INTERNAL([$1], [$2])
>> +],[
>> +AX_DISABLE_STUBDOM([$1], [$2])
>> +])
>> +AC_SUBST([$2])
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_CONDITIONAL], [
>> +AC_ARG_ENABLE([$1],
>> +AS_HELP_STRING([--enable-$1], [Build and install $1]),[
>> +AX_STUBDOM_INTERNAL([$1], [$2])
>> +])
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_CONDITIONAL_FINISH], [.
>> +AS_IF([test "x$$2" = "xy" || test "x$$2" = "x"], [
>> +AX_ENABLE_STUBDOM([$1],[$2])
>> +],[
>> +AX_DISABLE_STUBDOM([$1],[$2])
>> +])
>> +AC_SUBST([$2])
>> +])
>> +
>> +AC_DEFUN([AX_ENABLE_STUBDOM], [.
>> +$2=y
>> +STUBDOM_TARGETS="$STUBDOM_TARGETS $2"
>> +STUBDOM_BUILD="$STUBDOM_BUILD $1"
>> +STUBDOM_INSTALL="$STUBDOM_INSTALL install-$2"
>> +])
>> +
>> +AC_DEFUN([AX_DISABLE_STUBDOM], [
>> +$2=n
>> +])
>> +
>> +dnl Don't call this outside of this file
>> +AC_DEFUN([AX_STUBDOM_INTERNAL], [
>> +AS_IF([test "x$enableval" = "xyes"], [
>> +AX_ENABLE_STUBDOM([$1], [$2])
>> +],[
>> +AS_IF([test "x$enableval" = "xno"],[
>> +AX_DISABLE_STUBDOM([$1], [$2])
>> +])
>> +])
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_FINISH], [.
>> +AC_SUBST(STUBDOM_TARGETS)
>> +AC_SUBST(STUBDOM_BUILD)
>> +AC_SUBST(STUBDOM_INSTALL)
>> +echo "Will build the following stub domains:"
>> +for x in $STUBDOM_BUILD; do
>> + echo " $x"
>> +done
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_LIB], [
>> +AC_ARG_VAR([$1_URL], [Download url for $2])
>> +AS_IF([test "x$$1_URL" = "x"], [
>> + AS_IF([test "x$extfiles" = "xy"],
>> + [$1_URL=\@S|@\@{:@XEN_EXTFILES_URL\@:}@],
>> + [$1_URL="$4"])
>> + ])
>> +$1_VERSION="$3"
>> +AC_SUBST($1_URL)
>> +AC_SUBST($1_VERSION)
>> +])
>> +
>> +AC_DEFUN([AX_STUBDOM_LIB_NOEXT], [
>> +AC_ARG_VAR([$1_URL], [Download url for $2])
>> +AS_IF([test "x$$1_URL" = "x"], [
>> + $1_URL="$4"
>> + ])
>> +$1_VERSION="$3"
>> +AC_SUBST($1_URL)
>> +AC_SUBST($1_VERSION)
>> +])
>> diff --git a/tools/m4/uuid.m4 b/m4/uuid.m4
>> similarity index 100%
>> rename from tools/m4/uuid.m4
>> rename to m4/uuid.m4
>> diff --git a/stubdom/Makefile b/stubdom/Makefile
>> index fc70d88..709b71e 100644
>> --- a/stubdom/Makefile
>> +++ b/stubdom/Makefile
>> @@ -6,44 +6,7 @@ export XEN_OS=MiniOS
>> export stubdom=y
>> export debug=y
>> include $(XEN_ROOT)/Config.mk
>> -
>> -#ZLIB_URL?=http://www.zlib.net
>> -ZLIB_URL=$(XEN_EXTFILES_URL)
>> -ZLIB_VERSION=1.2.3
>> -
>> -#LIBPCI_URL?=http://www.kernel.org/pub/software/utils/pciutils
>> -LIBPCI_URL?=$(XEN_EXTFILES_URL)
>> -LIBPCI_VERSION=2.2.9
>> -
>> -#NEWLIB_URL?=ftp://sources.redhat.com/pub/newlib
>> -NEWLIB_URL?=$(XEN_EXTFILES_URL)
>> -NEWLIB_VERSION=1.16.0
>> -
>> -#LWIP_URL?=http://download.savannah.gnu.org/releases/lwip
>> -LWIP_URL?=$(XEN_EXTFILES_URL)
>> -LWIP_VERSION=1.3.0
>> -
>> -#GRUB_URL?=http://alpha.gnu.org/gnu/grub
>> -GRUB_URL?=$(XEN_EXTFILES_URL)
>> -GRUB_VERSION=0.97
>> -
>> -#OCAML_URL?=$(XEN_EXTFILES_URL)
>> -OCAML_URL?=http://caml.inria.fr/pub/distrib/ocaml-3.11
>> -OCAML_VERSION=3.11.0
>> -
>> -GMP_VERSION=4.3.2
>> -GMP_URL?=$(XEN_EXTFILES_URL)
>> -#GMP_URL?=ftp://ftp.gmplib.org/pub/gmp-$(GMP_VERSION)
>> -
>> -POLARSSL_VERSION=1.1.4
>> -POLARSSL_URL?=$(XEN_EXTFILES_URL)
>> -#POLARSSL_URL?=http://polarssl.org/code/releases
>> -
>> -TPMEMU_VERSION=0.7.4
>> -TPMEMU_URL?=$(XEN_EXTFILES_URL)
>> -#TPMEMU_URL?=http://download.berlios.de/tpm-emulator
>> -
>> -WGET=wget -c
>> +-include $(XEN_ROOT)/config/Stubdom.mk
>>
>> GNU_TARGET_ARCH:=$(XEN_TARGET_ARCH)
>> ifeq ($(XEN_TARGET_ARCH),x86_32)
>> @@ -86,12 +49,12 @@ TARGET_CPPFLAGS += -I$(XEN_ROOT)/xen/include
>>
>> TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib
>>
>> -TARGETS=ioemu c caml grub xenstore vtpm vtpmmgr
>> +TARGETS=$(STUBDOM_TARGETS)
>>
>> .PHONY: all
>> all: build
>> ifeq ($(STUBDOM_SUPPORTED),1)
>> -build: genpath ioemu-stubdom c-stubdom pv-grub xenstore-stubdom vtpm-stubdom vtpmmgrdom
>> +build: genpath $(STUBDOM_BUILD)
>> else
>> build: genpath
>> endif
>> @@ -245,7 +208,7 @@ tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
>> mv tpm_emulator-$(TPMEMU_VERSION) $@
>> patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;
>> mkdir $@/build
>> - cd $@/build; cmake .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
>> + cd $@/build; $(CMAKE) .. -DCMAKE_C_COMPILER=${CC} -DCMAKE_C_FLAGS="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
>> touch $@
>>
>> TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a
>> @@ -483,7 +446,7 @@ xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxc xenstore
>> #########
>>
>> ifeq ($(STUBDOM_SUPPORTED),1)
>> -install: genpath install-readme install-ioemu install-grub install-xenstore install-vtpm install-vtpmmgr
>> +install: genpath install-readme $(STUBDOM_INSTALL)
>> else
>> install: genpath
>> endif
>> @@ -503,6 +466,8 @@ install-grub: pv-grub
>> $(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)"
>> $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-grub/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/pv-grub-$(XEN_TARGET_ARCH).gz"
>>
>> +install-caml: caml-stubdom
>> +
>> install-xenstore: xenstore-stubdom
>> $(INSTALL_DIR) "$(DESTDIR)/usr/lib/xen/boot"
>> $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-xenstore/mini-os.gz "$(DESTDIR)/usr/lib/xen/boot/xenstore-stubdom.gz"
>> @@ -581,3 +546,9 @@ downloadclean: patchclean
>>
>> .PHONY: distclean
>> distclean: downloadclean
>> + -rm ../config/Stubdom.mk
>> +
>> +ifeq (,$(findstring clean,$(MAKECMDGOALS)))
>> +$(XEN_ROOT)/config/Stubdom.mk:
>> + $(error You have to run ./configure before building or installing stubdom)
>> +endif
>> diff --git a/stubdom/configure.ac b/stubdom/configure.ac
>> new file mode 100644
>> index 0000000..db44d4a
>> --- /dev/null
>> +++ b/stubdom/configure.ac
>> @@ -0,0 +1,58 @@
>> +# -*- Autoconf -*-
>> +# Process this file with autoconf to produce a configure script.
>> +
>> +AC_PREREQ([2.67])
>> +AC_INIT([Xen Hypervisor Stub Domains], m4_esyscmd([../version.sh ../xen/Makefile]),
>> + [xen-devel@lists.xen.org], [xen], [http://www.xen.org/])
>> +AC_CONFIG_SRCDIR([../extras/mini-os/kernel.c])
>> +AC_CONFIG_FILES([../config/Stubdom.mk])
>> +AC_PREFIX_DEFAULT([/usr])
>> +AC_CONFIG_AUX_DIR([../])
>> +
>> +# M4 Macro includes
>> +m4_include([../m4/stubdom.m4])
>> +m4_include([../m4/features.m4])
>> +m4_include([../m4/path_or_fail.m4])
>> +m4_include([../m4/depends.m4])
>> +
>> +# Enable/disable stub domains
>> +AX_STUBDOM_DEFAULT_ENABLE([ioemu-stubdom], [ioemu])
>> +AX_STUBDOM_DEFAULT_DISABLE([c-stubdom], [c])
>> +AX_STUBDOM_DEFAULT_ENABLE([caml-stubdom], [caml])
>> +AX_STUBDOM_DEFAULT_ENABLE([pv-grub], [grub])
>> +AX_STUBDOM_DEFAULT_ENABLE([xenstore-stubdom], [xenstore])
>> +AX_STUBDOM_CONDITIONAL([vtpm-stubdom], [vtpm])
>> +AX_STUBDOM_CONDITIONAL([vtpmmgrdom], [vtpmmgr])
>> +
>> +AX_ARG_DEFAULT_ENABLE([debug], [Disable debug build of stubdom])
>> +AX_ARG_DEFAULT_ENABLE([extfiles], [Use xen extfiles repository for libraries])
>> +
>> +AC_ARG_VAR([CMAKE], [Path to the cmake program])
>> +AC_ARG_VAR([WGET], [Path to wget program])
>> +
>> +# Checks for programs.
>> +AC_PROG_CC
>> +AC_PROG_MAKE_SET
>> +AC_PROG_INSTALL
>> +AX_PATH_PROG_OR_FAIL([WGET], [wget])
>> +
>> +# Checks for programs that depend on a feature
>> +AX_DEPENDS_PATH_PROG([vtpm], [CMAKE], [cmake])
>> +
>> +# Stubdom libraries version and url setup
>> +AX_STUBDOM_LIB([ZLIB], [zlib], [1.2.3], [http://www.zlib.net])
>> +AX_STUBDOM_LIB([LIBPCI], [libpci], [2.2.9], [http://www.kernel.org/pub/software/utils/pciutils])
>> +AX_STUBDOM_LIB([NEWLIB], [newlib], [1.16.0], [ftp://sources.redhat.com/pub/newlib])
>> +AX_STUBDOM_LIB([LWIP], [lwip], [1.3.0], [http://download.savannah.gnu.org/releases/lwip])
>> +AX_STUBDOM_LIB([GRUB], [grub], [0.97], [http://alpha.gnu.org/gnu/grub])
>> +AX_STUBDOM_LIB_NOEXT([OCAML], [ocaml], [3.11.0], [http://caml.inria.fr/pub/distrib/ocaml-3.11])
>> +AX_STUBDOM_LIB([GMP], [libgmp], [4.3.2], [ftp://ftp.gmplib.org/pub/gmp-4.3.2])
>> +AX_STUBDOM_LIB([POLARSSL], [polarssl], [1.1.4], [http://polarssl.org/code/releases])
>> +AX_STUBDOM_LIB([TPMEMU], [berlios tpm emulator], [0.7.4], [http://download.berlios.de/tpm-emulator])
>> +
>> +#Conditionally enable these stubdoms based on the presense of dependencies
>> +AX_STUBDOM_CONDITIONAL_FINISH([vtpm-stubdom], [vtpm])
>> +AX_STUBDOM_CONDITIONAL_FINISH([vtpmmgrdom], [vtpmmgr])
>> +
>> +AX_STUBDOM_FINISH
>> +AC_OUTPUT()
>> diff --git a/tools/configure.ac b/tools/configure.ac
>> index 586313d..971e3e9 100644
>> --- a/tools/configure.ac
>> +++ b/tools/configure.ac
>> @@ -22,20 +22,20 @@ APPEND_INCLUDES and APPEND_LIB instead when possible.])
>> AC_CANONICAL_HOST
>>
>> # M4 Macro includes
>> -m4_include([m4/savevar.m4])
>> -m4_include([m4/features.m4])
>> -m4_include([m4/path_or_fail.m4])
>> -m4_include([m4/python_version.m4])
>> -m4_include([m4/python_devel.m4])
>> -m4_include([m4/ocaml.m4])
>> -m4_include([m4/set_cflags_ldflags.m4])
>> -m4_include([m4/uuid.m4])
>> -m4_include([m4/pkg.m4])
>> -m4_include([m4/curses.m4])
>> -m4_include([m4/pthread.m4])
>> -m4_include([m4/ptyfuncs.m4])
>> -m4_include([m4/extfs.m4])
>> -m4_include([m4/fetcher.m4])
>> +m4_include([../m4/savevar.m4])
>> +m4_include([../m4/features.m4])
>> +m4_include([../m4/path_or_fail.m4])
>> +m4_include([../m4/python_version.m4])
>> +m4_include([../m4/python_devel.m4])
>> +m4_include([../m4/ocaml.m4])
>> +m4_include([../m4/set_cflags_ldflags.m4])
>> +m4_include([../m4/uuid.m4])
>> +m4_include([../m4/pkg.m4])
>> +m4_include([../m4/curses.m4])
>> +m4_include([../m4/pthread.m4])
>> +m4_include([../m4/ptyfuncs.m4])
>> +m4_include([../m4/extfs.m4])
>> +m4_include([../m4/fetcher.m4])
>>
>> # Enable/disable options
>> AX_ARG_DEFAULT_DISABLE([githttp], [Download GIT repositories via HTTP])
>> --
>> 1.7.10.4
>>
>
Re: [VTPM v7 6/8] Add autoconf to stubdom [ In reply to ]
On Thu, 2012-12-13 at 15:15 +0000, Matthew Fioravante wrote:
> On 12/13/2012 07:02 AM, Ian Campbell wrote:
> > On Thu, 2012-12-06 at 18:19 +0000, Matthew Fioravante wrote:
> >> Please rerun autoconf after commiting this patch
> >>
> >> Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu>
> > This fails for me with :
> > /local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/test.o: In function `app_main':
> > /local/scratch/ianc/devel/committer.git/extras/mini-os/test.c:511: multiple definition of `app_main'
> > /local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/main.o:/local/scratch/ianc/devel/committer.git/extras/mini-os/main.c:187: first defined here
> > make[2]: *** [/local/scratch/ianc/devel/committer.git/stubdom/mini-os-x86_64-caml/mini-os] Error 1
> > make[2]: Leaving directory `/local/scratch/ianc/devel/committer.git/extras/mini-os'
> > make[1]: *** [caml-stubdom] Error 2
> > make[1]: Leaving directory `/local/scratch/ianc/devel/committer.git/stubdom'
> > make: *** [install-stubdom] Error 2
> >
> > I'm only guessing it was this patch, but it was somewhere in this
> > series.
> Actually it looks like caml itself is just broken. The original stubdom
> makefile did not include it as a build target but my configure.ac
> erroneously enables it by default. The multiple definition problem
> occurs because like c-stubdom its minios.cfg enables CONFIG_TEST which
> defines a main function. It also defines a main function for itself.
>
> Patch incoming

Thanks.
> > I'd already done all the autoconf faff and updated .*ignore for you
> > (adding autom4te.cache, config.log and config.status as appropriate). So
> > rather than resending please could you provide an incremental fix
> > against:
> > git://xenbits.xen.org/people/ianc/xen-unstable.git vtpm
> >
> > I'll then merge that into the appropriate patch.
> >
> > It also occurs to me that this series introduces a little bisection blip
> > where cmake will be required (i.e. from patch 3 until here). The right
> > way to do this would have been to put the patch introducing autoconf at
> > the start. I'm inclined to just gloss over that for now, but if you feel
> > so inclined you could reorder things.
> I think the easiest way to fix this is to remove vtpm from the default
> built targets in stubdom. That way if someone does does a make or a make
> install in stubdom before autoconf they won't hit the cmake dependency.

You mean drop this hunk from "vtpm/vtpmmgr and required libs to
stubdom/Makefile":
@@ -74,12 +86,12 @@ TARGET_CPPFLAGS += -I$(XEN_ROOT)/xen/include

TARGET_LDFLAGS += -nostdlib -L$(CROSS_PREFIX)/$(GNU_TARGET_ARCH)-xen-elf/lib

-TARGETS=ioemu c caml grub xenstore
+TARGETS=ioemu c caml grub xenstore vtpm vtpmmgr

and re-do it later? That would work. I'd prefer to re-add it in a
completely new patch at the end rather than conflating this with the
autoconf switch.

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel