Hollis Blanchard
2006-May-10 22:04 UTC
[Xen-devel] [patch] build configuration changes for libxc
This patch applies the same organization to the tools/libxc Makefile
that we implemented in xen/. In particular:
- add a top-level config/ directory, containing one .mk file per
architecture.
- automatically define CONFIG_$(shell uname -s) under tools/. Maybe that
should be moved to the top-level Config.mk instead. John Levon said the
current "SRCS += $(SRCS_Linux)" was an accident; he intended to use
"$(SRCS_$(shell uname -s))" instead... so I just defined a CONFIG_
variable for it.
- define XEN_ROOT in a few places that weren''t before, e.g.
xen/tools/*.
This is needed to include the config/*.mk files.
The patch also renames "SRCS" and "BUILD_SRCS" to
"CTRL_SRCS" and
"GUEST_SRCS", because I found the original naming extremely confusing
("don''t we build all the sources?").
This has only been compile-tested on x86_32 (on Linux). Feedback
welcome.
--
Hollis Blanchard
IBM Linux Technology Center
Reorganize the build configuration, in particular for libxc portability.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
diff -r 1e3977e029fd Config.mk
--- a/Config.mk Mon May 08 19:21:41 2006 +0100
+++ b/Config.mk Wed May 10 16:57:30 2006 -0500
@@ -39,19 +39,7 @@ CFLAGS += -g
CFLAGS += -g
endif
-ifeq ($(XEN_TARGET_ARCH),x86_32)
-CFLAGS += -m32 -march=i686
-endif
-
-ifeq ($(XEN_TARGET_ARCH),x86_64)
-CFLAGS += -m64
-endif
-
-ifeq ($(XEN_TARGET_ARCH),x86_64)
-LIBDIR = lib64
-else
-LIBDIR = lib
-endif
+include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk
ifneq ($(EXTRA_PREFIX),)
EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
diff -r 1e3977e029fd extras/mini-os/Makefile
--- a/extras/mini-os/Makefile Mon May 08 19:21:41 2006 +0100
+++ b/extras/mini-os/Makefile Wed May 10 16:57:30 2006 -0500
@@ -1,6 +1,7 @@ debug ?= y
debug ?= y
-include $(CURDIR)/../../Config.mk
+XEN_ROOT = ../..
+include $(XEN_ROOT)/Config.mk
# Set TARGET_ARCH
override TARGET_ARCH := $(XEN_TARGET_ARCH)
diff -r 1e3977e029fd tools/Rules.mk
--- a/tools/Rules.mk Mon May 08 19:21:41 2006 +0100
+++ b/tools/Rules.mk Wed May 10 16:57:30 2006 -0500
@@ -4,6 +4,8 @@ all:
all:
include $(XEN_ROOT)/Config.mk
+
+CONFIG-$(shell uname -s) := y
XEN_XC = $(XEN_ROOT)/tools/python/xen/lowlevel/xc
XEN_LIBXC = $(XEN_ROOT)/tools/libxc
diff -r 1e3977e029fd tools/libxc/Makefile
--- a/tools/libxc/Makefile Mon May 08 19:21:41 2006 +0100
+++ b/tools/libxc/Makefile Wed May 10 16:57:30 2006 -0500
@@ -10,42 +10,32 @@ XEN_ROOT = ../..
XEN_ROOT = ../..
include $(XEN_ROOT)/tools/Rules.mk
-SRCS :-SRCS += xc_bvtsched.c
-SRCS += xc_core.c
-SRCS += xc_domain.c
-SRCS += xc_evtchn.c
-SRCS += xc_misc.c
-SRCS += xc_acm.c
-SRCS += xc_physdev.c
-SRCS += xc_private.c
-SRCS += xc_sedf.c
-SRCS += xc_tbuf.c
+CTRL_SRCS-y :+CTRL_SRCS-y += xc_bvtsched.c
+CTRL_SRCS-y += xc_core.c
+CTRL_SRCS-y += xc_domain.c
+CTRL_SRCS-y += xc_evtchn.c
+CTRL_SRCS-y += xc_misc.c
+CTRL_SRCS-y += xc_acm.c
+CTRL_SRCS-y += xc_physdev.c
+CTRL_SRCS-y += xc_private.c
+CTRL_SRCS-y += xc_sedf.c
+CTRL_SRCS-y += xc_tbuf.c
+CTRL_SRCS-$(CONFIG_X86) += xc_ptrace.c
+CTRL_SRCS-$(CONFIG_X86) += xc_ptrace_core.c
+CTRL_SRCS-$(CONFIG_X86) += xc_pagetab.c
+CTRL_SRCS-$(CONFIG_Linux) += xc_linux.c
-ifeq ($(patsubst x86%,x86,$(XEN_TARGET_ARCH)),x86)
-SRCS += xc_ptrace.c
-SRCS += xc_ptrace_core.c
-SRCS += xc_pagetab.c
-endif
-
-SRCS_Linux += xc_linux.c
-
-SRCS += $(SRCS_Linux)
-
-BUILD_SRCS :-BUILD_SRCS += xc_linux_build.c
-BUILD_SRCS += xc_load_bin.c
-BUILD_SRCS += xc_load_elf.c
-BUILD_SRCS += xg_private.c
-
-ifeq ($(XEN_TARGET_ARCH),ia64)
-BUILD_SRCS += xc_ia64_stubs.c
-else
-BUILD_SRCS += xc_load_aout9.c
-BUILD_SRCS += xc_linux_restore.c
-BUILD_SRCS += xc_linux_save.c
-BUILD_SRCS += xc_hvm_build.c
-endif
+GUEST_SRCS-y :+GUEST_SRCS-y += xc_linux_build.c
+GUEST_SRCS-y += xc_load_bin.c
+GUEST_SRCS-y += xc_load_elf.c
+GUEST_SRCS-y += xg_private.c
+GUEST_SRCS-$(CONFIG_IA64) += xc_ia64_stubs.c
+GUEST_SRCS-$(CONFIG_PLAN9) += xc_load_aout9.c
+GUEST_SRCS-$(CONFIG_MIGRATE) += xc_linux_restore.c
+GUEST_SRCS-$(CONFIG_MIGRATE) += xc_linux_save.c
+GUEST_SRCS-$(CONFIG_HVM) += xc_hvm_build.c
CFLAGS += -Werror
CFLAGS += -fno-strict-aliasing
@@ -60,11 +50,11 @@ LDFLAGS += -L.
LDFLAGS += -L.
DEPS = .*.d
-LIB_OBJS := $(patsubst %.c,%.o,$(SRCS))
-PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS))
+CTRL_LIB_OBJS := $(patsubst %.c,%.o,$(CTRL_SRCS-y))
+CTRL_PIC_OBJS := $(patsubst %.c,%.opic,$(CTRL_SRCS-y))
-LIB_BUILD_OBJS := $(patsubst %.c,%.o,$(BUILD_SRCS))
-PIC_BUILD_OBJS := $(patsubst %.c,%.opic,$(BUILD_SRCS))
+GUEST_LIB_OBJS := $(patsubst %.c,%.o,$(GUEST_SRCS-y))
+GUEST_PIC_OBJS := $(patsubst %.c,%.opic,$(GUEST_SRCS-y))
LIB := libxenctrl.a
LIB += libxenctrl.so libxenctrl.so.$(MAJOR) libxenctrl.so.$(MAJOR).$(MINOR)
@@ -124,7 +114,7 @@ rpm: build
# libxenctrl
-libxenctrl.a: $(LIB_OBJS)
+libxenctrl.a: $(CTRL_LIB_OBJS)
$(AR) rc $@ $^
libxenctrl.so: libxenctrl.so.$(MAJOR)
@@ -132,12 +122,12 @@ libxenctrl.so.$(MAJOR): libxenctrl.so.$(
libxenctrl.so.$(MAJOR): libxenctrl.so.$(MAJOR).$(MINOR)
ln -sf $< $@
-libxenctrl.so.$(MAJOR).$(MINOR): $(PIC_OBJS)
+libxenctrl.so.$(MAJOR).$(MINOR): $(CTRL_PIC_OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -Wl,-soname -Wl,libxenctrl.so.$(MAJOR) -shared -o
$@ $^
# libxenguest
-libxenguest.a: $(LIB_BUILD_OBJS)
+libxenguest.a: $(GUEST_LIB_OBJS)
$(AR) rc $@ $^
libxenguest.so: libxenguest.so.$(MAJOR)
@@ -145,7 +135,7 @@ libxenguest.so.$(MAJOR): libxenguest.so.
libxenguest.so.$(MAJOR): libxenguest.so.$(MAJOR).$(MINOR)
ln -sf $< $@
-libxenguest.so.$(MAJOR).$(MINOR): $(PIC_BUILD_OBJS) libxenctrl.so
+libxenguest.so.$(MAJOR).$(MINOR): $(GUEST_PIC_OBJS) libxenctrl.so
$(CC) $(CFLAGS) $(LDFLAGS) -Wl,-soname -Wl,libxenguest.so.$(MAJOR) -shared -o
$@ $^ -lz -lxenctrl
-include $(DEPS)
diff -r 1e3977e029fd xen/tools/Makefile
--- a/xen/tools/Makefile Mon May 08 19:21:41 2006 +0100
+++ b/xen/tools/Makefile Wed May 10 16:57:30 2006 -0500
@@ -1,5 +1,6 @@
-include $(BASEDIR)/../Config.mk
+XEN_ROOT = $(BASEDIR)/..
+include $(XEN_ROOT)/Config.mk
.PHONY: default
default:
diff -r 1e3977e029fd xen/tools/figlet/Makefile
--- a/xen/tools/figlet/Makefile Mon May 08 19:21:41 2006 +0100
+++ b/xen/tools/figlet/Makefile Wed May 10 16:57:30 2006 -0500
@@ -1,5 +1,6 @@
-include $(BASEDIR)/../Config.mk
+XEN_ROOT = $(BASEDIR)/..
+include $(XEN_ROOT)/Config.mk
figlet: figlet.c
$(HOSTCC) -o $@ $<
diff -r 1e3977e029fd config/ia64.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/ia64.mk Wed May 10 16:57:30 2006 -0500
@@ -0,0 +1,2 @@
+CONFIG_IA64 := y
+LIBDIR := lib
diff -r 1e3977e029fd config/x86_32.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/x86_32.mk Wed May 10 16:57:30 2006 -0500
@@ -0,0 +1,6 @@
+CONFIG_X86 := y
+CONFIG_PLAN9 := y
+CONFIG_HVM := y
+
+CFLAGS += -m32 -march=i686
+LIBDIR := lib
diff -r 1e3977e029fd config/x86_64.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/config/x86_64.mk Wed May 10 16:57:30 2006 -0500
@@ -0,0 +1,6 @@
+CONFIG_X86 := y
+CONFIG_PLAN9 := y
+CONFIG_HVM := y
+
+CFLAGS += -m64
+LIBDIR = lib64
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Hollis Blanchard
2006-May-11 20:59 UTC
Re: [Xen-devel] [patch] build configuration changes for libxc
On Wed, 2006-05-10 at 17:04 -0500, Hollis Blanchard wrote:> This patch applies the same organization to the tools/libxc Makefile > that we implemented in xen/.Here is an updated version of the patch I sent yesterday. Differences: - forgot to define CONFIG_MIGRATION in config/*.mk (oops). - combine related .c files into a single Makefile line. - move ELFSIZE into config/*.mk. (Also, it turns out that xc_core.c didn''t need ELF at all.) The ELFSIZE thing says to me that we should think about having config.h header files (in addition to config.mk files), but this works fine for now. This patch enables me to build (most of) libxc as a 32-bit PPC app. (Still working on the ABI, but I figured it would be nice to be able to test the changes I make.) Comments? -- Hollis Blanchard IBM Linux Technology Center Reorganize the build configuration, in particular for libxc portability. Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com> diff -r 1e3977e029fd Config.mk --- a/Config.mk Mon May 08 19:21:41 2006 +0100 +++ b/Config.mk Thu May 11 15:48:34 2006 -0500 @@ -39,19 +39,7 @@ CFLAGS += -g CFLAGS += -g endif -ifeq ($(XEN_TARGET_ARCH),x86_32) -CFLAGS += -m32 -march=i686 -endif - -ifeq ($(XEN_TARGET_ARCH),x86_64) -CFLAGS += -m64 -endif - -ifeq ($(XEN_TARGET_ARCH),x86_64) -LIBDIR = lib64 -else -LIBDIR = lib -endif +include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk ifneq ($(EXTRA_PREFIX),) EXTRA_INCLUDES += $(EXTRA_PREFIX)/include diff -r 1e3977e029fd extras/mini-os/Makefile --- a/extras/mini-os/Makefile Mon May 08 19:21:41 2006 +0100 +++ b/extras/mini-os/Makefile Thu May 11 15:48:34 2006 -0500 @@ -1,6 +1,7 @@ debug ?= y debug ?= y -include $(CURDIR)/../../Config.mk +XEN_ROOT = ../.. +include $(XEN_ROOT)/Config.mk # Set TARGET_ARCH override TARGET_ARCH := $(XEN_TARGET_ARCH) diff -r 1e3977e029fd tools/Rules.mk --- a/tools/Rules.mk Mon May 08 19:21:41 2006 +0100 +++ b/tools/Rules.mk Thu May 11 15:48:34 2006 -0500 @@ -4,6 +4,8 @@ all: all: include $(XEN_ROOT)/Config.mk + +CONFIG-$(shell uname -s) := y XEN_XC = $(XEN_ROOT)/tools/python/xen/lowlevel/xc XEN_LIBXC = $(XEN_ROOT)/tools/libxc diff -r 1e3977e029fd tools/libxc/Makefile --- a/tools/libxc/Makefile Mon May 08 19:21:41 2006 +0100 +++ b/tools/libxc/Makefile Thu May 11 15:48:34 2006 -0500 @@ -10,42 +10,29 @@ XEN_ROOT = ../.. XEN_ROOT = ../.. include $(XEN_ROOT)/tools/Rules.mk -SRCS :-SRCS += xc_bvtsched.c -SRCS += xc_core.c -SRCS += xc_domain.c -SRCS += xc_evtchn.c -SRCS += xc_misc.c -SRCS += xc_acm.c -SRCS += xc_physdev.c -SRCS += xc_private.c -SRCS += xc_sedf.c -SRCS += xc_tbuf.c +CTRL_SRCS-y :+CTRL_SRCS-y += xc_bvtsched.c +CTRL_SRCS-y += xc_core.c +CTRL_SRCS-y += xc_domain.c +CTRL_SRCS-y += xc_evtchn.c +CTRL_SRCS-y += xc_misc.c +CTRL_SRCS-y += xc_acm.c +CTRL_SRCS-y += xc_physdev.c +CTRL_SRCS-y += xc_private.c +CTRL_SRCS-y += xc_sedf.c +CTRL_SRCS-y += xc_tbuf.c +CTRL_SRCS-$(CONFIG_X86) += xc_ptrace.c xc_ptrace_core.c xc_pagetab.c +CTRL_SRCS-$(CONFIG_Linux) += xc_linux.c -ifeq ($(patsubst x86%,x86,$(XEN_TARGET_ARCH)),x86) -SRCS += xc_ptrace.c -SRCS += xc_ptrace_core.c -SRCS += xc_pagetab.c -endif - -SRCS_Linux += xc_linux.c - -SRCS += $(SRCS_Linux) - -BUILD_SRCS :-BUILD_SRCS += xc_linux_build.c -BUILD_SRCS += xc_load_bin.c -BUILD_SRCS += xc_load_elf.c -BUILD_SRCS += xg_private.c - -ifeq ($(XEN_TARGET_ARCH),ia64) -BUILD_SRCS += xc_ia64_stubs.c -else -BUILD_SRCS += xc_load_aout9.c -BUILD_SRCS += xc_linux_restore.c -BUILD_SRCS += xc_linux_save.c -BUILD_SRCS += xc_hvm_build.c -endif +GUEST_SRCS-y :+GUEST_SRCS-y += xc_linux_build.c +GUEST_SRCS-y += xc_load_bin.c +GUEST_SRCS-y += xc_load_elf.c +GUEST_SRCS-y += xg_private.c +GUEST_SRCS-$(CONFIG_IA64) += xc_ia64_stubs.c +GUEST_SRCS-$(CONFIG_PLAN9) += xc_load_aout9.c +GUEST_SRCS-$(CONFIG_MIGRATE) += xc_linux_restore.c xc_linux_save.c +GUEST_SRCS-$(CONFIG_HVM) += xc_hvm_build.c CFLAGS += -Werror CFLAGS += -fno-strict-aliasing @@ -60,11 +47,11 @@ LDFLAGS += -L. LDFLAGS += -L. DEPS = .*.d -LIB_OBJS := $(patsubst %.c,%.o,$(SRCS)) -PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS)) +CTRL_LIB_OBJS := $(patsubst %.c,%.o,$(CTRL_SRCS-y)) +CTRL_PIC_OBJS := $(patsubst %.c,%.opic,$(CTRL_SRCS-y)) -LIB_BUILD_OBJS := $(patsubst %.c,%.o,$(BUILD_SRCS)) -PIC_BUILD_OBJS := $(patsubst %.c,%.opic,$(BUILD_SRCS)) +GUEST_LIB_OBJS := $(patsubst %.c,%.o,$(GUEST_SRCS-y)) +GUEST_PIC_OBJS := $(patsubst %.c,%.opic,$(GUEST_SRCS-y)) LIB := libxenctrl.a LIB += libxenctrl.so libxenctrl.so.$(MAJOR) libxenctrl.so.$(MAJOR).$(MINOR) @@ -124,7 +111,7 @@ rpm: build # libxenctrl -libxenctrl.a: $(LIB_OBJS) +libxenctrl.a: $(CTRL_LIB_OBJS) $(AR) rc $@ $^ libxenctrl.so: libxenctrl.so.$(MAJOR) @@ -132,12 +119,12 @@ libxenctrl.so.$(MAJOR): libxenctrl.so.$( libxenctrl.so.$(MAJOR): libxenctrl.so.$(MAJOR).$(MINOR) ln -sf $< $@ -libxenctrl.so.$(MAJOR).$(MINOR): $(PIC_OBJS) +libxenctrl.so.$(MAJOR).$(MINOR): $(CTRL_PIC_OBJS) $(CC) $(CFLAGS) $(LDFLAGS) -Wl,-soname -Wl,libxenctrl.so.$(MAJOR) -shared -o $@ $^ # libxenguest -libxenguest.a: $(LIB_BUILD_OBJS) +libxenguest.a: $(GUEST_LIB_OBJS) $(AR) rc $@ $^ libxenguest.so: libxenguest.so.$(MAJOR) @@ -145,7 +132,7 @@ libxenguest.so.$(MAJOR): libxenguest.so. libxenguest.so.$(MAJOR): libxenguest.so.$(MAJOR).$(MINOR) ln -sf $< $@ -libxenguest.so.$(MAJOR).$(MINOR): $(PIC_BUILD_OBJS) libxenctrl.so +libxenguest.so.$(MAJOR).$(MINOR): $(GUEST_PIC_OBJS) libxenctrl.so $(CC) $(CFLAGS) $(LDFLAGS) -Wl,-soname -Wl,libxenguest.so.$(MAJOR) -shared -o $@ $^ -lz -lxenctrl -include $(DEPS) diff -r 1e3977e029fd tools/libxc/xc_core.c --- a/tools/libxc/xc_core.c Mon May 08 19:21:41 2006 +0100 +++ b/tools/libxc/xc_core.c Thu May 11 15:48:34 2006 -0500 @@ -1,6 +1,4 @@ #include "xg_private.h" -#define ELFSIZE 32 -#include "xc_elf.h" #include <stdlib.h> #include <unistd.h> diff -r 1e3977e029fd tools/libxc/xc_linux_build.c --- a/tools/libxc/xc_linux_build.c Mon May 08 19:21:41 2006 +0100 +++ b/tools/libxc/xc_linux_build.c Thu May 11 15:48:34 2006 -0500 @@ -5,14 +5,6 @@ #include "xg_private.h" #include "xc_private.h" #include <xenctrl.h> - -#if defined(__i386__) -#define ELFSIZE 32 -#endif - -#if defined(__x86_64__) || defined(__ia64__) -#define ELFSIZE 64 -#endif #include "xc_elf.h" #include "xc_aout9.h" diff -r 1e3977e029fd tools/libxc/xc_load_elf.c --- a/tools/libxc/xc_load_elf.c Mon May 08 19:21:41 2006 +0100 +++ b/tools/libxc/xc_load_elf.c Thu May 11 15:48:34 2006 -0500 @@ -3,14 +3,6 @@ */ #include "xg_private.h" - -#if defined(__i386__) -#define ELFSIZE 32 -#endif -#if defined(__x86_64__) || defined(__ia64__) -#define ELFSIZE 64 -#endif - #include "xc_elf.h" #include <stdlib.h> diff -r 1e3977e029fd xen/tools/Makefile --- a/xen/tools/Makefile Mon May 08 19:21:41 2006 +0100 +++ b/xen/tools/Makefile Thu May 11 15:48:34 2006 -0500 @@ -1,5 +1,6 @@ -include $(BASEDIR)/../Config.mk +XEN_ROOT = $(BASEDIR)/.. +include $(XEN_ROOT)/Config.mk .PHONY: default default: diff -r 1e3977e029fd xen/tools/figlet/Makefile --- a/xen/tools/figlet/Makefile Mon May 08 19:21:41 2006 +0100 +++ b/xen/tools/figlet/Makefile Thu May 11 15:48:34 2006 -0500 @@ -1,5 +1,6 @@ -include $(BASEDIR)/../Config.mk +XEN_ROOT = $(BASEDIR)/.. +include $(XEN_ROOT)/Config.mk figlet: figlet.c $(HOSTCC) -o $@ $< diff -r 1e3977e029fd config/ia64.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/ia64.mk Thu May 11 15:48:34 2006 -0500 @@ -0,0 +1,4 @@ +CONFIG_IA64 := y + +CFLAGS += -DELFSIZE=64 +LIBDIR := lib diff -r 1e3977e029fd config/x86_32.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/x86_32.mk Thu May 11 15:48:34 2006 -0500 @@ -0,0 +1,7 @@ +CONFIG_X86 := y +CONFIG_PLAN9 := y +CONFIG_HVM := y +CONFIG_MIGRATE := y + +CFLAGS += -m32 -march=i686 -DELFSIZE=32 +LIBDIR := lib diff -r 1e3977e029fd config/x86_64.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/x86_64.mk Thu May 11 15:48:34 2006 -0500 @@ -0,0 +1,7 @@ +CONFIG_X86 := y +CONFIG_PLAN9 := y +CONFIG_HVM := y +CONFIG_MIGRATE := y + +CFLAGS += -m64 -DELFSIZE=64 +LIBDIR = lib64 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel