From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Levon Subject: [PATCH] Makefile reworking Date: Mon, 7 Nov 2005 14:44:41 +0000 Message-ID: <20051107144441.GA20544@trollied.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org # HG changeset patch # User levon@movementarian.org # Node ID 31053d3bc7d9d81c682bed791b9d099ada7ff313 # Parent d1b5ad8e8b03b5e79d86d0844b46345a0f931390 Create a configs/ directory for OS-specific makefile settings. Add an initial Solaris config. Consolidate definitions of INSTALL and friends. diff -r d1b5ad8e8b03 -r 31053d3bc7d9 Config.mk --- a/Config.mk Mon Nov 7 13:04:27 2005 +0100 +++ b/Config.mk Mon Nov 7 14:41:39 2005 +0000 @@ -1,60 +1,6 @@ # -*- mode: Makefile; -*- -# Currently supported architectures: x86_32, x86_64 -XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/) -XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH) -XEN_TARGET_X86_PAE ?= n +OS = $(shell uname -s) -# Tools to run on system hosting the build -HOSTCC = gcc -HOSTCFLAGS = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer - -AS = $(CROSS_COMPILE)as -LD = $(CROSS_COMPILE)ld -CC = $(CROSS_COMPILE)gcc -CPP = $(CROSS_COMPILE)gcc -E -AR = $(CROSS_COMPILE)ar -RANLIB = $(CROSS_COMPILE)ranlib -NM = $(CROSS_COMPILE)nm -STRIP = $(CROSS_COMPILE)strip -OBJCOPY = $(CROSS_COMPILE)objcopy -OBJDUMP = $(CROSS_COMPILE)objdump - -DISTDIR ?= $(XEN_ROOT)/dist - -INSTALL = install -INSTALL_DIR = $(INSTALL) -d -m0755 -INSTALL_DATA = $(INSTALL) -m0644 -INSTALL_PROG = $(INSTALL) -m0755 - -ifeq ($(XEN_TARGET_ARCH),x86_64) -LIBDIR = lib64 -else -LIBDIR = lib -endif - -ifneq ($(EXTRA_PREFIX),) -EXTRA_INCLUDES += $(EXTRA_PREFIX)/include -EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBDIR) -endif - -LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i)) -CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i)) - -# Choose the best mirror to download linux kernel -KERNEL_REPO = http://www.kernel.org - -# ACM_USE_SECURITY_POLICY is set to security policy of Xen -# Supported models are: -# ACM_NULL_POLICY (ACM will not be built with this policy) -# ACM_CHINESE_WALL_POLICY -# ACM_SIMPLE_TYPE_ENFORCEMENT_POLICY -# ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY -ACM_USE_SECURITY_POLICY ?= ACM_NULL_POLICY - -# Optional components -XENSTAT_XENTOP ?= y - -VTPM_TOOLS ?= n - --include $(XEN_ROOT)/.config +include $(XEN_ROOT)/configs/$(OS).mk +include $(XEN_ROOT)/configs/common.mk diff -r d1b5ad8e8b03 -r 31053d3bc7d9 Makefile --- a/Makefile Mon Nov 7 13:04:27 2005 +0100 +++ b/Makefile Mon Nov 7 14:41:39 2005 +0000 @@ -2,8 +2,12 @@ # Grand Unified Makefile for Xen. # -KERNELS ?= linux-2.6-xen0 linux-2.6-xenU -# You may use wildcards in the above e.g. KERNELS=*2.6* +# Default target must appear before any include lines +all: dist + +XEN_ROOT=$(CURDIR) +include Config.mk +include buildconfigs/Rules.mk XKERNELS := $(foreach kernel, $(KERNELS), $(patsubst buildconfigs/mk.%,%,$(wildcard buildconfigs/mk.$(kernel))) ) @@ -12,13 +16,6 @@ SUBARCH := $(subst x86_32,i386,$(XEN_TARGET_ARCH)) export XEN_TARGET_ARCH SUBARCH endif - -# Default target must appear before any include lines -all: dist - -XEN_ROOT=$(CURDIR) -include Config.mk -include buildconfigs/Rules.mk ifeq ($(XEN_TARGET_X86_PAE),y) export pae=y diff -r d1b5ad8e8b03 -r 31053d3bc7d9 buildconfigs/Rules.mk --- a/buildconfigs/Rules.mk Mon Nov 7 13:04:27 2005 +0100 +++ b/buildconfigs/Rules.mk Mon Nov 7 14:41:39 2005 +0000 @@ -1,5 +1,5 @@ -include Config.mk +include $(XEN_ROOT)/Config.mk export DESTDIR @@ -49,7 +49,7 @@ netbsd-%.tar.bz2: netbsd-%-xen-kernel-$(NETBSD_CVSSNAP).tar.bz2 ln -fs $< $@ -ifeq ($(OS),linux) +ifeq ($(KERNEL_OS),linux) OS_VER = $(LINUX_VER) else OS_VER = $(NETBSD_VER) diff -r d1b5ad8e8b03 -r 31053d3bc7d9 buildconfigs/mk.linux-2.6-xen --- a/buildconfigs/mk.linux-2.6-xen Mon Nov 7 13:04:27 2005 +0100 +++ b/buildconfigs/mk.linux-2.6-xen Mon Nov 7 14:41:39 2005 +0000 @@ -1,12 +1,14 @@ -OS = linux +XEN_ROOT = . + +KERNEL_OS = linux LINUX_SERIES = 2.6 LINUX_VER = 2.6.12 EXTRAVERSION ?= xen -LINUX_DIR = $(OS)-$(LINUX_VER)-$(EXTRAVERSION) +LINUX_DIR = $(KERNEL_OS)-$(LINUX_VER)-$(EXTRAVERSION) include buildconfigs/Rules.mk @@ -20,7 +22,7 @@ fi $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) INSTALL_PATH=$(DESTDIR) install -$(LINUX_DIR)/include/linux/autoconf.h: ref-$(OS)-$(LINUX_VER)/.valid-ref +$(LINUX_DIR)/include/linux/autoconf.h: ref-$(KERNEL_OS)-$(LINUX_VER)/.valid-ref rm -rf $(LINUX_DIR) cp -al $(Mk.tmp ; \ @@ -48,4 +50,4 @@ $(MAKE) -C $(LINUX_DIR) ARCH=$(LINUX_ARCH) clean delete: - rm -rf tmp-$(OS)-$(LINUX_VER) $(LINUX_DIR) + rm -rf tmp-$(KERNEL_OS)-$(LINUX_VER) $(LINUX_DIR) diff -r d1b5ad8e8b03 -r 31053d3bc7d9 buildconfigs/mk.netbsd-2.0-xenU --- a/buildconfigs/mk.netbsd-2.0-xenU Mon Nov 7 13:04:27 2005 +0100 +++ b/buildconfigs/mk.netbsd-2.0-xenU Mon Nov 7 14:41:39 2005 +0000 @@ -1,3 +1,5 @@ + +XEN_ROOT = . OS = netbsd @@ -8,13 +10,13 @@ FULLVERSION = $(NETBSD_VER)-$(EXTRAVERSION) -NETBSD_DIR = $(OS)-$(FULLVERSION) +NETBSD_DIR = $(KERNEL_OS)-$(FULLVERSION) .PHONY: build clean mrproper mkpatch include buildconfigs/Rules.mk -build: $(OS)-$(EXTRAVERSION) +build: $(KERNEL_OS)-$(EXTRAVERSION) netbsd-%-tools.tar.bz2: @echo "Cannot find netbsd-$(NETBSD_VER)-tools.tar.gz in path $(NETBSD_SRC_PATH)" @@ -24,7 +26,7 @@ tar -jxf $< touch $@ # update timestamp to avoid rebuild -$(NETBSD_DIR)/.valid: ref-$(OS)-$(NETBSD_VER)/.valid-ref +$(NETBSD_DIR)/.valid: ref-$(KERNEL_OS)-$(NETBSD_VER)/.valid-ref $(RM) -rf $(NETBSD_DIR) cp -al $( cscope.files cscope -k -b -q MAP: - $(NM) $(TARGET) | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map + $(NM) $(TARGET) | $(GREP) -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map diff -r d1b5ad8e8b03 -r 31053d3bc7d9 xen/Rules.mk --- a/xen/Rules.mk Mon Nov 7 13:04:27 2005 +0100 +++ b/xen/Rules.mk Mon Nov 7 14:41:39 2005 +0000 @@ -42,7 +42,7 @@ endif ALL_OBJS += $(BASEDIR)/arch/$(TARGET_ARCH)/arch.o -test-gcc-flag = $(shell $(CC) -v --help 2>&1 | grep -q " $(1) " && echo $(1)) +test-gcc-flag = $(shell $(CC) -v --help 2>&1 | $(GREP) -q " $(1) " && echo $(1)) include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk @@ -73,7 +73,7 @@ CFLAGS := $(strip $(CFLAGS)) %.o: %.c $(HDRS) Makefile - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(GCC_ASFLAGS) -c $< -o $@ %.o: %.S $(HDRS) Makefile - $(CC) $(CFLAGS) -D__ASSEMBLY__ -c $< -o $@ + $(CC) $(CFLAGS) $(GCC_ASFLAGS) -D__ASSEMBLY__ -c $< -o $@ diff -r d1b5ad8e8b03 -r 31053d3bc7d9 configs/Linux.mk --- /dev/null Thu Jan 1 00:00:00 1970 +0000 +++ b/configs/Linux.mk Mon Nov 7 14:41:39 2005 +0000 @@ -0,0 +1,34 @@ +# -*- mode: Makefile; -*- + +GREP = grep +INSTALL = install + +AS = $(CROSS_COMPILE)gas +LD = $(CROSS_COMPILE)ld +CC = $(CROSS_COMPILE)gcc +CPP = $(CROSS_COMPILE)gcc -E +AR = $(CROSS_COMPILE)ar +RANLIB = $(CROSS_COMPILE)ranlib +NM = $(CROSS_COMPILE)nm +STRIP = $(CROSS_COMPILE)strip +OBJCOPY = $(CROSS_COMPILE)objcopy +OBJDUMP = $(CROSS_COMPILE)objdump + +XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/) + +ifeq ($(XEN_TARGET_ARCH),x86_64) +LIBDIR = lib64 +else +LIBDIR = lib +endif +SONAME_LDFLAG = -Wl,-soname +SOCKET_LIBS = + +GCC_ASFLAGS = +TOOL_CFLAGS = + +KERNELS ?= linux-2.6-xen0 linux-2.6-xenU +# You may use wildcards in the above e.g. KERNELS=*2.6* + +# Choose the best mirror to download linux kernel +KERNEL_REPO = http://www.kernel.org diff -r d1b5ad8e8b03 -r 31053d3bc7d9 configs/SunOS.mk --- /dev/null Thu Jan 1 00:00:00 1970 +0000 +++ b/configs/SunOS.mk Mon Nov 7 14:41:39 2005 +0000 @@ -0,0 +1,27 @@ +# -*- mode: Makefile; -*- + +GREP = ggrep +INSTALL = ginstall + +AS = $(CROSS_COMPILE)gas +LD = $(CROSS_COMPILE)gld +CC = $(CROSS_COMPILE)gcc +CPP = $(CROSS_COMPILE)gcc -E +AR = $(CROSS_COMPILE)gar +RANLIB = $(CROSS_COMPILE)granlib +NM = $(CROSS_COMPILE)gnm +STRIP = $(CROSS_COMPILE)gstrip +OBJCOPY = $(CROSS_COMPILE)gobjcopy +OBJDUMP = $(CROSS_COMPILE)gobjdump + +XEN_COMPILE_ARCH ?= x86_32 + +LIBDIR = lib +SOCKET_LIBS = -lsocket +SONAME_LDFLAG = -Wl,-h + +GCC_ASFLAGS = -Wa,--divide +TOOL_CFLAGS = -std=gnu99 + +KERNELS = +XEN_NO_IOEMU = 1 diff -r d1b5ad8e8b03 -r 31053d3bc7d9 configs/common.mk --- /dev/null Thu Jan 1 00:00:00 1970 +0000 +++ b/configs/common.mk Mon Nov 7 14:41:39 2005 +0000 @@ -0,0 +1,38 @@ +# -*- mode: Makefile; -*- + +XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH) +XEN_TARGET_X86_PAE ?= n + +SHELL = /bin/bash +INSTALL_DIR = $(INSTALL) -d -m0755 +INSTALL_DATA = $(INSTALL) -m0644 +INSTALL_PROG = $(INSTALL) -m0755 + +# Tools to run on system hosting the build +HOSTCC = gcc +HOSTCFLAGS = -Wall -Werror -Wstrict-prototypes -O2 -fomit-frame-pointer + +DISTDIR ?= $(XEN_ROOT)/dist + +ifneq ($(EXTRA_PREFIX),) +EXTRA_INCLUDES += $(EXTRA_PREFIX)/include +EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBDIR) +endif + +LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i)) +CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i)) + +# ACM_USE_SECURITY_POLICY is set to security policy of Xen +# Supported models are: +# ACM_NULL_POLICY (ACM will not be built with this policy) +# ACM_CHINESE_WALL_POLICY +# ACM_SIMPLE_TYPE_ENFORCEMENT_POLICY +# ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY +ACM_USE_SECURITY_POLICY ?= ACM_NULL_POLICY + +# Optional components +XENSTAT_XENTOP ?= y + +VTPM_TOOLS ?= n + +-include $(XEN_ROOT)/.config