build: build everything from the root dir, use obj=$subdir

A subdirectory is now built by setting "$(obj)" instead of changing
directory. "$(obj)" should always be set when using "Rules.mk" and
thus a shortcut "$(build)" is introduced and should be used.

A new variable "$(need-builtin)" is introduce. It is to be used
whenever a "built_in.o" is wanted from a subdirectory. "built_in.o"
isn't the main target anymore, and thus only needs to depends on the
objects that should be part of "built_in.o".

Introduce $(srctree) and $(objtree) to replace $(BASEDIR) in cases a
relative path is better, and $(abs_srctree) and $(abs_objtree) which
have an absolute path.

DEPS is updated as the existing macro to deal with it doesn't know
about $(obj).

There's some changes in "Rules.mk" which in addition to deal with
"$(obj)" also make it's looks more like "Makefile.build" from Linux
v5.12.

test/Makefile doesn't need special handling in order to build
everything under test/, Rules.mk will visit test/livepatch via
$(subdir-y), thus "tests" "all" and "build" target are removed.
"subtree-force-update" target isn't useful so it is removed as well.

test/livepatch/Makefile doesn't need default target anymore, Rules.mk
will build everything in $(extra-y) and thus all *.livepatch.

Adjust cloc recipe: dependency files generated by CC will now have the
full path to the source file, so we don't need to prepend the
subdirectory. This fix some issue with source not been parsed by cloc
before. Also source from tools/kconfig would be listed with changes in
this patch so adjust the find command to stop listing the "tools"
directory and thus kconfig. With a default build of Xen on X86, they
are a few new files parsed by cloc:
    arch/x86/x86_64/compat/mm.c
    arch/x86/x86_64/mm.c
    common/compat/domain.c
    common/compat/memory.c
    common/compat/xlat.c

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Bob Eshleman <bobbyeshleman@gmail.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com> # XSM
This commit is contained in:
Anthony PERARD authored and Jan Beulich committed 2022-02-25 11:01:15 +01:00
1 parent 27060920a7
commit 7a3bcd2bab
17 files changed
+163 -105

No files matched your search

