mirror of https://gitee.com/openkylin/qemu.git
rules.mak: fix $(obj) to a real relative path
Makefile.target includes rule.mak and unnested common-obj-y, then prefix them with '../', this will ignore object specific QEMU_CFLAGS in subdir Makefile.objs: $(obj)/curl.o: QEMU_CFLAGS += $(CURL_CFLAGS) Because $(obj) here is './block', instead of '../block'. This doesn't hurt compiling because we basically build all .o from top Makefile, before entering Makefile.target, but it will affact arriving per-object libs support. The starting point of $(obj) is passed in as argument of unnest-vars, as well as nested variables, so that different Makefiles can pass in a right value. Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
10f5bff622
commit
ba1183da9a
14
Makefile
14
Makefile
|
@ -122,6 +122,16 @@ defconfig:
|
|||
|
||||
ifneq ($(wildcard config-host.mak),)
|
||||
include $(SRC_PATH)/Makefile.objs
|
||||
endif
|
||||
|
||||
dummy := $(call unnest-vars,, \
|
||||
stub-obj-y \
|
||||
util-obj-y \
|
||||
qga-obj-y \
|
||||
block-obj-y \
|
||||
common-obj-y)
|
||||
|
||||
ifneq ($(wildcard config-host.mak),)
|
||||
include $(SRC_PATH)/tests/Makefile
|
||||
endif
|
||||
ifeq ($(CONFIG_SMARTCARD_NSS),y)
|
||||
|
@ -130,6 +140,10 @@ endif
|
|||
|
||||
all: $(DOCS) $(TOOLS) $(HELPERS-y) recurse-all
|
||||
|
||||
vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
|
||||
|
||||
vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
|
||||
|
||||
config-host.h: config-host.h-timestamp
|
||||
config-host.h-timestamp: config-host.mak
|
||||
qemu-options.def: $(SRC_PATH)/qemu-options.hx
|
||||
|
|
|
@ -41,7 +41,7 @@ libcacard-y += libcacard/vcardt.o
|
|||
# single QEMU executable should support all CPUs and machines.
|
||||
|
||||
ifeq ($(CONFIG_SOFTMMU),y)
|
||||
common-obj-y = $(block-obj-y) blockdev.o blockdev-nbd.o block/
|
||||
common-obj-y = blockdev.o blockdev-nbd.o block/
|
||||
common-obj-y += net/
|
||||
common-obj-y += qdev-monitor.o device-hotplug.o
|
||||
common-obj-$(CONFIG_WIN32) += os-win32.o
|
||||
|
@ -111,18 +111,3 @@ version-lobj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.lo
|
|||
# by libqemuutil.a. These should be moved to a separate .json schema.
|
||||
qga-obj-y = qga/ qapi-types.o qapi-visit.o
|
||||
qga-vss-dll-obj-y = qga/
|
||||
|
||||
vl.o: QEMU_CFLAGS+=$(GPROF_CFLAGS)
|
||||
|
||||
vl.o: QEMU_CFLAGS+=$(SDL_CFLAGS)
|
||||
|
||||
QEMU_CFLAGS+=$(GLIB_CFLAGS)
|
||||
|
||||
nested-vars += \
|
||||
stub-obj-y \
|
||||
util-obj-y \
|
||||
qga-obj-y \
|
||||
qga-vss-dll-obj-y \
|
||||
block-obj-y \
|
||||
common-obj-y
|
||||
dummy := $(call unnest-vars)
|
||||
|
|
|
@ -139,13 +139,22 @@ endif # CONFIG_SOFTMMU
|
|||
# Workaround for http://gcc.gnu.org/PR55489, see configure.
|
||||
%/translate.o: QEMU_CFLAGS += $(TRANSLATE_OPT_CFLAGS)
|
||||
|
||||
nested-vars += obj-y
|
||||
dummy := $(call unnest-vars,,obj-y)
|
||||
|
||||
# This resolves all nested paths, so it must come last
|
||||
# we are making another call to unnest-vars with different vars, protect obj-y,
|
||||
# it can be overriden in subdir Makefile.objs
|
||||
obj-y-save := $(obj-y)
|
||||
|
||||
block-obj-y :=
|
||||
common-obj-y :=
|
||||
include $(SRC_PATH)/Makefile.objs
|
||||
dummy := $(call unnest-vars,..,block-obj-y common-obj-y)
|
||||
|
||||
all-obj-y = $(obj-y)
|
||||
all-obj-y += $(addprefix ../, $(common-obj-y))
|
||||
# Now restore obj-y
|
||||
obj-y := $(obj-y-save)
|
||||
|
||||
all-obj-y = $(obj-y) $(common-obj-y)
|
||||
all-obj-$(CONFIG_SOFTMMU) += $(block-obj-y)
|
||||
|
||||
ifndef CONFIG_HAIKU
|
||||
LIBS+=-lm
|
||||
|
|
|
@ -2360,6 +2360,7 @@ fi
|
|||
if $pkg_config --atleast-version=$glib_req_ver gthread-2.0; then
|
||||
glib_cflags=`$pkg_config --cflags gthread-2.0`
|
||||
glib_libs=`$pkg_config --libs gthread-2.0`
|
||||
CFLAGS="$glib_cflags $CFLAGS"
|
||||
LIBS="$glib_libs $LIBS"
|
||||
libs_qga="$glib_libs $libs_qga"
|
||||
else
|
||||
|
|
14
rules.mak
14
rules.mak
|
@ -146,9 +146,6 @@ clean: clean-timestamp
|
|||
|
||||
# magic to descend into other directories
|
||||
|
||||
obj := .
|
||||
old-nested-dirs :=
|
||||
|
||||
define push-var
|
||||
$(eval save-$2-$1 = $(value $1))
|
||||
$(eval $1 :=)
|
||||
|
@ -162,9 +159,11 @@ endef
|
|||
|
||||
define unnest-dir
|
||||
$(foreach var,$(nested-vars),$(call push-var,$(var),$1/))
|
||||
$(eval obj := $(obj)/$1)
|
||||
$(eval obj-parent-$1 := $(obj))
|
||||
$(eval obj := $(if $(obj),$(obj)/$1,$1))
|
||||
$(eval include $(SRC_PATH)/$1/Makefile.objs)
|
||||
$(eval obj := $(patsubst %/$1,%,$(obj)))
|
||||
$(eval obj := $(obj-parent-$1))
|
||||
$(eval obj-parent-$1 := )
|
||||
$(foreach var,$(nested-vars),$(call pop-var,$(var),$1/))
|
||||
endef
|
||||
|
||||
|
@ -179,7 +178,12 @@ $(if $(nested-dirs),
|
|||
endef
|
||||
|
||||
define unnest-vars
|
||||
$(eval obj := $1)
|
||||
$(eval nested-vars := $2)
|
||||
$(eval old-nested-dirs := )
|
||||
$(call unnest-vars-1)
|
||||
$(if $1,$(foreach v,$(nested-vars),$(eval \
|
||||
$v := $(addprefix $1/,$($v)))))
|
||||
$(foreach var,$(nested-vars),$(eval $(var) := $(filter-out %/, $($(var)))))
|
||||
$(shell mkdir -p $(sort $(foreach var,$(nested-vars),$(dir $($(var))))))
|
||||
$(foreach var,$(nested-vars), $(eval \
|
||||
|
|
Loading…
Reference in New Issue