[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH RESEND v3 1/2] Makefile: libfdt: build only the strict necess
From: |
Claudio Fontana |
Subject: |
Re: [PATCH RESEND v3 1/2] Makefile: libfdt: build only the strict necessary |
Date: |
Wed, 29 Apr 2020 13:47:47 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
just a gentle ping on this one, now that 5.0 is out, is proceeding with this ok?
Ciao,
Claudio
On 4/11/20 11:31 AM, Claudio Fontana wrote:
> when building dtc/libfdt, we were previously using dtc/Makefile,
> which tries to build some artifacts that are not needed,
> and can complain on stderr about the absence of tools that
> are not required to build just libfdt.
>
> Instead, build only the strict necessary to get libfdt.a .
>
> Signed-off-by: Claudio Fontana <address@hidden>
> ---
> Makefile | 21 +++++++++++++--------
> configure | 4 ----
> rules.mak | 2 ++
> 3 files changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 84ef881600..7be15eeb7c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -4,6 +4,10 @@ ifneq ($(words $(subst :, ,$(CURDIR))), 1)
> $(error main directory cannot contain spaces nor colons)
> endif
>
> +# some pattern rules in rules.mak are confused by an empty DSOSUF,
> +# and UNCHECKED_GOALS for testing (docker-) can run without prior configure.
> +DSOSUF ?= ".so"
> +
> # Always point to the root of the build tree (needs GNU make).
> BUILD_DIR=$(CURDIR)
>
> @@ -526,15 +530,17 @@ $(SOFTMMU_FUZZ_RULES): $(edk2-decompressed)
> $(TARGET_DIRS_RULES):
> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)"
> TARGET_DIR="$(dir $@)" $(notdir $@),)
>
> -DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)"
> LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt
> -DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
> -DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
> -
> +LIBFDT_objdir = dtc/libfdt
> +-include $(SRC_PATH)/dtc/libfdt/Makefile.libfdt
> +LIBFDT_objects = $(addprefix $(LIBFDT_objdir)/, $(LIBFDT_OBJS))
> +# the name dtc/all is for backward compatibility
> .PHONY: dtc/all
> -dtc/all: .git-submodule-status dtc/libfdt dtc/tests
> - $(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS)
> CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(QEMU_LDFLAGS)"
> ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS)
> libfdt/libfdt.a,)
> +dtc/all: .git-submodule-status $(LIBFDT_objdir)/libfdt.a
> +$(LIBFDT_objdir)/libfdt.a: $(LIBFDT_objects)
> + $(if $(LIBFDT_objects),$(call quiet-command,rm -f $@ && $(AR) rcs $@
> $^,"AR","$(TARGET_DIR)$@"),)
>
> -dtc/%: .git-submodule-status
> +$(LIBFDT_objects): | $(LIBFDT_objdir)
> +$(LIBFDT_objdir): .git-submodule-status
> @mkdir -p $@
>
> # Overriding CFLAGS causes us to lose defines added in the sub-makefile.
> @@ -821,7 +827,6 @@ distclean: clean
> rm -rf $$d || exit 1 ; \
> done
> rm -Rf .sdk
> - if test -f dtc/version_gen.h; then $(MAKE) $(DTC_MAKE_ARGS) clean; fi
>
> KEYMAPS=da en-gb et fr fr-ch is lt no pt-br sv \
> ar de en-us fi fr-be hr it lv nl pl ru th \
> diff --git a/configure b/configure
> index 233c671aaa..cf32bfb75b 100755
> --- a/configure
> +++ b/configure
> @@ -4278,10 +4278,6 @@ EOF
> if test -d "${source_path}/dtc/libfdt" || test -e
> "${source_path}/.git" ; then
> fdt=git
> mkdir -p dtc
> - if [ "$pwd_is_source_path" != "y" ] ; then
> - symlink "$source_path/dtc/Makefile" "dtc/Makefile"
> - symlink "$source_path/dtc/scripts" "dtc/scripts"
> - fi
> fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
> fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt"
> fdt_libs="$fdt_libs"
> diff --git a/rules.mak b/rules.mak
> index 694865b63e..61eb474ba4 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -105,6 +105,8 @@ LINK = $(call quiet-command, $(LINKPROG) $(CFLAGS)
> $(QEMU_LDFLAGS) -o $@ \
>
> DSO_OBJ_CFLAGS := -fPIC -DBUILD_DSO
> module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
> +
> +# Note: DSOSUF must not be empty, or these rules will try to match too much
> %$(DSOSUF): QEMU_LDFLAGS += $(LDFLAGS_SHARED)
> %$(DSOSUF): %.mo
> $(call LINK,$^)
>