From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerone Young Subject: [PATCH] Allow for Cross compile of user tools Date: Mon, 01 Oct 2007 13:56:29 -0500 Message-ID: <1191264989.18461.12.camel@laptop> Reply-To: jyoung5-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-/AUXIgQjxupoMVNuEUUk" To: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org --=-/AUXIgQjxupoMVNuEUUk Content-Type: text/plain Content-Transfer-Encoding: 7bit This is the first of many patches to begin to make kvm source a lot better for compiling for other architecture support (that is not x86 or x86-64). This patch makes it possible so that someone on an x86 machine can cross compile for an x86-64 machine and vice versa. So now you will have config-$(arch).mak for each architecture, with specific architecture rules. An example of this is for compiling x86-64 on an x86 machine is: make KERNELDIR=~/tmp/kvm ARCH=x86_64 This allows for someone with an x86 machine to compile for x86_64. Later patches that I will be submitting will be for ppc and will make a few more changes. What I would like though is comments on how everyone feels about this approach. We are need of something like this to start ading ppc related code. Signed-off-by: Jerone Young --=-/AUXIgQjxupoMVNuEUUk Content-Disposition: attachment; filename=kvm_user_cross_comp.patch Content-Type: text/x-patch; name=kvm_user_cross_comp.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit diff --git a/user/Makefile b/user/Makefile index 26eb530..aebba58 100644 --- a/user/Makefile +++ b/user/Makefile @@ -1,5 +1,12 @@ -include config.mak +ARCH ?= $(shell uname -m | sed -e s/i.86/x86/) + +KERNELDIR ?= /lib/modules/$(shell uname -r)/build/ + +DESTDIR ?= + +#include architecure specific make rules +include config-$(ARCH).mak # cc-option # Usage: OP_CFLAGS+=$(call cc-option, -falign-functions=0, -malign-functions=0) @@ -7,8 +14,8 @@ include config.mak cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \ > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) -CFLAGS = -I $(KERNELDIR)/include $(autodepend-flags) -g -fomit-frame-pointer \ - -Wall -m$(bits) +CFLAGS += -I $(KERNELDIR)/include $(autodepend-flags) -g -fomit-frame-pointer \ + -Wall CFLAGS += $(call cc-option, -fno-stack-protector, "") CFLAGS += $(call cc-option, -fno-stack-protector-all, "") @@ -18,20 +25,6 @@ CXXFLAGS = $(autodepend-flags) autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -DESTDIR = - -ifeq ($(shell uname -m), x86_64) -LIBDIR = /lib64 -cstart.o = test/cstart64.o -bits = 64 -ldarch = elf64-x86-64 -else -LIBDIR = /lib -cstart.o = test/cstart.o -bits = 32 -ldarch = elf32-i386 -endif - all: kvmctl libkvm.a flatfiles kvmctl: LDFLAGS += -pthread -lrt @@ -45,11 +38,7 @@ libkvm.a: kvmctl.o flatfiles-common = test/bootstrap test/vmexit.flat test/smp.flat -flatfiles-32 = - -flatfiles-64 = test/access.flat test/irq.flat test/sieve.flat test/simple.flat test/stringio.flat test/memtest1.flat - -flatfiles: $(flatfiles-common) $(flatfiles-$(bits)) +flatfiles: $(flatfiles-common) $(flatfiles) install: install -D kvmctl.h $(DESTDIR)/$(PREFIX)/include/kvmctl.h @@ -60,13 +49,13 @@ install: install -D libkvm.a $(DESTDIR)/$(PREFIX)/$(LIBDIR)/libkvm.a %.flat: %.o - gcc $(CFLAGS) -nostdlib -o $@ -Wl,-T,flat.lds $^ + $(CC) $(CFLAGS) -nostdlib -o $@ -Wl,-T,flat.lds $^ test/bootstrap: test/bootstrap.o - gcc -nostdlib -o $@ -Wl,-T,bootstrap.lds $^ + $(CC) -nostdlib -o $@ -Wl,-T,bootstrap.lds $^ %.o: %.S - gcc $(CFLAGS) -c -nostdlib -o $@ $^ + $(CC) $(CFLAGS) -c -nostdlib -o $@ $^ test/irq.flat: test/print.o diff --git a/user/config-x86.mak b/user/config-x86.mak new file mode 100644 index 0000000..d2d181b --- /dev/null +++ b/user/config-x86.mak @@ -0,0 +1,7 @@ +LIBDIR = /lib +cstart.o = test/cstart.o +bits = 32 +ldarch = elf32-i386 +CFLAGS += -m32 + +flatfiles= diff --git a/user/config-x86_64.mak b/user/config-x86_64.mak new file mode 100644 index 0000000..19ebc46 --- /dev/null +++ b/user/config-x86_64.mak @@ -0,0 +1,7 @@ +LIBDIR = /lib64 +cstart.o = test/cstart64.o +bits = 64 +ldarch = elf64-x86-64 +CFLAGS += -m64 + +flatfiles = test/access.flat test/irq.flat test/sieve.flat test/simple.flat test/stringio.flat test/memtest1.flat --=-/AUXIgQjxupoMVNuEUUk Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ --=-/AUXIgQjxupoMVNuEUUk Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/kvm-devel --=-/AUXIgQjxupoMVNuEUUk--