[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [Xen-changelog] Define Xen interface version for tools build.



On Thu, Apr 06, 2006 at 07:52:32AM +0100, Keir Fraser wrote:
> 
> On 6 Apr 2006, at 06:54, Muli Ben-Yehuda wrote:
> 
> >> X11_LDPATH = -L/usr/X11R6/$(LIBDIR)
> >>+
> >>+CFLAGS += -D__XEN_INTERFACE_VERSION__=0x00030101
> >
> >This is now another place you have to remember to change the version
> >string. Can we stick it in its own file with nothing else and have
> >other users include it?
> 
> Where would you place it such that it's guaranteed to be included 
> everywhere?

How about something like the attached?
- define XEN_LATEST_INTERFACE_VERSION in Config.mk
- for the tools, it's included from tools/Makefile directly
- for the Xen and kernel builds, generate public/interface.h with it
and include that.
- this has one drawback - the public/ headers aren't self contained
any more, since interface.h needs to be generated before it's
used. The only case is this bits us is if someone copies
include/public.h and tries to use that out of the tree, which doesn't
seem like a very likely occurance.

Comments?

diff -r ece9b5710b29 Config.mk
--- a/Config.mk Thu Apr 06 00:59:18 2006 +0100
+++ b/Config.mk Thu Apr 06 12:02:56 2006 +0300
@@ -1,4 +1,6 @@
 # -*- mode: Makefile; -*-
+
+export XEN_LATEST_INTERFACE_VERSION = 0x00030101
 
 # A debug build of Xen and tools?
 debug ?= n
diff -r ece9b5710b29 Makefile
--- a/Makefile  Thu Apr 06 00:59:18 2006 +0100
+++ b/Makefile  Thu Apr 06 12:02:56 2006 +0300
@@ -69,6 +69,7 @@ install-tools:
        $(MAKE) -C tools install
 
 install-kernels:
+       make -C xen include/public/interface.h
        for i in $(XKERNELS) ; do $(MAKE) $$i-install || exit 1; done
 
 install-docs:
diff -r ece9b5710b29 tools/Rules.mk
--- a/tools/Rules.mk    Thu Apr 06 00:59:18 2006 +0100
+++ b/tools/Rules.mk    Thu Apr 06 12:02:56 2006 +0300
@@ -12,7 +12,7 @@ XEN_LIBXENSTAT     = $(XEN_ROOT)/tools/x
 
 X11_LDPATH = -L/usr/X11R6/$(LIBDIR)
 
-CFLAGS += -D__XEN_INTERFACE_VERSION__=0x00030101
+CFLAGS += -D__XEN_INTERFACE_VERSION__=$(XEN_LATEST_INTERFACE_VERSION)
 
 %.opic: %.c
        $(CC) $(CPPFLAGS) -DPIC $(CFLAGS) -fPIC -c -o $@ $<
diff -r ece9b5710b29 xen/Makefile
--- a/xen/Makefile      Thu Apr 06 00:59:18 2006 +0100
+++ b/xen/Makefile      Thu Apr 06 12:02:56 2006 +0300
@@ -54,7 +54,7 @@ debug: FORCE
 
 $(TARGET): delete-unfresh-files
        $(MAKE) -C tools
-       $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
+       $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h 
include/public/interface.h
        $(MAKE) -f $(BASEDIR)/Rules.mk include/xen/acm_policy.h
        [ -e include/asm ] || ln -sf asm-$(TARGET_ARCH) include/asm
        $(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) asm-offsets.s
@@ -66,6 +66,9 @@ delete-unfresh-files:
 delete-unfresh-files:
        @if [ ! -r include/xen/compile.h -o -O include/xen/compile.h ]; then \
                rm -f include/xen/{banner,compile}.h; \
+       fi
+       @if [ ! -r include/public/interface.h -o -O include/public/interface.h 
]; then \
+               rm -f include/public/interface.h; \
        fi
 
 # acm_policy.h contains security policy for Xen
@@ -103,6 +106,13 @@ include/xen/banner.h:
        tools/figlet/figlet -d tools/figlet Xen $(XEN_FULLVERSION) > $@.new
        @mv -f $@.new $@
 
+# interface.h contains our interface version information. Rebuilt on every 
'make' invocation.
+include/public/interface.h: LANG=C
+include/public/interface.h: include/public/interface.h.in
+       @sed -e 
's/@@xenlatestinterfaceversion@@/$(XEN_LATEST_INTERFACE_VERSION)/g' \
+           < include/public/interface.h.in > $@.new
+       @mv -f $@.new $@
+
 include/asm-$(TARGET_ARCH)/asm-offsets.h: arch/$(TARGET_ARCH)/asm-offsets.s
        @(set -e; \
          echo "/*"; \
diff -r ece9b5710b29 xen/include/public/xen-compat.h
--- a/xen/include/public/xen-compat.h   Thu Apr 06 00:59:18 2006 +0100
+++ b/xen/include/public/xen-compat.h   Thu Apr 06 12:02:56 2006 +0300
@@ -9,7 +9,7 @@
 #ifndef __XEN_PUBLIC_XEN_COMPAT_H__
 #define __XEN_PUBLIC_XEN_COMPAT_H__
 
-#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030101
+#include "interface.h"
 
 #if defined(__XEN__)
 /* Xen is built with matching headers and implements the latest interface. */
diff -r ece9b5710b29 xen/include/public/interface.h.in
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/public/interface.h.in Thu Apr 06 12:02:56 2006 +0300
@@ -0,0 +1,1 @@
+#define __XEN_LATEST_INTERFACE_VERSION__ @@xenlatestinterfaceversion@@



-- 
Muli Ben-Yehuda
http://www.mulix.org | http://mulix.livejournal.com/


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.