Merge branch '2023-07-07-assorted-build-improvements' into next

- Correct a few dependencies in Kconfig and better handle some generated
  files so that they are properly cleaned later.
This commit is contained in:
Tom Rini 2023-07-08 11:28:39 -04:00
commit fa1e124ee7
14 changed files with 153 additions and 40 deletions

View File

@ -2152,7 +2152,7 @@ CHANGELOG:
# Directories & files removed with 'make clean' # Directories & files removed with 'make clean'
CLEAN_DIRS += $(MODVERDIR) \ CLEAN_DIRS += $(MODVERDIR) \
$(foreach d, spl tpl, $(patsubst %,$d/%, \ $(foreach d, spl tpl vpl, $(patsubst %,$d/%, \
$(filter-out include, $(shell ls -1 $d 2>/dev/null)))) $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
@ -2167,7 +2167,7 @@ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
idbloader-spi.img lib/efi_loader/helloworld_efi.S idbloader-spi.img lib/efi_loader/helloworld_efi.S
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include/generated spl tpl \ MRPROPER_DIRS += include/config include/generated spl tpl vpl \
.tmp_objdiff doc/output include/asm .tmp_objdiff doc/output include/asm
# Remove include/asm symlink created by U-Boot before v2014.01 # Remove include/asm symlink created by U-Boot before v2014.01

View File

@ -18,4 +18,4 @@ PHONY += dtbs
dtbs: $(addprefix $(obj)/, $(dtb-y)) dtbs: $(addprefix $(obj)/, $(dtb-y))
@: @:
clean-files := *.dtb clean-files := *.dtb *.dtbo

View File

@ -1228,6 +1228,7 @@ config LOADS_ECHO
config CMD_SAVES config CMD_SAVES
bool "saves - Save a file over serial in S-Record format" bool "saves - Save a file over serial in S-Record format"
depends on CMD_LOADS
help help
Provides a way to save a binary file using the Motorola S-Record Provides a way to save a binary file using the Motorola S-Record
format over the serial line. format over the serial line.

View File

@ -256,6 +256,7 @@ config SYS_CONSOLE_OVERWRITE_ROUTINE
config SYS_CONSOLE_ENV_OVERWRITE config SYS_CONSOLE_ENV_OVERWRITE
bool "Update environment variables during console init" bool "Update environment variables during console init"
depends on SYS_CONSOLE_IS_IN_ENV
help help
The console environment variables (stdout, stdin, stderr) can be The console environment variables (stdout, stdin, stderr) can be
used to determine the correct console devices on start-up. This used to determine the correct console devices on start-up. This

View File

@ -43,6 +43,7 @@ config TPL_FRAMEWORK
config TPL_BANNER_PRINT config TPL_BANNER_PRINT
bool "Enable output of the TPL banner 'U-Boot TPL ...'" bool "Enable output of the TPL banner 'U-Boot TPL ...'"
depends on DEBUG_UART && TPL_SERIAL
default y default y
help help
If this option is enabled, TPL will print the banner with version If this option is enabled, TPL will print the banner with version

View File

@ -14,6 +14,7 @@ CONFIG_ENV_SECT_SIZE=0x10000
# CONFIG_GE_RTC is not set # CONFIG_GE_RTC is not set
CONFIG_MX6QDL=y CONFIG_MX6QDL=y
CONFIG_TARGET_GE_B1X5V2=y CONFIG_TARGET_GE_B1X5V2=y
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="imx6dl-b1x5v2" CONFIG_DEFAULT_DEVICE_TREE="imx6dl-b1x5v2"
CONFIG_SPL_TEXT_BASE=0x00908000 CONFIG_SPL_TEXT_BASE=0x00908000
CONFIG_SPL_SERIAL=y CONFIG_SPL_SERIAL=y

View File

@ -4,6 +4,7 @@ CONFIG_SYS_MALLOC_LEN=0xc0000
CONFIG_SYS_MALLOC_F_LEN=0x400 CONFIG_SYS_MALLOC_F_LEN=0x400
CONFIG_NR_DRAM_BANKS=1 CONFIG_NR_DRAM_BANKS=1
CONFIG_ENV_SIZE=0x20000 CONFIG_ENV_SIZE=0x20000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="microblaze-generic" CONFIG_DEFAULT_DEVICE_TREE="microblaze-generic"
CONFIG_SYS_PROMPT="U-Boot-mONStR> " CONFIG_SYS_PROMPT="U-Boot-mONStR> "
CONFIG_SPL_SERIAL=y CONFIG_SPL_SERIAL=y

View File

@ -1,6 +1,7 @@
CONFIG_PPC=y CONFIG_PPC=y
CONFIG_TEXT_BASE=0xf00000 CONFIG_TEXT_BASE=0xf00000
CONFIG_ENV_SIZE=0x2000 CONFIG_ENV_SIZE=0x2000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="qemu-ppce500" CONFIG_DEFAULT_DEVICE_TREE="qemu-ppce500"
CONFIG_SYS_MONITOR_LEN=524288 CONFIG_SYS_MONITOR_LEN=524288
CONFIG_SYS_CLK_FREQ=33000000 CONFIG_SYS_CLK_FREQ=33000000

View File

@ -61,14 +61,14 @@ endif
config POWEROFF_GPIO config POWEROFF_GPIO
bool "Enable support for GPIO poweroff driver" bool "Enable support for GPIO poweroff driver"
select DM_GPIO depends on DM_GPIO
help help
Support for system poweroff using a GPIO pin. This can be used Support for system poweroff using a GPIO pin. This can be used
for systems having a single GPIO to trigger a system poweroff. for systems having a single GPIO to trigger a system poweroff.
config SYSRESET_GPIO config SYSRESET_GPIO
bool "Enable support for GPIO reset driver" bool "Enable support for GPIO reset driver"
select DM_GPIO depends on DM_GPIO
help help
Reset support via GPIO pin connected reset logic. This is used for Reset support via GPIO pin connected reset logic. This is used for
example on Microblaze where reset logic can be controlled via GPIO example on Microblaze where reset logic can be controlled via GPIO

View File

@ -63,4 +63,6 @@ spl_dtbs: $(obj)/dt-$(SPL_NAME).dtb
clean-files := dt.dtb.S clean-files := dt.dtb.S
# Let clean descend into dts directories # Let clean descend into dts directories
subdir- += ../arch/arm/dts ../arch/microblaze/dts ../arch/mips/dts ../arch/sandbox/dts ../arch/x86/dts ../arch/powerpc/dts ../arch/riscv/dts subdir- += ../arch/arc/dts ../arch/arm/dts ../arch/m68k/dts ../arch/microblaze/dts \
../arch/mips/dts ../arch/nios2/dts ../arch/powerpc/dts ../arch/riscv/dts \
../arch/sandbox/dts ../arch/sh/dts ../arch/x86/dts ../arch/xtensa/dts

View File

@ -0,0 +1,105 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2023 Tobias Deiminger <tdmg@linutronix.de>
"""Test for unexpected leftovers after make clean"""
import itertools
import os
import pathlib
import shutil
import sys
import pytest
# pylint: disable=redefined-outer-name
@pytest.fixture
def tmp_copy_of_builddir(u_boot_config, tmp_path):
"""For each test, provide a temporary copy of the initial build directory."""
shutil.copytree(
u_boot_config.build_dir,
tmp_path,
symlinks=True,
dirs_exist_ok=True,
)
return tmp_path
@pytest.fixture(scope="module")
def run_make(u_boot_log):
"""Provide function to run and log make without connecting to u-boot console."""
runner = u_boot_log.get_runner("make", sys.stdout)
def _run_make(build_dir, target):
cmd = ["make", f"O={build_dir}", target]
runner.run(cmd)
yield _run_make
runner.close()
@pytest.fixture(scope="module")
def most_generated_files():
"""Path.glob style patterns to describe what should be removed by 'make clean'."""
return (
"**/*.c",
"**/*.dtb",
"**/*.dtbo",
"**/*.o",
"**/*.py",
"**/*.pyc",
"**/*.so",
"**/*.srec",
"u-boot*",
"[svt]pl/u-boot*",
)
@pytest.fixture(scope="module")
def all_generated_files(most_generated_files):
"""Path.glob style patterns to describe what should be removed by 'make mrproper'."""
return most_generated_files + (".config", "**/*.h")
def find_files(search_dir, include_patterns, exclude_dirs=None):
"""Find files matching include_patterns, unless it's in one of exclude_dirs.
include_patterns -- Path.glob style pattern relative to search dir
exclude_dir -- directories to exclude, expected relative to search dir
"""
matches = []
exclude_dirs = [] if exclude_dirs is None else exclude_dirs
for abs_path in itertools.chain.from_iterable(
pathlib.Path(search_dir).glob(pattern) for pattern in include_patterns
):
if abs_path.is_dir():
continue
rel_path = pathlib.Path(os.path.relpath(abs_path, search_dir))
if not any(
rel_path.is_relative_to(exclude_dir) for exclude_dir in exclude_dirs
):
matches.append(rel_path)
return matches
def test_clean(run_make, tmp_copy_of_builddir, most_generated_files):
"""Test if 'make clean' deletes most generated files."""
run_make(tmp_copy_of_builddir, "clean")
leftovers = find_files(
tmp_copy_of_builddir,
most_generated_files,
exclude_dirs=["scripts", "test/overlay"],
)
assert not leftovers, f"leftovers: {', '.join(map(str, leftovers))}"
def test_mrproper(run_make, tmp_copy_of_builddir, all_generated_files):
"""Test if 'make mrproper' deletes current configuration and all generated files."""
run_make(tmp_copy_of_builddir, "mrproper")
leftovers = find_files(
tmp_copy_of_builddir,
all_generated_files,
exclude_dirs=["test/overlay"],
)
assert not leftovers, f"leftovers: {', '.join(map(str, leftovers))}"

1
tools/.gitignore vendored
View File

@ -34,6 +34,7 @@
/relocate-rela /relocate-rela
/spl_size_limit /spl_size_limit
/sunxi-spl-image-builder /sunxi-spl-image-builder
/tools/generated/**/*.c
/update_octeon_header /update_octeon_header
/version.h /version.h
/xway-swap-bytes /xway-swap-bytes

View File

@ -48,20 +48,20 @@ hostprogs-$(CONFIG_VIDEO_LOGO) += bmp_logo
HOSTCFLAGS_bmp_logo.o := -pedantic HOSTCFLAGS_bmp_logo.o := -pedantic
hostprogs-$(BUILD_ENVCRC) += envcrc hostprogs-$(BUILD_ENVCRC) += envcrc
envcrc-objs := envcrc.o lib/crc32.o env/embedded.o lib/sha1.o envcrc-objs := envcrc.o generated/lib/crc32.o generated/env/embedded.o generated/lib/sha1.o
hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr hostprogs-$(CONFIG_CMD_NET) += gen_eth_addr
HOSTCFLAGS_gen_eth_addr.o := -pedantic HOSTCFLAGS_gen_eth_addr.o := -pedantic
hostprogs-$(CONFIG_CMD_NET) += gen_ethaddr_crc hostprogs-$(CONFIG_CMD_NET) += gen_ethaddr_crc
gen_ethaddr_crc-objs := gen_ethaddr_crc.o lib/crc8.o gen_ethaddr_crc-objs := gen_ethaddr_crc.o generated/lib/crc8.o
HOSTCFLAGS_gen_ethaddr_crc.o := -pedantic HOSTCFLAGS_gen_ethaddr_crc.o := -pedantic
hostprogs-$(CONFIG_CMD_LOADS) += img2srec hostprogs-$(CONFIG_CMD_LOADS) += img2srec
HOSTCFLAGS_img2srec.o := -pedantic HOSTCFLAGS_img2srec.o := -pedantic
hostprogs-y += mkenvimage hostprogs-y += mkenvimage
mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o mkenvimage-objs := mkenvimage.o os_support.o generated/lib/crc32.o
hostprogs-y += dumpimage mkimage hostprogs-y += dumpimage mkimage
hostprogs-$(CONFIG_TOOLS_LIBCRYPTO) += fit_info fit_check_sign hostprogs-$(CONFIG_TOOLS_LIBCRYPTO) += fit_info fit_check_sign
@ -71,30 +71,30 @@ ifneq ($(CONFIG_CMD_BOOTEFI_SELFTEST)$(CONFIG_FWU_MDATA_GPT_BLK),)
hostprogs-y += file2include hostprogs-y += file2include
endif endif
FIT_OBJS-y := fit_common.o fit_image.o image-host.o boot/image-fit.o FIT_OBJS-y := fit_common.o fit_image.o image-host.o generated/boot/image-fit.o
FIT_SIG_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := image-sig-host.o boot/image-fit-sig.o FIT_SIG_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := image-sig-host.o generated/boot/image-fit-sig.o
FIT_CIPHER_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := boot/image-cipher.o FIT_CIPHER_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := generated/boot/image-cipher.o
# The following files are synced with upstream DTC. # The following files are synced with upstream DTC.
# Use synced versions from scripts/dtc/libfdt/. # Use synced versions from scripts/dtc/libfdt/.
LIBFDT_OBJS := $(addprefix libfdt/, fdt.o fdt_ro.o fdt_wip.o fdt_sw.o fdt_rw.o \ LIBFDT_OBJS := $(addprefix libfdt/, fdt.o fdt_ro.o fdt_wip.o fdt_sw.o fdt_rw.o \
fdt_strerror.o fdt_empty_tree.o fdt_addresses.o fdt_overlay.o) fdt_strerror.o fdt_empty_tree.o fdt_addresses.o fdt_overlay.o)
RSA_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix lib/rsa/, \ RSA_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix generated/lib/rsa/, \
rsa-sign.o rsa-verify.o \ rsa-sign.o rsa-verify.o \
rsa-mod-exp.o) rsa-mod-exp.o)
ECDSA_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix lib/ecdsa/, ecdsa-libcrypto.o) ECDSA_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix generated/lib/ecdsa/, ecdsa-libcrypto.o)
AES_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix lib/aes/, \ AES_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := $(addprefix generated/lib/aes/, \
aes-encrypt.o aes-decrypt.o) aes-encrypt.o aes-decrypt.o)
# Cryptographic helpers and image types that depend on openssl/libcrypto # Cryptographic helpers and image types that depend on openssl/libcrypto
LIBCRYPTO_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := \ LIBCRYPTO_OBJS-$(CONFIG_TOOLS_LIBCRYPTO) := \
lib/fdt-libcrypto.o \ generated/lib/fdt-libcrypto.o \
sunxi_toc0.o sunxi_toc0.o
ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o ROCKCHIP_OBS = generated/lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o
# common objs for dumpimage and mkimage # common objs for dumpimage and mkimage
dumpimage-mkimage-objs := aisimage.o \ dumpimage-mkimage-objs := aisimage.o \
@ -102,20 +102,20 @@ dumpimage-mkimage-objs := aisimage.o \
$(FIT_OBJS-y) \ $(FIT_OBJS-y) \
$(FIT_SIG_OBJS-y) \ $(FIT_SIG_OBJS-y) \
$(FIT_CIPHER_OBJS-y) \ $(FIT_CIPHER_OBJS-y) \
boot/fdt_region.o \ generated/boot/fdt_region.o \
boot/bootm.o \ generated/boot/bootm.o \
lib/crc32.o \ generated/lib/crc32.o \
default_image.o \ default_image.o \
lib/fdtdec_common.o \ generated/lib/fdtdec_common.o \
lib/fdtdec.o \ generated/lib/fdtdec.o \
boot/image.o \ generated/boot/image.o \
boot/image-host.o \ generated/boot/image-host.o \
imagetool.o \ imagetool.o \
imximage.o \ imximage.o \
imx8image.o \ imx8image.o \
imx8mimage.o \ imx8mimage.o \
kwbimage.o \ kwbimage.o \
lib/md5.o \ generated/lib/md5.o \
lpc32xximage.o \ lpc32xximage.o \
mxsimage.o \ mxsimage.o \
omapimage.o \ omapimage.o \
@ -128,12 +128,12 @@ dumpimage-mkimage-objs := aisimage.o \
$(ROCKCHIP_OBS) \ $(ROCKCHIP_OBS) \
socfpgaimage.o \ socfpgaimage.o \
sunxi_egon.o \ sunxi_egon.o \
lib/crc16-ccitt.o \ generated/lib/crc16-ccitt.o \
lib/hash-checksum.o \ generated/lib/hash-checksum.o \
lib/sha1.o \ generated/lib/sha1.o \
lib/sha256.o \ generated/lib/sha256.o \
lib/sha512.o \ generated/lib/sha512.o \
common/hash.o \ generated/common/hash.o \
ublimage.o \ ublimage.o \
zynqimage.o \ zynqimage.o \
zynqmpimage.o \ zynqmpimage.o \
@ -213,7 +213,7 @@ HOSTCFLAGS_mxsboot.o := -pedantic
hostprogs-$(CONFIG_ARCH_SUNXI) += mksunxiboot hostprogs-$(CONFIG_ARCH_SUNXI) += mksunxiboot
hostprogs-$(CONFIG_ARCH_SUNXI) += sunxi-spl-image-builder hostprogs-$(CONFIG_ARCH_SUNXI) += sunxi-spl-image-builder
sunxi-spl-image-builder-objs := sunxi-spl-image-builder.o lib/bch.o sunxi-spl-image-builder-objs := sunxi-spl-image-builder.o generated/lib/bch.o
hostprogs-$(CONFIG_NETCONSOLE) += ncb hostprogs-$(CONFIG_NETCONSOLE) += ncb
@ -221,16 +221,16 @@ hostprogs-$(CONFIG_ARCH_KIRKWOOD) += kwboot
hostprogs-$(CONFIG_ARCH_MVEBU) += kwboot hostprogs-$(CONFIG_ARCH_MVEBU) += kwboot
hostprogs-y += proftool hostprogs-y += proftool
proftool-objs = proftool.o lib/abuf.o proftool-objs = proftool.o generated/lib/abuf.o
hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela
hostprogs-$(CONFIG_RISCV) += prelink-riscv hostprogs-$(CONFIG_RISCV) += prelink-riscv
hostprogs-$(CONFIG_ARCH_OCTEON) += update_octeon_header hostprogs-$(CONFIG_ARCH_OCTEON) += update_octeon_header
update_octeon_header-objs := update_octeon_header.o lib/crc32.o update_octeon_header-objs := update_octeon_header.o generated/lib/crc32.o
hostprogs-y += fdtgrep hostprogs-y += fdtgrep
fdtgrep-objs += $(LIBFDT_OBJS) boot/fdt_region.o fdtgrep.o fdtgrep-objs += $(LIBFDT_OBJS) generated/boot/fdt_region.o fdtgrep.o
ifneq ($(TOOLS_ONLY),y) ifneq ($(TOOLS_ONLY),y)
hostprogs-y += spl_size_limit hostprogs-y += spl_size_limit
@ -251,7 +251,7 @@ HOSTLDLIBS_mkeficapsule += \
$(shell pkg-config --libs uuid 2> /dev/null || echo "-luuid") $(shell pkg-config --libs uuid 2> /dev/null || echo "-luuid")
hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule hostprogs-$(CONFIG_TOOLS_MKEFICAPSULE) += mkeficapsule
mkfwumdata-objs := mkfwumdata.o lib/crc32.o mkfwumdata-objs := mkfwumdata.o generated/lib/crc32.o
HOSTLDLIBS_mkfwumdata += -luuid HOSTLDLIBS_mkfwumdata += -luuid
hostprogs-$(CONFIG_TOOLS_MKFWUMDATA) += mkfwumdata hostprogs-$(CONFIG_TOOLS_MKFWUMDATA) += mkfwumdata
@ -266,12 +266,12 @@ HOSTCFLAGS_sha256.o := -pedantic
HOSTCFLAGS_sha512.o := -pedantic -DCONFIG_SHA512 -DCONFIG_SHA384 HOSTCFLAGS_sha512.o := -pedantic -DCONFIG_SHA512 -DCONFIG_SHA384
quiet_cmd_wrap = WRAP $@ quiet_cmd_wrap = WRAP $@
cmd_wrap = echo "\#include <../$(patsubst $(obj)/%,%,$@)>" >$@ cmd_wrap = echo "\#include <../$(patsubst $(obj)/generated/%,%,$@)>" >$@
$(obj)/boot/%.c $(obj)/common/%.c $(obj)/env/%.c $(obj)/lib/%.c: $(obj)/generated/%.c:
$(call cmd,wrap) $(call cmd,wrap)
clean-dirs := lib common clean-dirs := generated
always := $(hostprogs-y) always := $(hostprogs-y)

View File

@ -1,3 +1,2 @@
embedded.c
fw_printenv fw_printenv
fw_printenv_unstripped fw_printenv_unstripped