Files
android_kernel_motorola_sm6225/scripts/Makefile.headersinst
T
Gilberto Gambugge 657b260037 techpack: add camera legacy support
Add camera legacy support by checking BOARD_CONFIG_CAMERA_KERNEL_NAME
to decide which folder will be used to compile the camera techpack.
Also, due to camera legacy, the camera uapi kernel headers installation
routines need to be updated to consider the camera legacy support.
This commit also fixes the routines to install kernel headers for
'make headers_install' and also 'qti_generate_kernel_headers_arm'
and 'qti_generate_kernel_headers_arm64'.

Change-Id: I845c5cb49c388bc15eba2fbf0ed0724e93de5192
Reviewed-on: https://gerrit.mot.com/2632695
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Reviewed-by: Rafael Ortolan <rafones@motorola.com>
Reviewed-by: Rav(CR) Vembu <raviv@motorola.com>
Reviewed-by: Miguel Nicodemus <miguelh@motorola.com>
Tested-by: Jira Key
Submit-Approved: Jira Key
2023-06-12 18:49:53 -05:00

147 lines
4.4 KiB
Makefile

# SPDX-License-Identifier: GPL-2.0
# ==========================================================================
# Installing headers
#
# All headers under include/uapi, include/generated/uapi,
# arch/<arch>/include/uapi and arch/<arch>/include/generated/uapi are
# exported.
# They are preprocessed to remove __KERNEL__ section of the file.
#
# ==========================================================================
PHONY := __headers
__headers:
include scripts/Kbuild.include
srcdir := $(srctree)/$(obj)
# When make is run under a fakechroot environment, the function
# $(wildcard $(srcdir)/*/.) doesn't only return directories, but also regular
# files. So, we are using a combination of sort/dir/wildcard which works
# with fakechroot.
subdirs := $(patsubst $(srcdir)/%/,%,\
$(filter-out $(srcdir)/,\
$(sort $(dir $(wildcard $(srcdir)/*/)))))
# Recursion
__headers: $(subdirs)
PHONY += $(subdirs)
$(subdirs):
$(Q)$(MAKE) $(hdr-inst)=$(obj)/$@ dst=$(dst)/$@
# Skip header install/check for include/uapi and arch/$(SRCARCH)/include/uapi.
# We have only sub-directories there.
skip-inst := $(if $(filter %/uapi,$(obj)),1)
ifeq ($(skip-inst),)
ifeq ($(BOARD_CONFIG_CAMERA_KERNEL_NAME),)
skip-inst := $(if $(filter legacy,$(obj)),1)
else
ifneq (, $(findstring camera, $(obj)))
ifeq (, $(findstring $(BOARD_CONFIG_CAMERA_KERNEL_NAME), $(obj)))
skip-inst := 1
endif
endif
endif
endif
ifeq ($(skip-inst),)
# Kbuild file is optional
kbuild-file := $(srctree)/$(obj)/Kbuild
-include $(kbuild-file)
ifeq (, $(findstring $(BOARD_CONFIG_CAMERA_KERNEL_NAME), $(obj)))
installdir := $(INSTALL_HDR_PATH)/$(dst)
else
installdir := $(INSTALL_HDR_PATH)/$(subst camera-legacy/$(BOARD_CONFIG_CAMERA_KERNEL_NAME),camera,$(dst))
endif
gendir := $(objtree)/$(subst include/,include/generated/,$(obj))
header-files := $(notdir $(wildcard $(srcdir)/*.h))
header-files += $(notdir $(wildcard $(srcdir)/*.agh))
header-files := $(filter-out $(no-export-headers), $(header-files))
genhdr-files := $(notdir $(wildcard $(gendir)/*.h))
genhdr-files := $(filter-out $(header-files), $(genhdr-files))
# files used to track state of install/check
install-file := $(installdir)/.install
check-file := $(installdir)/.check
# all headers files for this dir
all-files := $(header-files) $(genhdr-files)
output-files := $(addprefix $(installdir)/, $(all-files))
ifneq ($(mandatory-y),)
missing := $(filter-out $(all-files),$(mandatory-y))
ifneq ($(missing),)
$(error Some mandatory headers ($(missing)) are missing in $(obj))
endif
endif
# Work out what needs to be removed
oldheaders := $(patsubst $(installdir)/%,%,$(wildcard $(installdir)/*.h))
unwanted := $(filter-out $(all-files),$(oldheaders))
# Prefix unwanted with full paths to $(INSTALL_HDR_PATH)
unwanted-file := $(addprefix $(installdir)/, $(unwanted))
printdir = $(patsubst $(INSTALL_HDR_PATH)/%/,%,$(dir $@))
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
file$(if $(word 2, $(all-files)),s))
cmd_install = \
$(CONFIG_SHELL) $< $(installdir) $(srcdir) $(header-files); \
$(CONFIG_SHELL) $< $(installdir) $(gendir) $(genhdr-files); \
touch $@
quiet_cmd_remove = REMOVE $(unwanted)
cmd_remove = rm -f $(unwanted-file)
quiet_cmd_check = CHECK $(printdir) ($(words $(all-files)) files)
# Headers list can be pretty long, xargs helps to avoid
# the "Argument list too long" error.
cmd_check = for f in $(all-files); do \
echo "$(installdir)/$${f}"; done \
| xargs \
$(PERL) $< $(INSTALL_HDR_PATH)/include $(SRCARCH); \
touch $@
ifndef HDRCHECK
# Rules for installing headers
__headers: $(install-file)
@:
targets += $(install-file)
$(install-file): scripts/headers_install.sh \
$(addprefix $(srcdir)/,$(header-files)) \
$(addprefix $(gendir)/,$(genhdr-files)) FORCE
$(if $(unwanted),$(call cmd,remove),)
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
$(call if_changed,install)
else
__headers: $(check-file)
@:
targets += $(check-file)
$(check-file): scripts/headers_check.pl $(output-files) FORCE
$(call if_changed,check)
endif
cmd_files := $(wildcard \
$(foreach f,$(sort $(targets)),$(dir $(f)).$(notdir $(f)).cmd))
ifneq ($(cmd_files),)
include $(cmd_files)
endif
endif # skip-inst
PHONY += FORCE
FORCE: ;
.PHONY: $(PHONY)