+22 -14
View File
@@ -22,6 +22,15 @@ export CHECKPOLICY ?= checkpolicy
export BASEDIR := $(CURDIR)
export XEN_ROOT := $(BASEDIR)/..
abs_objtree := $(CURDIR)
abs_srctree := $(CURDIR)
export abs_srctree abs_objtree
srctree := .
objtree := .
export srctree objtree
# Do not use make's built-in rules and variables
MAKEFLAGS += -rR
@@ -47,7 +56,7 @@ export KCONFIG_CONFIG ?= .config
export CC CXX LD
export TARGET := $(BASEDIR)/xen
export TARGET := xen
.PHONY: default
default: build
@@ -250,7 +259,7 @@ endif
CFLAGS += -nostdinc -fno-builtin -fno-common
CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
$(call cc-option-add,CFLAGS,CC,-Wvla)
CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
CFLAGS += -pipe -D__XEN__ -include $(srctree)/include/xen/config.h
CFLAGS-$(CONFIG_DEBUG_INFO) += -g
ifneq ($(CONFIG_CC_IS_CLANG),y)
@@ -349,10 +358,10 @@ _install: $(TARGET)$(CONFIG_XEN_INSTALL_SUFFIX)
.PHONY: tests
tests:
$(MAKE) -f $(BASEDIR)/Rules.mk -C test tests
$(Q)$(MAKE) $(build)=test
.PHONY: install-tests
install-tests:
$(MAKE) -f $(BASEDIR)/Rules.mk -C test install
$(Q)$(MAKE) $(build)=test install
.PHONY: _uninstall
_uninstall: D=$(DESTDIR)
@@ -408,16 +417,16 @@ $(TARGET).gz: $(TARGET)
$(TARGET): FORCE
$(MAKE) -C tools
$(MAKE) -f $(BASEDIR)/Rules.mk include/xen/compile.h
$(Q)$(MAKE) $(build)=. include/xen/compile.h
[ -e arch/$(TARGET_ARCH)/efi ] && for f in $$(cd common/efi; echo *.[ch]); \
do test -r arch/$(TARGET_ARCH)/efi/$$f || \
ln -nsf ../../../common/efi/$$f arch/$(TARGET_ARCH)/efi/; \
done; \
true
$(MAKE) -f $(BASEDIR)/Rules.mk -C include
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) include
$(MAKE) -f $(BASEDIR)/Rules.mk arch/$(TARGET_ARCH)/include/asm/asm-offsets.h
$(MAKE) -f $(BASEDIR)/Rules.mk MKRELOC=$(MKRELOC) 'ALL_OBJS=$(ALL_OBJS-y)' 'ALL_LIBS=$(ALL_LIBS-y)' $@
$(Q)$(MAKE) $(build)=include all
$(Q)$(MAKE) $(build)=arch/$(TARGET_ARCH) include
$(Q)$(MAKE) $(build)=. arch/$(TARGET_ARCH)/include/asm/asm-offsets.h
$(Q)$(MAKE) $(build)=. MKRELOC=$(MKRELOC) 'ALL_OBJS=$(ALL_OBJS-y)' 'ALL_LIBS=$(ALL_LIBS-y)' $@
SUBDIRS = xsm arch/$(TARGET_ARCH) common drivers lib test
define all_sources
@@ -463,19 +472,18 @@ _MAP:
$(NM) -n $(TARGET)-syms | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' > System.map
%.o %.i %.s: %.c FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
$(Q)$(MAKE) $(build)=$(*D) $(*D)/$(@F)
%.o %.s: %.S FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
$(Q)$(MAKE) $(build)=$(*D) $(*D)/$(@F)
%/: FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in.o built_in_bin.o
$(Q)$(MAKE) $(build)=$* need-builtin=1
.PHONY: cloc
cloc:
find . -name '*.o.d' | while read f; do \
find . -name tools -prune -o -name '*.o.d' -print | while read f; do \
for sf in $$(grep -o "[a-zA-Z0-9_/-]*\.[cS]" $$f); do \
sf="$$(dirname $$f)/$$sf"; \
test -f "$$sf" && echo "$$sf"; \
done; \
done | cloc --list-file=-
+92 -48
View File
@@ -3,19 +3,29 @@
# Makefile and are consumed by Rules.mk
#
obj := .
ifndef obj
$(warning kbuild: Rules.mk is included improperly)
endif
src := $(obj)
PHONY := __build
__build:
-include $(BASEDIR)/include/config/auto.conf
include $(XEN_ROOT)/Config.mk
include $(BASEDIR)/scripts/Kbuild.include
# Initialise some variables
obj-y :=
lib-y :=
targets :=
subdir-y :=
CFLAGS-y :=
AFLAGS-y :=
nocov-y :=
noubsan-y :=
SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
$(foreach w,1 2 4, \
@@ -50,28 +60,55 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $< $@
quiet_cmd_binfile = BINFILE $@
cmd_binfile = $(SHELL) $(BASEDIR)/tools/binfile $(BINFILE_FLAGS) $@ $(2)
define gendep
ifneq ($(1),$(subst /,:,$(1)))
DEPS += $(dir $(1)).$(notdir $(1)).d
endif
endef
$(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call gendep,$(o))))
# Handle objects in subdirs
# ---------------------------------------------------------------------------
# o if we encounter foo/ in $(obj-y), replace it by foo/built_in.o
# and add the directory to the list of dirs to descend into: $(subdir-y)
subdir-y := $(subdir-y) $(filter %/, $(obj-y))
obj-y := $(patsubst %/, %/built_in.o, $(obj-y))
# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
# tell kbuild to descend
subdir-obj-y := $(filter %/built_in.o, $(obj-y))
# Figure out what we need to build from the various variables
# ===========================================================================
# Libraries are always collected in one lib file.
# Filter out objects already built-in
lib-y := $(filter-out $(obj-y), $(sort $(lib-y)))
# Subdirectories we need to descend into
subdir-y := $(sort $(subdir-y) $(patsubst %/,%,$(filter %/, $(obj-y))))
# Handle objects in subdirs
# - if we encounter foo/ in $(obj-y), replace it by foo/built_in.o
ifdef need-builtin
obj-y := $(patsubst %/, %/built_in.o, $(obj-y))
else
obj-y := $(filter-out %/, $(obj-y))
endif
# Add subdir path
extra-y := $(addprefix $(obj)/,$(extra-y))
targets := $(addprefix $(obj)/,$(targets))
lib-y := $(addprefix $(obj)/,$(lib-y))
obj-y := $(addprefix $(obj)/,$(obj-y))
obj-bin-y := $(addprefix $(obj)/,$(obj-bin-y))
subdir-y := $(addprefix $(obj)/,$(subdir-y))
nocov-y := $(addprefix $(obj)/,$(nocov-y))
noubsan-y := $(addprefix $(obj)/,$(noubsan-y))
# subdir-builtin may contain duplications. Use $(sort ...)
subdir-builtin := $(sort $(filter %/built_in.o, $(obj-y)))
targets-for-builtin := $(extra-y)
ifneq ($(strip $(lib-y)),)
targets-for-builtin += $(obj)/lib.a
endif
ifdef need-builtin
targets-for-builtin += $(obj)/built_in.o
ifneq ($(strip $(obj-bin-y)),)
ifeq ($(CONFIG_LTO),y)
targets-for-builtin += $(obj)/built_in_bin.o
endif
endif
endif
targets += $(targets-for-builtin)
$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += -DINIT_SECTIONS_ONLY
ifeq ($(CONFIG_COVERAGE),y)
@@ -122,29 +159,28 @@ quiet_cmd_cc_builtin = CC $@
cmd_cc_builtin = \
$(CC) $(XEN_CFLAGS) -c -x c /dev/null -o $@
# To build objects in subdirs, we need to descend into the directories
$(subdir-builtin): $(obj)/%/built_in.o: $(obj)/% ;
quiet_cmd_ld_builtin = LD $@
ifeq ($(CONFIG_LTO),y)
cmd_ld_builtin = \
$(LD_LTO) -r -o $@ $(filter $(obj-y),$(real-prereqs))
$(LD_LTO) -r -o $@ $(real-prereqs)
else
cmd_ld_builtin = \
$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter $(obj-y),$(real-prereqs))
$(LD) $(XEN_LDFLAGS) -r -o $@ $(real-prereqs)
endif
built_in.o: $(obj-y) $(if $(strip $(lib-y)),lib.a) $(extra-y) FORCE
$(obj)/built_in.o: $(obj-y) FORCE
$(call if_changed,$(if $(strip $(obj-y)),ld_builtin,cc_builtin))
lib.a: $(lib-y) FORCE
$(obj)/lib.a: $(lib-y) FORCE
$(call if_changed,ar)
targets += built_in.o
ifneq ($(strip $(lib-y)),)
targets += lib.a
endif
targets += $(filter-out $(subdir-obj-y), $(obj-y) $(lib-y)) $(extra-y)
targets += $(MAKECMDGOALS)
targets += $(filter-out $(subdir-builtin), $(obj-y))
targets += $(lib-y) $(MAKECMDGOALS)
built_in_bin.o: $(obj-bin-y) $(extra-y)
$(obj)/built_in_bin.o: $(obj-bin-y)
ifeq ($(strip $(obj-bin-y)),)
$(CC) $(a_flags) -c -x assembler /dev/null -o $@
else
@@ -155,23 +191,15 @@ endif
PHONY += FORCE
FORCE:
%/built_in.o %/lib.a: FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in.o
%/built_in_bin.o: FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C $* built_in_bin.o
SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
quiet_cmd_cc_o_c = CC $@
ifeq ($(CONFIG_ENFORCE_UNIQUE_SYMBOLS),y)
cmd_cc_o_c = $(CC) $(c_flags) -c $< -o $(dot-target).tmp -MQ $@
ifeq ($(CONFIG_CC_IS_CLANG)$(call clang-ifversion,-lt,600,y),yy)
cmd_objcopy_fix_sym = $(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(dot-target).tmp $@
ifneq ($(CONFIG_CC_IS_CLANG)$(call clang-ifversion,-lt,600,y),yy)
cmd_objcopy_fix_sym = \
$(OBJCOPY) --redefine-sym $(<F)=$< $(dot-target).tmp $@ && rm -f $(dot-target).tmp
else
cmd_objcopy_fix_sym = $(OBJCOPY) --redefine-sym $(<F)=$(SRCPATH)/$< $(dot-target).tmp $@
cmd_objcopy_fix_sym = mv -f $(dot-target).tmp $@
endif
cmd_objcopy_fix_sym += && rm -f $(dot-target).tmp
else
cmd_cc_o_c = $(CC) $(c_flags) -c $< -o $@
endif
@@ -181,13 +209,13 @@ define rule_cc_o_c
$(call cmd,objcopy_fix_sym)
endef
%.o: %.c FORCE
$(obj)/%.o: $(src)/%.c FORCE
$(call if_changed_rule,cc_o_c)
quiet_cmd_cc_o_S = CC $@
cmd_cc_o_S = $(CC) $(a_flags) -c $< -o $@
%.o: %.S FORCE
$(obj)/%.o: $(src)/%.S FORCE
$(call if_changed,cc_o_S)
@@ -205,7 +233,7 @@ define cmd_obj_init_o
$(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
endef
$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o FORCE
$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): $(obj)/%.init.o: $(obj)/%.o FORCE
$(call if_changed,obj_init_o)
quiet_cmd_cpp_i_c = CPP $@
@@ -217,19 +245,21 @@ cmd_cc_s_c = $(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
quiet_cmd_cpp_s_S = CPP $@
cmd_cpp_s_S = $(CPP) $(call cpp_flags,$(a_flags)) -MQ $@ -o $@ $<
%.i: %.c FORCE
$(obj)/%.i: $(src)/%.c FORCE
$(call if_changed,cpp_i_c)
%.s: %.c FORCE
$(obj)/%.s: $(src)/%.c FORCE
$(call if_changed,cc_s_c)
%.s: %.S FORCE
$(obj)/%.s: $(src)/%.S FORCE
$(call if_changed,cpp_s_S)
# Linker scripts, .lds.S -> .lds
quiet_cmd_cpp_lds_S = LDS $@
cmd_cpp_lds_S = $(CPP) -P $(call cpp_flags,$(a_flags)) -D__LINKER__ -MQ $@ -o $@ $<
targets := $(filter-out $(PHONY), $(targets))
# Add intermediate targets:
# When building objects with specific suffix patterns, add intermediate
# targets that the final targets are derived from.
@@ -239,7 +269,18 @@ intermediate_targets = $(foreach sfx, $(2), \
# %.init.o <- %.o
targets += $(call intermediate_targets, .init.o, .o)
-include $(DEPS_INCLUDE)
# Build
# ---------------------------------------------------------------------------
__build: $(targets-for-builtin) $(subdir-y)
@:
# Descending
# ---------------------------------------------------------------------------
PHONY += $(subdir-y)
$(subdir-y):
$(Q)$(MAKE) $(build)=$@ need-builtin=$(if $(filter $@/built_in.o, $(subdir-builtin)),1)
# Read all saved command lines and dependencies for the $(targets) we
# may be building above, using $(if_changed{,_dep}). As an
@@ -250,6 +291,9 @@ existing-targets := $(wildcard $(sort $(targets)))
-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
DEPS := $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).d)
-include $(DEPS_INCLUDE)
# Declare the contents of the PHONY variable as phony. We keep that
# information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY)
+2 -2
View File
@@ -95,12 +95,12 @@ $(TARGET)-syms: $(BASEDIR)/prelink.o $(obj)/xen.lds
$(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
$(MAKE) $(build)=$(@D) $(@D)/.$(@F).0.o
$(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds -N $< \
$(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
$(MAKE) $(build)=$(@D) $(@D)/.$(@F).1.o
$(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds -N $< $(build_id_linker) \
$(@D)/.$(@F).1.o -o $@
$(NM) -pa --format=sysv $(@D)/$(@F) \
-4
View File
@@ -1,4 +0,0 @@
# head.o is built by descending into arch/arm/$(TARGET_SUBARCH), depends on the
# part of $(ALL_OBJS) that will eventually recurse into $(TARGET_SUBARCH)/ and
# build head.o
arch/arm/$(TARGET_SUBARCH)/head.o: arch/arm/built_in.o ;
+2 -2
View File
@@ -1,8 +1,8 @@
########################################
# arm-specific definitions
CFLAGS += -I$(BASEDIR)/include
CFLAGS += -I$(BASEDIR)/arch/$(TARGET_ARCH)/include
CFLAGS += -I$(srctree)/include
CFLAGS += -I$(srctree)/arch/$(TARGET_ARCH)/include
$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
+2 -2
View File
@@ -11,5 +11,5 @@ riscv-march-$(CONFIG_RISCV_ISA_C) := $(riscv-march-y)c
# -mcmodel=medlow would force Xen into the lower half.
CFLAGS += -march=$(riscv-march-y) -mstrict-align -mcmodel=medany
CFLAGS += -I$(BASEDIR)/include
CFLAGS += -I$(BASEDIR)/arch/$(TARGET_ARCH)/include
CFLAGS += -I$(srctree)/include
CFLAGS += -I$(srctree)/arch/$(TARGET_ARCH)/include
+7 -4
View File
@@ -80,6 +80,9 @@ endif
extra-y += asm-macros.i
extra-y += xen.lds
# Allows usercopy.c to include itself
$(obj)/usercopy.o: CFLAGS-y += -iquote .
ifneq ($(CONFIG_HVM),y)
$(obj)/x86_emulate.o: CFLAGS-y += -Wno-unused-label
endif
@@ -129,13 +132,13 @@ $(TARGET)-syms: $(BASEDIR)/prelink.o $(obj)/xen.lds
$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort \
>$(@D)/.$(@F).0.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
$(MAKE) $(build)=$(@D) $(@D)/.$(@F).0.o
$(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds -N $< $(build_id_linker) \
$(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \
>$(@D)/.$(@F).1.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
$(MAKE) $(build)=$(@D) $(@D)/.$(@F).1.o
$(LD) $(XEN_LDFLAGS) -T $(obj)/xen.lds -N $< $(build_id_linker) \
$(@D)/.$(@F).1.o -o $@
$(NM) -pa --format=sysv $(@D)/$(@F) \
@@ -202,14 +205,14 @@ endif
$(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(@D)/.$(@F).$(base).0) >$(@D)/.$(@F).0r.S
$(NM) -pa --format=sysv $(@D)/.$(@F).$(VIRT_BASE).0 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0s.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0r.o $(@D)/.$(@F).0s.o
$(MAKE) $(build)=$(@D) .$(@F).0r.o .$(@F).0s.o
$(foreach base, $(VIRT_BASE) $(ALT_BASE), \
$(LD) $(call EFI_LDFLAGS,$(base)) -T $(obj)/efi.lds -N $< \
$(@D)/.$(@F).0r.o $(@D)/.$(@F).0s.o $(note_file_option) -o $(@D)/.$(@F).$(base).1 &&) :
$(MKRELOC) $(foreach base,$(VIRT_BASE) $(ALT_BASE),$(@D)/.$(@F).$(base).1) >$(@D)/.$(@F).1r.S
$(NM) -pa --format=sysv $(@D)/.$(@F).$(VIRT_BASE).1 \
| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1s.S
$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1r.o $(@D)/.$(@F).1s.o
$(MAKE) $(build)=$(@D) .$(@F).1r.o .$(@F).1s.o
$(LD) $(call EFI_LDFLAGS,$(VIRT_BASE)) -T $(obj)/efi.lds -N $< \
$(@D)/.$(@F).1r.o $(@D)/.$(@F).1s.o $(note_file_option) -o $@
$(NM) -pa --format=sysv $(@D)/$(@F) \
+2 -2
View File
@@ -2,9 +2,9 @@
# x86-specific definitions
ifneq ($(filter -DHAVE_AS_QUOTED_SYM,$(XEN_CFLAGS)),)
object_label_flags = '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$@'
object_label_flags = '-D__OBJECT_LABEL__=$@'
else
object_label_flags = '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CURDIR))/$@))'
object_label_flags = '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$@))'
endif
c_flags += $(object_label_flags) $(CFLAGS_stack_boundary)
a_flags += $(object_label_flags) $(CFLAGS_stack_boundary)
+6 -6
View File
@@ -3,10 +3,10 @@
export XEN_IMG_OFFSET := 0x200000
CFLAGS += -I$(BASEDIR)/include
CFLAGS += -I$(BASEDIR)/arch/$(TARGET_ARCH)/include
CFLAGS += -I$(BASEDIR)/arch/x86/include/asm/mach-generic
CFLAGS += -I$(BASEDIR)/arch/x86/include/asm/mach-default
CFLAGS += -I$(srctree)/include
CFLAGS += -I$(srctree)/arch/$(TARGET_ARCH)/include
CFLAGS += -I$(srctree)/arch/x86/include/asm/mach-generic
CFLAGS += -I$(srctree)/arch/x86/include/asm/mach-default
CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFFSET)
# Prevent floating-point variables from creeping into Xen.
@@ -99,7 +99,7 @@ efi-nr-fixups := $(shell $(OBJDUMP) -p $(efi-check).efi | grep '^[[:blank:]]*rel
ifeq ($(efi-nr-fixups),2)
MKRELOC := :
else
MKRELOC := efi/mkreloc
MKRELOC := arch/x86/efi/mkreloc
# If the linker produced fixups but not precisely two of them, we need to
# disable it doing so. But if it didn't produce any fixups, it also wouldn't
# recognize the option.
@@ -115,6 +115,6 @@ export EFI_LDFLAGS
endif
# Set up the assembler include path properly for older toolchains.
CFLAGS += -Wa,-I$(BASEDIR)/include
CFLAGS += -Wa,-I$(srctree)/include
ALL_OBJS-y := arch/x86/boot/built_in.o arch/x86/efi/built_in.o $(ALL_OBJS-y)
+4 -4
View File
@@ -1,8 +1,8 @@
obj-bin-y += head.o
DEFS_H_DEPS = $(src)/defs.h $(BASEDIR)/include/xen/stdbool.h
DEFS_H_DEPS = $(abs_srctree)/$(src)/defs.h $(abs_srctree)/include/xen/stdbool.h
CMDLINE_DEPS = $(DEFS_H_DEPS) $(src)/video.h \
CMDLINE_DEPS = $(DEFS_H_DEPS) $(abs_srctree)/$(src)/video.h \
$(BASEDIR)/include/xen/kconfig.h \
$(BASEDIR)/include/generated/autoconf.h
@@ -17,7 +17,7 @@ RELOC_DEPS = $(DEFS_H_DEPS) \
$(obj)/head.o: $(obj)/cmdline.S $(obj)/reloc.S
$(obj)/cmdline.S: $(src)/cmdline.c $(CMDLINE_DEPS) $(src)/build32.lds
$(MAKE) -f build32.mk -C $(obj) $(@F) CMDLINE_DEPS="$(CMDLINE_DEPS)"
$(MAKE) -f $(abs_srctree)/$(src)/build32.mk -C $(obj) $(@F) CMDLINE_DEPS="$(CMDLINE_DEPS)"
$(obj)/reloc.S: $(src)/reloc.c $(RELOC_DEPS) $(src)/build32.lds
$(MAKE) -f build32.mk -C $(obj) $(@F) RELOC_DEPS="$(RELOC_DEPS)"
$(MAKE) -f $(abs_srctree)/$(src)/build32.mk -C $(obj) $(@F) RELOC_DEPS="$(RELOC_DEPS)"
+11 -1
View File
@@ -60,6 +60,16 @@ arch/$(TARGET_ARCH)/include/asm/asm-offsets.h: asm-offsets.s
echo ""; \
echo "#endif") <$< >$@
build-dirs := $(patsubst %/built_in.o,%,$(filter %/built_in.o,$(ALL_OBJS) $(ALL_LIBS)))
# The actual objects are generated when descending,
# make sure no implicit rule kicks in
$(sort $(ALL_OBJS) $(ALL_LIBS)): $(build-dirs) ;
PHONY += $(build-dirs)
$(build-dirs): FORCE
$(Q)$(MAKE) $(build)=$@ need-builtin=1
ifeq ($(CONFIG_LTO),y)
# Gather all LTO objects together
prelink_lto.o: $(ALL_OBJS) $(ALL_LIBS)
@@ -76,4 +86,4 @@ endif
targets += prelink.o
$(TARGET): prelink.o FORCE
$(MAKE) -f $(BASEDIR)/Rules.mk -C arch/$(TARGET_ARCH) $@
$(Q)$(MAKE) $(build)=arch/$(TARGET_ARCH) $@
+3 -3
View File
@@ -61,7 +61,7 @@ $(obj)/compat/.xlat/%.h: $(obj)/compat/%.h $(obj)/compat/.xlat/%.lst $(BASEDIR)/
export PYTHON=$(PYTHON); \
while read what name; do \
$(SHELL) $(BASEDIR)/tools/get-fields.sh "$$what" compat_$$name $< || exit $$?; \
done <$(patsubst compat/%,compat/.xlat/%,$(basename $<)).lst >$@.new
done <$(patsubst $(obj)/compat/%,$(obj)/compat/.xlat/%,$(basename $<)).lst >$@.new
mv -f $@.new $@
.PRECIOUS: $(obj)/compat/.xlat/%.lst
@@ -86,8 +86,8 @@ PUBLIC_HEADERS := $(filter-out $(src)/public/arch-% $(src)/public/dom0_ops.h, $(
PUBLIC_C99_HEADERS := $(src)/public/io/9pfs.h $(src)/public/io/pvcalls.h
PUBLIC_ANSI_HEADERS := $(filter-out $(src)/public/%ctl.h $(src)/public/xsm/% $(src)/public/%hvm/save.h $(PUBLIC_C99_HEADERS), $(PUBLIC_HEADERS))
public/io/9pfs.h-prereq := string
public/io/pvcalls.h-prereq := string
$(src)/public/io/9pfs.h-prereq := string
$(src)/public/io/pvcalls.h-prereq := string
$(obj)/headers.chk: $(PUBLIC_ANSI_HEADERS) $(src)/Makefile
for i in $(filter %.h,$^); do \
+6
View File
@@ -61,6 +61,12 @@ cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || e
clang-ifversion = $(shell [ $(CONFIG_CLANG_VERSION)0 $(1) $(2)000 ] && echo $(3) || echo $(4))
###
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
# Usage:
# $(Q)$(MAKE) $(build)=dir
build := -f $(srctree)/Rules.mk obj
# Shorthand for $(MAKE) clean
# Usage:
# $(MAKE) $(clean) dir
+2 -5
View File
@@ -1,13 +1,10 @@
tests all: build
ifneq ($(XEN_TARGET_ARCH),x86_32)
# Xen 32-bit x86 hypervisor no longer supported, so has no test livepatches
subdir-y += livepatch
endif
install build subtree-force-update uninstall: %:
install uninstall: %:
set -e; for s in $(subdir-y); do \
$(MAKE) -f $(BASEDIR)/Rules.mk -C $$s $*; \
$(MAKE) $(build)=$$s $*; \
done
-6
View File
@@ -11,9 +11,6 @@ endif
CODE_ADDR=$(shell nm --defined $(1) | grep $(2) | awk '{print "0x"$$1}')
CODE_SZ=$(shell nm --defined -S $(1) | grep $(2) | awk '{ print "0x"$$2}')
.PHONY: default
build default: livepatch
extra-y += xen_hello_world.livepatch
xen_hello_world-objs := xen_hello_world_func.o xen_hello_world.o note.o xen_note.o modinfo.o
$(obj)/xen_hello_world.o: $(obj)/config.h
@@ -156,9 +153,6 @@ LIVEPATCHES := $(filter %.livepatch,$(extra-y))
LIVEPATCH_DEBUG_DIR ?= $(DEBUG_DIR)/xen-livepatch
.PHONY: livepatch
livepatch: $(LIVEPATCHES)
install: $(addprefix $(obj)/,$(LIVEPATCHES))
$(INSTALL_DIR) $(DESTDIR)$(LIVEPATCH_DEBUG_DIR)
$(INSTALL_DATA) $(addprefix $(obj)/,$(LIVEPATCHES)) $(DESTDIR)$(LIVEPATCH_DEBUG_DIR)
+1 -1
View File
@@ -40,7 +40,7 @@ $(obj)/flask-policy.S: $(BASEDIR)/tools/binfile FORCE
$(call if_changed,binfile,$(obj)/policy.bin xsm_flask_init_policy)
targets += flask-policy.S
FLASK_BUILD_DIR := $(CURDIR)
FLASK_BUILD_DIR := $(abs_objtree)/$(obj)
POLICY_SRC := $(FLASK_BUILD_DIR)/xenpolicy-$(XEN_FULLVERSION)
$(obj)/policy.bin: FORCE
+1 -1
View File
@@ -8,4 +8,4 @@ obj-y += services.o
obj-y += conditional.o
obj-y += mls.o
CFLAGS-y += -I../include
CFLAGS-y += -I$(srctree)/xsm/flask/include
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.