[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v5 1/6] make.rule: fix $(obj) to a real rela
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [RFC PATCH v5 1/6] make.rule: fix $(obj) to a real relative path |
Date: |
Wed, 11 Sep 2013 08:30:25 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
Il 11/09/2013 07:38, Fam Zheng ha scritto:
> 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 <address@hidden>
> ---
> Makefile | 16 +++++++++++++++-
> Makefile.objs | 16 +---------------
> Makefile.target | 16 +++++++++++++---
> configure | 1 +
> rules.mak | 12 +++++++-----
> tests/Makefile | 2 ++
> 6 files changed, 39 insertions(+), 24 deletions(-)
Just two questions...
> diff --git a/Makefile.target b/Makefile.target
> index 9a49852..1d92523 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -143,13 +143,23 @@ 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)
> +
> +# Now restore obj-y
> +obj-y := $(obj-y-save)
>
> all-obj-y = $(obj-y)
> -all-obj-y += $(addprefix ../, $(common-obj-y))
> +all-obj-y += $(addprefix ../, $(common-obj-y) $(block-obj-y))
Why is addprefix still needed?
>
> ifndef CONFIG_HAIKU
> LIBS+=-lm
> diff --git a/configure b/configure
> index e989609..cc3cd4d 100755
> --- a/configure
> +++ b/configure
> @@ -2251,6 +2251,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
> diff --git a/tests/Makefile b/tests/Makefile
> index baba9e9..1b4048c 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -110,6 +110,8 @@ test-qapi-obj-y = tests/test-qapi-visit.o
> tests/test-qapi-types.o
> $(test-obj-y): QEMU_INCLUDES += -Itests
> QEMU_CFLAGS += -I$(SRC_PATH)/tests
>
> +dummy := $(call unnest-vars,..,block-obj-y)
> +
And why is this needed, since tests/Makefile is included from the top
directory?
Paolo
> tests/test-x86-cpuid.o: QEMU_INCLUDES += -I$(SRC_PATH)/target-i386
>
> tests/check-qint$(EXESUF): tests/check-qint.o libqemuutil.a
>