From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39398) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sc9rg-0003yx-NE for qemu-devel@nongnu.org; Wed, 06 Jun 2012 02:37:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sc9rZ-0002DB-5U for qemu-devel@nongnu.org; Wed, 06 Jun 2012 02:37:08 -0400 Received: from mail-pz0-f45.google.com ([209.85.210.45]:45050) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sc9rY-00028S-Qb for qemu-devel@nongnu.org; Wed, 06 Jun 2012 02:37:01 -0400 Received: by mail-pz0-f45.google.com with SMTP id v2so9050407dad.4 for ; Tue, 05 Jun 2012 23:36:59 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Wed, 6 Jun 2012 08:36:15 +0200 Message-Id: <1338964592-22223-9-git-send-email-pbonzini@redhat.com> In-Reply-To: <1338964592-22223-1-git-send-email-pbonzini@redhat.com> References: <1338964592-22223-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH v2 08/25] build: move rules for nesting to Makefile.objs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: anthony@codemonkey.ws 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 --- Makefile.objs | 2 ++ Makefile.target | 47 ++++++++++++++++++++++------------------------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Makefile.objs b/Makefile.objs index 1daa92c..e06db12 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 4714a30..006f1cd 100644 --- a/Makefile.target +++ b/Makefile.target @@ -19,8 +19,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 @@ -105,10 +103,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 ######################################################### @@ -121,10 +115,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 ######################################################### @@ -185,33 +175,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 -- 1.7.10.1