mirror of
https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9.git
synced 2026-09-09 00:08:12 +08:00
JIRA: https://issues.redhat.com/browse/RHEL-107194 commit b1992c3772e69a6fd0e3fc81cd4d2820c8b6eca0 Author: Masahiro Yamada <masahiroy@kernel.org> Date: Sat Apr 27 23:55:02 2024 +0900 kbuild: use $(src) instead of $(srctree)/$(src) for source directory Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for checked-in source files. It is merely a convention without any functional difference. In fact, $(obj) and $(src) are exactly the same, as defined in scripts/Makefile.build: src := $(obj) When the kernel is built in a separate output directory, $(src) does not accurately reflect the source directory location. While Kbuild resolves this discrepancy by specifying VPATH=$(srctree) to search for source files, it does not cover all cases. For example, when adding a header search path for local headers, -I$(srctree)/$(src) is typically passed to the compiler. This introduces inconsistency between upstream and downstream Makefiles because $(src) is used instead of $(srctree)/$(src) for the latter. To address this inconsistency, this commit changes the semantics of $(src) so that it always points to the directory in the source tree. Going forward, the variables used in Makefiles will have the following meanings: $(obj) - directory in the object tree $(src) - directory in the source tree (changed by this commit) $(objtree) - the top of the kernel object tree $(srctree) - the top of the kernel source tree Consequently, $(srctree)/$(src) in upstream Makefiles need to be replaced with $(src). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> Conflicts: There is a extensive list of fixes/conflicts due the amount of files originally changed by this commit, plus the difference of rhel-9 code against upstream. All conflicts/differences are listed below: - Context difference at Documentation/Makefile since RHEL 9 does not have the change "docs: allow to pass extra DOCS_CSS themes via make" and later changes. - Conflict at Documentation/devicetree/bindings/Makefile, patch find_cmd instead of find_all_cmd since RHEL-9 doesn't have "dt-bindings: Consider DT_SCHEMA_FILES when finding all json-schema", "dt-bindings: kbuild: Split targets out to separate rules" and later changes. - Conflict at Documentation/kbuild/makefiles.rst due different identation since RHEL-9 doesn't have the change "docs/kbuild/makefiles: clean up indentation and whitespace" - Patched additional $(srctree)/$(src) references at: * arch/arm/mach-davinci/Makefile * arch/arm/mach-omap2/Makefile * arch/arm/mach-spear/Makefile * arch/arm/plat-pxa/Makefile * arch/arm/plat-versatile/Makefile * arch/ia64/kernel/Makefile * arch/nds32/boot/Makefile * arch/nds32/kernel/vdso/Makefile * drivers/net/ethernet/hisilicon/hns3/hns3pf/Makefile * drivers/net/ethernet/hisilicon/hns3/hns3vf/Makefile * drivers/staging/rtl8188eu/Makefile * drivers/staging/unisys/visorhba/Makefile * drivers/staging/unisys/visornic/Makefile * scripts/gcc-plugins/Makefile Since RHEL-9 does not have later upstream changes that dropped/made those references uneeded. - Conflict at arch/arm/mach-s3c/Makefile since RHEL-9 doesn't have "ARM: s3c: remove s3c24xx specific hacks" and related changes. Also, extra locations needed patching because of not having the changes "ARM: s3c: remove all s3c24xx support" and "ARM: s3c: fix include path". Due lacking the last change also arch/arm/mach-s3c/Makefile.s3c64xx needs additional two places patched as well. - Conflict at arch/arm/plat-orion/Makefile since RHEL-9 doesn't have the commit "ARM: orion: fix include path" and its previous related changes. - Dropped changes for arch/loongarch since it doesn't exist on rhel-9 - Dropped changes to arch/parisc/kernel/{vdso32,vdso64}/Makefile since RHEL 9 does not have the change "parisc: Add vDSO support" and later updates to it. - Dropped change to arch/riscv/kernel/compat_vdso/Makefile since RHEL 9 does not have the change "riscv: compat: vdso: Add COMPAT_VDSO base code implementation" - Dropped change to arch/riscv/kvm/Makefile since there is no KVM support/commits in RHEL 9 for riscv. - Apply change for arch/riscv/kernel/vdso/Makefile in a different place since RHEL-9 does not have the change "riscv: explicitly use symbol offsets for VDSO" which changed the location of the $(srctree)/$(src) reference - Dropped change to certs/Makefile related to check-blacklist-hashes.awk since that script was only added with commit "certs: Check that builtin blacklist hashes are valid" which is not backported/available in RHEL 9 code right now. - Dropped change to drivers/md/dm-vdo/Makefile since dm-vdo was never backported to RHEL-9 main. - Dropped change to drivers/net/ethernet/fungible/funeth/Makefile since fungible ethernet driver/devices code is not available/backported to RHEL-9. - Fixed conflict at drivers/net/ethernet/hisilicon/hns3/Makefile since RHEL-9 does not have the change "net: hns3: refactor hns3 makefile to support hns3_common module" - Fixed conflict at drivers/net/wireless/intel/iwlwifi/mvm/Makefile due already backported commit "wifi: iwlwifi: mvm: implement link grading" - Dropped change to init/Makefile since we are not backporting "kbuild: build init/built-in.a just once" that introduced the section patched. - Dropped change to rust/Makefile since there is no rust support backported to RHEL-9. - Fixed conflict at scripts/dtc/Makefile since RHEL-9 does not have the change "dt-bindings: kbuild: Use DTB files for validation" - Dropped change to security/tomoyo/Makefile since it's not needed, it's just reverting the change "tomoyo: fix broken dependency on *.conf.default" which was never applied to RHEL-9. However, we also bring a different change/patch location since RHEL-9 does not have the change "tomoyo: Omit use of bin2c". - Dropped change to usr/include/Makefile since "kbuild: move headers_check.pl to usr/include/" is not being backported to RHEL-9. - Misc/minor context differences at other places. Signed-off-by: Herton R. Krzesinski <herton@redhat.com>
85 lines
2.7 KiB
Makefile
85 lines
2.7 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# kbuild file for usr/ - including initramfs image
|
|
#
|
|
|
|
compress-y := shipped
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_GZIP) := gzip
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_BZIP2) := bzip2
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZMA) := lzma
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_XZ) := xzmisc
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZO) := lzo
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_LZ4) := lz4
|
|
compress-$(CONFIG_INITRAMFS_COMPRESSION_ZSTD) := zstd
|
|
|
|
obj-$(CONFIG_BLK_DEV_INITRD) := initramfs_data.o
|
|
|
|
$(obj)/initramfs_data.o: $(obj)/initramfs_inc_data
|
|
|
|
ramfs-input := $(strip $(shell echo $(CONFIG_INITRAMFS_SOURCE)))
|
|
cpio-data :=
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE is empty, generate a small initramfs with the
|
|
# default contents.
|
|
ifeq ($(ramfs-input),)
|
|
ramfs-input := $(src)/default_cpio_list
|
|
endif
|
|
|
|
ifeq ($(words $(ramfs-input)),1)
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio, use it directly as an initramfs.
|
|
ifneq ($(filter %.cpio,$(ramfs-input)),)
|
|
cpio-data := $(ramfs-input)
|
|
endif
|
|
|
|
# If CONFIG_INITRAMFS_SOURCE specifies a single file, and it is suffixed with
|
|
# .cpio.*, use it directly as an initramfs, and avoid double compression.
|
|
ifeq ($(words $(subst .cpio.,$(space),$(ramfs-input))),2)
|
|
cpio-data := $(ramfs-input)
|
|
compress-y := shipped
|
|
endif
|
|
|
|
endif
|
|
|
|
# For other cases, generate the initramfs cpio archive based on the contents
|
|
# specified by CONFIG_INITRAMFS_SOURCE.
|
|
ifeq ($(cpio-data),)
|
|
|
|
cpio-data := $(obj)/initramfs_data.cpio
|
|
|
|
hostprogs := gen_init_cpio
|
|
|
|
# .initramfs_data.cpio.d is used to identify all files included
|
|
# in initramfs and to detect if any files are added/removed.
|
|
# Removed files are identified by directory timestamp being updated
|
|
# The dependency list is generated by gen_initramfs.sh -l
|
|
-include $(obj)/.initramfs_data.cpio.d
|
|
|
|
# do not try to update files included in initramfs
|
|
$(deps_initramfs): ;
|
|
|
|
quiet_cmd_initfs = GEN $@
|
|
cmd_initfs = \
|
|
$(CONFIG_SHELL) $< -o $@ -l $(obj)/.initramfs_data.cpio.d \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_UID), -u $(CONFIG_INITRAMFS_ROOT_UID)) \
|
|
$(if $(CONFIG_INITRAMFS_ROOT_GID), -g $(CONFIG_INITRAMFS_ROOT_GID)) \
|
|
$(ramfs-input)
|
|
|
|
# We rebuild initramfs_data.cpio if:
|
|
# 1) Any included file is newer than initramfs_data.cpio
|
|
# 2) There are changes in which files are included (added or deleted)
|
|
# 3) If gen_init_cpio are newer than initramfs_data.cpio
|
|
# 4) Arguments to gen_initramfs.sh changes
|
|
$(obj)/initramfs_data.cpio: $(src)/gen_initramfs.sh $(obj)/gen_init_cpio $(deps_initramfs) FORCE
|
|
$(call if_changed,initfs)
|
|
|
|
endif
|
|
|
|
$(obj)/initramfs_inc_data: $(cpio-data) FORCE
|
|
$(call if_changed,$(compress-y))
|
|
|
|
targets += initramfs_data.cpio initramfs_inc_data
|
|
|
|
subdir-$(CONFIG_UAPI_HEADER_TEST) += include
|