mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-01 03:44:08 +00:00
kbuild: Add support for an "archheaders" target
Add support for an "archheaders" target. This target can generate files that need to be installed for user space by "make headers_install" or "make headers_install_all". In order to support "make headers_install_all", it must be able to run without the tree having to be configured first. Cc: David Woodhouse <dwmw2@infradead.org> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
cb97914b04
commit
052ad27496
3 changed files with 39 additions and 21 deletions
|
@ -33,14 +33,15 @@ This document describes the Linux kernel Makefiles.
|
||||||
|
|
||||||
=== 6 Architecture Makefiles
|
=== 6 Architecture Makefiles
|
||||||
--- 6.1 Set variables to tweak the build to the architecture
|
--- 6.1 Set variables to tweak the build to the architecture
|
||||||
--- 6.2 Add prerequisites to archprepare:
|
--- 6.2 Add prerequisites to archheaders:
|
||||||
--- 6.3 List directories to visit when descending
|
--- 6.3 Add prerequisites to archprepare:
|
||||||
--- 6.4 Architecture-specific boot images
|
--- 6.4 List directories to visit when descending
|
||||||
--- 6.5 Building non-kbuild targets
|
--- 6.5 Architecture-specific boot images
|
||||||
--- 6.6 Commands useful for building a boot image
|
--- 6.6 Building non-kbuild targets
|
||||||
--- 6.7 Custom kbuild commands
|
--- 6.7 Commands useful for building a boot image
|
||||||
--- 6.8 Preprocessing linker scripts
|
--- 6.8 Custom kbuild commands
|
||||||
--- 6.9 Generic header files
|
--- 6.9 Preprocessing linker scripts
|
||||||
|
--- 6.10 Generic header files
|
||||||
|
|
||||||
=== 7 Kbuild syntax for exported headers
|
=== 7 Kbuild syntax for exported headers
|
||||||
--- 7.1 header-y
|
--- 7.1 header-y
|
||||||
|
@ -252,7 +253,7 @@ more details, with real examples.
|
||||||
This will create a library lib.a based on delay.o. For kbuild to
|
This will create a library lib.a based on delay.o. For kbuild to
|
||||||
actually recognize that there is a lib.a being built, the directory
|
actually recognize that there is a lib.a being built, the directory
|
||||||
shall be listed in libs-y.
|
shall be listed in libs-y.
|
||||||
See also "6.3 List directories to visit when descending".
|
See also "6.4 List directories to visit when descending".
|
||||||
|
|
||||||
Use of lib-y is normally restricted to lib/ and arch/*/lib.
|
Use of lib-y is normally restricted to lib/ and arch/*/lib.
|
||||||
|
|
||||||
|
@ -974,7 +975,20 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
|
$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
|
||||||
mode) if this option is supported by $(AR).
|
mode) if this option is supported by $(AR).
|
||||||
|
|
||||||
--- 6.2 Add prerequisites to archprepare:
|
--- 6.2 Add prerequisites to archheaders:
|
||||||
|
|
||||||
|
The archheaders: rule is used to generate header files that
|
||||||
|
may be installed into user space by "make header_install" or
|
||||||
|
"make headers_install_all". In order to support
|
||||||
|
"make headers_install_all", this target has to be able to run
|
||||||
|
on an unconfigured tree, or a tree configured for another
|
||||||
|
architecture.
|
||||||
|
|
||||||
|
It is run before "make archprepare" when run on the
|
||||||
|
architecture itself.
|
||||||
|
|
||||||
|
|
||||||
|
--- 6.3 Add prerequisites to archprepare:
|
||||||
|
|
||||||
The archprepare: rule is used to list prerequisites that need to be
|
The archprepare: rule is used to list prerequisites that need to be
|
||||||
built before starting to descend down in the subdirectories.
|
built before starting to descend down in the subdirectories.
|
||||||
|
@ -990,7 +1004,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
generating offset header files.
|
generating offset header files.
|
||||||
|
|
||||||
|
|
||||||
--- 6.3 List directories to visit when descending
|
--- 6.4 List directories to visit when descending
|
||||||
|
|
||||||
An arch Makefile cooperates with the top Makefile to define variables
|
An arch Makefile cooperates with the top Makefile to define variables
|
||||||
which specify how to build the vmlinux file. Note that there is no
|
which specify how to build the vmlinux file. Note that there is no
|
||||||
|
@ -1019,7 +1033,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
|
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
|
||||||
|
|
||||||
|
|
||||||
--- 6.4 Architecture-specific boot images
|
--- 6.5 Architecture-specific boot images
|
||||||
|
|
||||||
An arch Makefile specifies goals that take the vmlinux file, compress
|
An arch Makefile specifies goals that take the vmlinux file, compress
|
||||||
it, wrap it in bootstrapping code, and copy the resulting files
|
it, wrap it in bootstrapping code, and copy the resulting files
|
||||||
|
@ -1070,7 +1084,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
When "make" is executed without arguments, bzImage will be built.
|
When "make" is executed without arguments, bzImage will be built.
|
||||||
|
|
||||||
--- 6.5 Building non-kbuild targets
|
--- 6.6 Building non-kbuild targets
|
||||||
|
|
||||||
extra-y
|
extra-y
|
||||||
|
|
||||||
|
@ -1090,7 +1104,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
shall be built, but shall not be linked as part of built-in.o.
|
shall be built, but shall not be linked as part of built-in.o.
|
||||||
|
|
||||||
|
|
||||||
--- 6.6 Commands useful for building a boot image
|
--- 6.7 Commands useful for building a boot image
|
||||||
|
|
||||||
Kbuild provides a few macros that are useful when building a
|
Kbuild provides a few macros that are useful when building a
|
||||||
boot image.
|
boot image.
|
||||||
|
@ -1112,7 +1126,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
always be built.
|
always be built.
|
||||||
Assignments to $(targets) are without $(obj)/ prefix.
|
Assignments to $(targets) are without $(obj)/ prefix.
|
||||||
if_changed may be used in conjunction with custom commands as
|
if_changed may be used in conjunction with custom commands as
|
||||||
defined in 6.7 "Custom kbuild commands".
|
defined in 6.8 "Custom kbuild commands".
|
||||||
|
|
||||||
Note: It is a typical mistake to forget the FORCE prerequisite.
|
Note: It is a typical mistake to forget the FORCE prerequisite.
|
||||||
Another common pitfall is that whitespace is sometimes
|
Another common pitfall is that whitespace is sometimes
|
||||||
|
@ -1171,7 +1185,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
$(obj)/%.dtb: $(src)/%.dts
|
$(obj)/%.dtb: $(src)/%.dts
|
||||||
$(call cmd,dtc)
|
$(call cmd,dtc)
|
||||||
|
|
||||||
--- 6.7 Custom kbuild commands
|
--- 6.8 Custom kbuild commands
|
||||||
|
|
||||||
When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
|
When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
|
||||||
of a command is normally displayed.
|
of a command is normally displayed.
|
||||||
|
@ -1198,7 +1212,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
will be displayed with "make KBUILD_VERBOSE=0".
|
will be displayed with "make KBUILD_VERBOSE=0".
|
||||||
|
|
||||||
|
|
||||||
--- 6.8 Preprocessing linker scripts
|
--- 6.9 Preprocessing linker scripts
|
||||||
|
|
||||||
When the vmlinux image is built, the linker script
|
When the vmlinux image is built, the linker script
|
||||||
arch/$(ARCH)/kernel/vmlinux.lds is used.
|
arch/$(ARCH)/kernel/vmlinux.lds is used.
|
||||||
|
@ -1228,7 +1242,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
The kbuild infrastructure for *lds file are used in several
|
The kbuild infrastructure for *lds file are used in several
|
||||||
architecture-specific files.
|
architecture-specific files.
|
||||||
|
|
||||||
--- 6.9 Generic header files
|
--- 6.10 Generic header files
|
||||||
|
|
||||||
The directory include/asm-generic contains the header files
|
The directory include/asm-generic contains the header files
|
||||||
that may be shared between individual architectures.
|
that may be shared between individual architectures.
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -442,7 +442,7 @@ asm-generic:
|
||||||
|
|
||||||
no-dot-config-targets := clean mrproper distclean \
|
no-dot-config-targets := clean mrproper distclean \
|
||||||
cscope gtags TAGS tags help %docs check% coccicheck \
|
cscope gtags TAGS tags help %docs check% coccicheck \
|
||||||
include/linux/version.h headers_% \
|
include/linux/version.h headers_% archheaders \
|
||||||
kernelversion %src-pkg
|
kernelversion %src-pkg
|
||||||
|
|
||||||
config-targets := 0
|
config-targets := 0
|
||||||
|
@ -979,7 +979,7 @@ prepare1: prepare2 include/linux/version.h include/generated/utsrelease.h \
|
||||||
include/config/auto.conf
|
include/config/auto.conf
|
||||||
$(cmd_crmodverdir)
|
$(cmd_crmodverdir)
|
||||||
|
|
||||||
archprepare: prepare1 scripts_basic
|
archprepare: archheaders prepare1 scripts_basic
|
||||||
|
|
||||||
prepare0: archprepare FORCE
|
prepare0: archprepare FORCE
|
||||||
$(Q)$(MAKE) $(build)=.
|
$(Q)$(MAKE) $(build)=.
|
||||||
|
@ -1046,8 +1046,11 @@ hdr-inst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
|
||||||
# If we do an all arch process set dst to asm-$(hdr-arch)
|
# If we do an all arch process set dst to asm-$(hdr-arch)
|
||||||
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
|
||||||
|
|
||||||
|
PHONY += archheaders
|
||||||
|
archheaders:
|
||||||
|
|
||||||
PHONY += __headers
|
PHONY += __headers
|
||||||
__headers: include/linux/version.h scripts_basic asm-generic FORCE
|
__headers: include/linux/version.h scripts_basic asm-generic archheaders FORCE
|
||||||
$(Q)$(MAKE) $(build)=scripts build_unifdef
|
$(Q)$(MAKE) $(build)=scripts build_unifdef
|
||||||
|
|
||||||
PHONY += headers_install_all
|
PHONY += headers_install_all
|
||||||
|
|
|
@ -7,6 +7,7 @@ set -e
|
||||||
do_command()
|
do_command()
|
||||||
{
|
{
|
||||||
if [ -f ${srctree}/arch/$2/include/asm/Kbuild ]; then
|
if [ -f ${srctree}/arch/$2/include/asm/Kbuild ]; then
|
||||||
|
make ARCH=$2 KBUILD_HEADERS=$1 archheaders
|
||||||
make ARCH=$2 KBUILD_HEADERS=$1 headers_$1
|
make ARCH=$2 KBUILD_HEADERS=$1 headers_$1
|
||||||
else
|
else
|
||||||
printf "Ignoring arch: %s\n" ${arch}
|
printf "Ignoring arch: %s\n" ${arch}
|
||||||
|
|
Loading…
Add table
Reference in a new issue