diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-05-22 13:41:27 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-06-07 09:21:12 +0200 |
commit | 99100dc3b55126fc60fbbfb854d5aab25ab5dafd (patch) | |
tree | 2f2baba95dc6ccb0e419ea8ce403dc6a6d06f9cc | |
parent | fbe37ef3e18814f2b98f115a1c855fea7fe71d74 (diff) |
build: move rules for nesting to Makefile.objs
At this point we will start adding nesting behavior to other files
than Makefile.target. Because Makefile.objs is included by
Makefile.target, it is simpler to move the processing of
subdirectories there.
To enable this, only add per-target files to obj-y. Use a separate
variable for the linker dependencies, all-obj-y. This variable includes
obj-y and also all objects that are taken from other directories.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | Makefile.objs | 2 | ||||
-rw-r--r-- | Makefile.target | 47 |
2 files changed, 24 insertions, 25 deletions
diff --git a/Makefile.objs b/Makefile.objs index 1daa92c96b..e06db126c2 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -468,3 +468,5 @@ vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS) QEMU_CFLAGS+=$(GLIB_CFLAGS) +nested-vars += # ... +dummy := $(call unnest-vars) diff --git a/Makefile.target b/Makefile.target index 655908e173..f1d5fe2566 100644 --- a/Makefile.target +++ b/Makefile.target @@ -21,8 +21,6 @@ QEMU_CFLAGS += -I../linux-headers endif QEMU_CFLAGS += -I.. -I$(TARGET_PATH) -DNEED_CPU_H -include $(SRC_PATH)/Makefile.objs - QEMU_CFLAGS+=-I$(SRC_PATH)/include ifdef CONFIG_USER_ONLY @@ -107,10 +105,6 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) -I$(SRC_PATH)/linux-user obj-y += linux-user/ obj-y += gdbstub.o thunk.o user-exec.o $(oslib-obj-y) -obj-y += $(addprefix ../, $(universal-obj-y)) -obj-y += $(addprefix ../libuser/, $(user-obj-y)) -obj-y += $(addprefix ../libdis-user/, $(libdis-y)) - endif #CONFIG_LINUX_USER ######################################################### @@ -123,10 +117,6 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/bsd-user -I$(SRC_PATH)/bsd-user/$(TARGET_ARCH) obj-y += bsd-user/ obj-y += gdbstub.o user-exec.o -obj-y += $(addprefix ../, $(universal-obj-y)) -obj-y += $(addprefix ../libuser/, $(user-obj-y)) -obj-y += $(addprefix ../libdis-user/, $(libdis-y)) - endif #CONFIG_BSD_USER ######################################################### @@ -191,33 +181,40 @@ main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) GENERATED_HEADERS += hmp-commands.h qmp-commands-old.h -obj-y += $(addprefix ../, $(universal-obj-y)) -obj-y += $(addprefix ../, $(common-obj-y)) -obj-y += $(addprefix ../libdis/, $(libdis-y)) -obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) -obj-y += $(addprefix ../, $(trace-obj-y)) - endif # CONFIG_SOFTMMU -ifndef CONFIG_LINUX_USER -ifndef CONFIG_BSD_USER +nested-vars += obj-y + +# This resolves all nested paths, so it must come last +include $(SRC_PATH)/Makefile.objs + +all-obj-y = $(obj-y) +all-obj-y += $(addprefix ../, $(universal-obj-y)) + +ifdef CONFIG_SOFTMMU + +all-obj-y += $(addprefix ../, $(common-obj-y)) +all-obj-y += $(addprefix ../libdis/, $(libdis-y)) +all-obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) +all-obj-y += $(addprefix ../, $(trace-obj-y)) + # libcacard needs qemu-thread support, and besides is only needed by devices # so not requires with linux-user / bsd-user targets -obj-$(CONFIG_SMARTCARD_NSS) += $(addprefix ../libcacard/, $(libcacard-y)) -endif # CONFIG_BSD_USER -endif # CONFIG_LINUX_USER +all-obj-$(CONFIG_SMARTCARD_NSS) += $(addprefix ../libcacard/, $(libcacard-y)) -nested-vars = obj-y -dummy := $(call unnest-vars) +else +all-obj-y += $(addprefix ../libuser/, $(user-obj-y)) +all-obj-y += $(addprefix ../libdis-user/, $(libdis-y)) +endif #CONFIG_LINUX_USER ifdef QEMU_PROGW # The linker builds a windows executable. Make also a console executable. -$(QEMU_PROGW): $(obj-y) +$(QEMU_PROGW): $(all-obj-y) $(call LINK,$^) $(QEMU_PROG): $(QEMU_PROGW) $(call quiet-command,$(OBJCOPY) --subsystem console $(QEMU_PROGW) $(QEMU_PROG)," GEN $(TARGET_DIR)$(QEMU_PROG)") else -$(QEMU_PROG): $(obj-y) +$(QEMU_PROG): $(all-obj-y) $(call LINK,$^) endif |