@@ -47,6 +47,8 @@ export KCONFIG_CONFIG ?= .config
export CC CXX LD
+export TARGET := $(BASEDIR)/xen
+
.PHONY: default
default: build
@@ -293,11 +295,12 @@ export CFLAGS_UBSAN
endif # need-config
-.PHONY: build install uninstall clean distclean MAP
-build install uninstall debug clean distclean MAP::
+main-targets := build install uninstall clean distclean MAP
+.PHONY: $(main-targets)
ifneq ($(XEN_TARGET_ARCH),x86_32)
- $(MAKE) -f Rules.mk MKRELOC=$(MKRELOC) _$@
+$(main-targets): %: _% ;
else
+$(main-targets):
echo "*** Xen x86/32 target no longer supported!"
endif
@@ -406,67 +409,6 @@ $(TARGET): FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk arch/$(TARGET_ARCH)/include/asm/asm-offsets.h
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) MKRELOC=$(MKRELOC) $@
-quiet_cmd_banner = BANNER $@
-define cmd_banner
- if which figlet >/dev/null 2>&1 ; then \
- echo " Xen $(XEN_FULLVERSION)" | figlet -f $< > $@.tmp; \
- else \
- echo " Xen $(XEN_FULLVERSION)" > $@.tmp; \
- fi; \
- mv -f $@.tmp $@
-endef
-
-.banner: tools/xen.flf FORCE
- $(call if_changed,banner)
-targets += .banner
-
-# Don't refresh this files during e.g., 'sudo make install'
-quiet_cmd_compile.h = UPD $@
-define cmd_compile.h
- if [ ! -r $@ -o -O $@ ]; then \
- cat .banner; \
- sed -e 's/@@date@@/$(XEN_BUILD_DATE)/g' \
- -e 's/@@time@@/$(XEN_BUILD_TIME)/g' \
- -e 's/@@whoami@@/$(XEN_WHOAMI)/g' \
- -e 's/@@domain@@/$(XEN_DOMAIN)/g' \
- -e 's/@@hostname@@/$(XEN_BUILD_HOST)/g' \
- -e 's!@@compiler@@!$(shell $(CC) $(CFLAGS) --version 2>&1 | head -1)!g' \
- -e 's/@@version@@/$(XEN_VERSION)/g' \
- -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
- -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
- -e 's!@@changeset@@!$(shell tools/scmversion $(XEN_ROOT) || echo "unavailable")!g' \
- < $< > $(dot-target).tmp; \
- sed -rf tools/process-banner.sed < .banner >> $(dot-target).tmp; \
- mv -f $(dot-target).tmp $@; \
- fi
-endef
-
-include/xen/compile.h: include/xen/compile.h.in .banner FORCE
- $(if $(filter-out FORCE,$?),$(Q)rm -fv $@)
- $(call if_changed,compile.h)
-
-targets += include/xen/compile.h
-
-asm-offsets.s: arch/$(TARGET_ARCH)/$(TARGET_SUBARCH)/asm-offsets.c
- $(CC) $(call cpp_flags,$(c_flags)) -S -g0 -o $@.new -MQ $@ $<
- $(call move-if-changed,$@.new,$@)
-
-arch/$(TARGET_ARCH)/include/asm/asm-offsets.h: asm-offsets.s
- @(set -e; \
- echo "/*"; \
- echo " * DO NOT MODIFY."; \
- echo " *"; \
- echo " * This file was auto-generated from $<"; \
- echo " *"; \
- echo " */"; \
- echo ""; \
- echo "#ifndef __ASM_OFFSETS_H__"; \
- echo "#define __ASM_OFFSETS_H__"; \
- echo ""; \
- sed -rne "/^[^#].*==>/{s:.*==>(.*)<==.*:\1:; s: [\$$#]: :; p;}"; \
- echo ""; \
- echo "#endif") <$< >$@
-
SUBDIRS = xsm arch/$(TARGET_ARCH) common drivers lib test
define all_sources
( find include -type f -name '*.h' -print; \
@@ -8,9 +8,6 @@
include $(XEN_ROOT)/Config.mk
include $(BASEDIR)/scripts/Kbuild.include
-
-TARGET := $(BASEDIR)/xen
-
# Note that link order matters!
ALL_OBJS-y += $(BASEDIR)/common/built_in.o
ALL_OBJS-y += $(BASEDIR)/drivers/built_in.o
@@ -36,7 +33,8 @@ SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
rodata.cst$(a)) \
$(foreach r,rel rel.ro,data.$(r).local)
-include Makefile
+# The filename build.mk has precedence over Makefile
+include $(firstword $(wildcard build.mk) Makefile)
# Linking
# ---------------------------------------------------------------------------
new file mode 100644
@@ -0,0 +1,61 @@
+quiet_cmd_banner = BANNER $@
+define cmd_banner
+ if which figlet >/dev/null 2>&1 ; then \
+ echo " Xen $(XEN_FULLVERSION)" | figlet -f $< > $@.tmp; \
+ else \
+ echo " Xen $(XEN_FULLVERSION)" > $@.tmp; \
+ fi; \
+ mv -f $@.tmp $@
+endef
+
+.banner: tools/xen.flf FORCE
+ $(call if_changed,banner)
+
+targets += .banner
+
+# Don't refresh this files during e.g., 'sudo make install'
+quiet_cmd_compile.h = UPD $@
+define cmd_compile.h
+ if [ ! -r $@ -o -O $@ ]; then \
+ cat .banner; \
+ sed -e 's/@@date@@/$(XEN_BUILD_DATE)/g' \
+ -e 's/@@time@@/$(XEN_BUILD_TIME)/g' \
+ -e 's/@@whoami@@/$(XEN_WHOAMI)/g' \
+ -e 's/@@domain@@/$(XEN_DOMAIN)/g' \
+ -e 's/@@hostname@@/$(XEN_BUILD_HOST)/g' \
+ -e 's!@@compiler@@!$(shell $(CC) $(CFLAGS) --version 2>&1 | head -1)!g' \
+ -e 's/@@version@@/$(XEN_VERSION)/g' \
+ -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
+ -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
+ -e 's!@@changeset@@!$(shell tools/scmversion $(XEN_ROOT) || echo "unavailable")!g' \
+ < $< > $(dot-target).tmp; \
+ sed -rf tools/process-banner.sed < .banner >> $(dot-target).tmp; \
+ mv -f $(dot-target).tmp $@; \
+ fi
+endef
+
+include/xen/compile.h: include/xen/compile.h.in .banner FORCE
+ $(if $(filter-out FORCE,$?),$(Q)rm -fv $@)
+ $(call if_changed,compile.h)
+
+targets += include/xen/compile.h
+
+asm-offsets.s: arch/$(TARGET_ARCH)/$(TARGET_SUBARCH)/asm-offsets.c
+ $(CC) $(call cpp_flags,$(c_flags)) -S -g0 -o $@.new -MQ $@ $<
+ $(call move-if-changed,$@.new,$@)
+
+arch/$(TARGET_ARCH)/include/asm/asm-offsets.h: asm-offsets.s
+ @(set -e; \
+ echo "/*"; \
+ echo " * DO NOT MODIFY."; \
+ echo " *"; \
+ echo " * This file was auto-generated from $<"; \
+ echo " *"; \
+ echo " */"; \
+ echo ""; \
+ echo "#ifndef __ASM_OFFSETS_H__"; \
+ echo "#define __ASM_OFFSETS_H__"; \
+ echo ""; \
+ sed -rne "/^[^#].*==>/{s:.*==>(.*)<==.*:\1:; s: [\$$#]: :; p;}"; \
+ echo ""; \
+ echo "#endif") <$< >$@