WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [patch] build configuration changes for libxc

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [patch] build configuration changes for libxc
From: Hollis Blanchard <hollisb@xxxxxxxxxx>
Date: Thu, 11 May 2006 15:59:28 -0500
Cc: John Levon <levon@xxxxxxxxxxxxxxxxx>
Delivery-date: Thu, 11 May 2006 13:58:58 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1147298655.27510.33.camel@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: IBM Linux Technology Center
References: <1147298655.27510.33.camel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxx>

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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>