mirror of
https://github.com/t2linux/kernel.git
synced 2026-04-30 13:48:59 -07:00
Merge tag 'kbuild-v5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild updates from Masahiro Yamada:
- fix warnings in 'make clean' for ARCH=um, hexagon, h8300, unicore32
- ensure to rebuild all objects when the compiler is upgraded
- exclude system headers from dependency tracking and fixdep processing
- fix potential bit-size mismatch between the kernel and BPF user-mode
helper
- add the new syntax 'userprogs' to build user-space programs for the
target architecture (the same arch as the kernel)
- compile user-space sample code under samples/ for the target arch
instead of the host arch
- make headers_install fail if a CONFIG option is leaked to user-space
- sanitize the output format of scripts/checkstack.pl
- handle ARM 'push' instruction in scripts/checkstack.pl
- error out before modpost if a module name conflict is found
- error out when multiple directories are passed to M= because this
feature is broken for a long time
- add CONFIG_DEBUG_INFO_COMPRESSED to support compressed debug info
- a lot of cleanups of modpost
- dump vmlinux symbols out into vmlinux.symvers, and reuse it in the
second pass of modpost
- do not run the second pass of modpost if nothing in modules is
updated
- install modules.builtin(.modinfo) by 'make install' as well as by
'make modules_install' because it is useful even when
CONFIG_MODULES=n
- add new command line variables, GZIP, BZIP2, LZOP, LZMA, LZ4, and XZ
to allow users to use alternatives such as pigz, pbzip2, etc.
* tag 'kbuild-v5.8' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (96 commits)
kbuild: add variables for compression tools
Makefile: install modules.builtin even if CONFIG_MODULES=n
mksysmap: Fix the mismatch of '.L' symbols in System.map
kbuild: doc: rename LDFLAGS to KBUILD_LDFLAGS
modpost: change elf_info->size to size_t
modpost: remove is_vmlinux() helper
modpost: strip .o from modname before calling new_module()
modpost: set have_vmlinux in new_module()
modpost: remove mod->skip struct member
modpost: add mod->is_vmlinux struct member
modpost: remove is_vmlinux() call in check_for_{gpl_usage,unused}()
modpost: remove mod->is_dot_o struct member
modpost: move -d option in scripts/Makefile.modpost
modpost: remove -s option
modpost: remove get_next_text() and make {grab,release_}file static
modpost: use read_text_file() and get_line() for reading text files
modpost: avoid false-positive file open error
modpost: fix potential mmap'ed file overrun in get_src_version()
modpost: add read_text_file() and get_line() helpers
modpost: do not call get_modinfo() for vmlinux(.o)
...
This commit is contained in:
@@ -56,6 +56,7 @@ modules.order
|
||||
/linux
|
||||
/vmlinux
|
||||
/vmlinux.32
|
||||
/vmlinux.symvers
|
||||
/vmlinux-gdb.py
|
||||
/vmlinuz
|
||||
/System.map
|
||||
|
||||
@@ -251,6 +251,7 @@ vmlinux-*
|
||||
vmlinux.aout
|
||||
vmlinux.bin.all
|
||||
vmlinux.lds
|
||||
vmlinux.symvers
|
||||
vmlinuz
|
||||
voffset.h
|
||||
vsyscall.lds
|
||||
|
||||
@@ -29,31 +29,37 @@ This document describes the Linux kernel Makefiles.
|
||||
--- 4.4 Controlling compiler options for host programs
|
||||
--- 4.5 When host programs are actually built
|
||||
|
||||
=== 5 Kbuild clean infrastructure
|
||||
=== 5 Userspace Program support
|
||||
--- 5.1 Simple Userspace Program
|
||||
--- 5.2 Composite Userspace Programs
|
||||
--- 5.3 Controlling compiler options for userspace programs
|
||||
--- 5.4 When userspace programs are actually built
|
||||
|
||||
=== 6 Architecture Makefiles
|
||||
--- 6.1 Set variables to tweak the build to the architecture
|
||||
--- 6.2 Add prerequisites to archheaders:
|
||||
--- 6.3 Add prerequisites to archprepare:
|
||||
--- 6.4 List directories to visit when descending
|
||||
--- 6.5 Architecture-specific boot images
|
||||
--- 6.6 Building non-kbuild targets
|
||||
--- 6.7 Commands useful for building a boot image
|
||||
--- 6.8 Custom kbuild commands
|
||||
--- 6.9 Preprocessing linker scripts
|
||||
--- 6.10 Generic header files
|
||||
--- 6.11 Post-link pass
|
||||
=== 6 Kbuild clean infrastructure
|
||||
|
||||
=== 7 Kbuild syntax for exported headers
|
||||
--- 7.1 no-export-headers
|
||||
--- 7.2 generic-y
|
||||
--- 7.3 generated-y
|
||||
--- 7.4 mandatory-y
|
||||
=== 7 Architecture Makefiles
|
||||
--- 7.1 Set variables to tweak the build to the architecture
|
||||
--- 7.2 Add prerequisites to archheaders:
|
||||
--- 7.3 Add prerequisites to archprepare:
|
||||
--- 7.4 List directories to visit when descending
|
||||
--- 7.5 Architecture-specific boot images
|
||||
--- 7.6 Building non-kbuild targets
|
||||
--- 7.7 Commands useful for building a boot image
|
||||
--- 7.8 Custom kbuild commands
|
||||
--- 7.9 Preprocessing linker scripts
|
||||
--- 7.10 Generic header files
|
||||
--- 7.11 Post-link pass
|
||||
|
||||
=== 8 Kbuild Variables
|
||||
=== 9 Makefile language
|
||||
=== 10 Credits
|
||||
=== 11 TODO
|
||||
=== 8 Kbuild syntax for exported headers
|
||||
--- 8.1 no-export-headers
|
||||
--- 8.2 generic-y
|
||||
--- 8.3 generated-y
|
||||
--- 8.4 mandatory-y
|
||||
|
||||
=== 9 Kbuild Variables
|
||||
=== 10 Makefile language
|
||||
=== 11 Credits
|
||||
=== 12 TODO
|
||||
|
||||
1 Overview
|
||||
==========
|
||||
@@ -732,7 +738,88 @@ Both possibilities are described in the following.
|
||||
This will tell kbuild to build lxdialog even if not referenced in
|
||||
any rule.
|
||||
|
||||
5 Kbuild clean infrastructure
|
||||
5 Userspace Program support
|
||||
===========================
|
||||
|
||||
Just like host programs, Kbuild also supports building userspace executables
|
||||
for the target architecture (i.e. the same architecture as you are building
|
||||
the kernel for).
|
||||
|
||||
The syntax is quite similar. The difference is to use "userprogs" instead of
|
||||
"hostprogs".
|
||||
|
||||
5.1 Simple Userspace Program
|
||||
----------------------------
|
||||
|
||||
The following line tells kbuild that the program bpf-direct shall be
|
||||
built for the target architecture.
|
||||
|
||||
Example::
|
||||
|
||||
userprogs := bpf-direct
|
||||
|
||||
Kbuild assumes in the above example that bpf-direct is made from a
|
||||
single C source file named bpf-direct.c located in the same directory
|
||||
as the Makefile.
|
||||
|
||||
5.2 Composite Userspace Programs
|
||||
--------------------------------
|
||||
|
||||
Userspace programs can be made up based on composite objects.
|
||||
The syntax used to define composite objects for userspace programs is
|
||||
similar to the syntax used for kernel objects.
|
||||
$(<executable>-objs) lists all objects used to link the final
|
||||
executable.
|
||||
|
||||
Example::
|
||||
|
||||
#samples/seccomp/Makefile
|
||||
userprogs := bpf-fancy
|
||||
bpf-fancy-objs := bpf-fancy.o bpf-helper.o
|
||||
|
||||
Objects with extension .o are compiled from the corresponding .c
|
||||
files. In the above example, bpf-fancy.c is compiled to bpf-fancy.o
|
||||
and bpf-helper.c is compiled to bpf-helper.o.
|
||||
|
||||
Finally, the two .o files are linked to the executable, bpf-fancy.
|
||||
Note: The syntax <executable>-y is not permitted for userspace programs.
|
||||
|
||||
5.3 Controlling compiler options for userspace programs
|
||||
-------------------------------------------------------
|
||||
|
||||
When compiling userspace programs, it is possible to set specific flags.
|
||||
The programs will always be compiled utilising $(CC) passed
|
||||
the options specified in $(KBUILD_USERCFLAGS).
|
||||
To set flags that will take effect for all userspace programs created
|
||||
in that Makefile, use the variable userccflags.
|
||||
|
||||
Example::
|
||||
|
||||
# samples/seccomp/Makefile
|
||||
userccflags += -I usr/include
|
||||
|
||||
To set specific flags for a single file the following construction
|
||||
is used:
|
||||
|
||||
Example::
|
||||
|
||||
bpf-helper-userccflags += -I user/include
|
||||
|
||||
It is also possible to specify additional options to the linker.
|
||||
|
||||
Example::
|
||||
|
||||
# net/bpfilter/Makefile
|
||||
bpfilter_umh-userldflags += -static
|
||||
|
||||
When linking bpfilter_umh, it will be passed the extra option -static.
|
||||
|
||||
5.4 When userspace programs are actually built
|
||||
----------------------------------------------
|
||||
|
||||
Same as "When host programs are actually built".
|
||||
|
||||
6 Kbuild clean infrastructure
|
||||
=============================
|
||||
|
||||
"make clean" deletes most generated files in the obj tree where the kernel
|
||||
@@ -790,7 +877,7 @@ is not operational at that point.
|
||||
Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will
|
||||
be visited during "make clean".
|
||||
|
||||
6 Architecture Makefiles
|
||||
7 Architecture Makefiles
|
||||
========================
|
||||
|
||||
The top level Makefile sets up the environment and does the preparation,
|
||||
@@ -820,10 +907,10 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
- Preparing initrd images and the like
|
||||
|
||||
|
||||
6.1 Set variables to tweak the build to the architecture
|
||||
7.1 Set variables to tweak the build to the architecture
|
||||
--------------------------------------------------------
|
||||
|
||||
LDFLAGS
|
||||
KBUILD_LDFLAGS
|
||||
Generic $(LD) options
|
||||
|
||||
Flags used for all invocations of the linker.
|
||||
@@ -832,7 +919,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
Example::
|
||||
|
||||
#arch/s390/Makefile
|
||||
LDFLAGS := -m elf_s390
|
||||
KBUILD_LDFLAGS := -m elf_s390
|
||||
|
||||
Note: ldflags-y can be used to further customise
|
||||
the flags used. See chapter 3.7.
|
||||
@@ -967,7 +1054,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
KBUILD_VMLINUX_LIBS together specify all the object files used to
|
||||
link vmlinux.
|
||||
|
||||
6.2 Add prerequisites to archheaders
|
||||
7.2 Add prerequisites to archheaders
|
||||
------------------------------------
|
||||
|
||||
The archheaders: rule is used to generate header files that
|
||||
@@ -977,7 +1064,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
architecture itself.
|
||||
|
||||
|
||||
6.3 Add prerequisites to archprepare
|
||||
7.3 Add prerequisites to archprepare
|
||||
------------------------------------
|
||||
|
||||
The archprepare: rule is used to list prerequisites that need to be
|
||||
@@ -995,7 +1082,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
generating offset header files.
|
||||
|
||||
|
||||
6.4 List directories to visit when descending
|
||||
7.4 List directories to visit when descending
|
||||
---------------------------------------------
|
||||
|
||||
An arch Makefile cooperates with the top Makefile to define variables
|
||||
@@ -1030,7 +1117,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
|
||||
|
||||
|
||||
6.5 Architecture-specific boot images
|
||||
7.5 Architecture-specific boot images
|
||||
-------------------------------------
|
||||
|
||||
An arch Makefile specifies goals that take the vmlinux file, compress
|
||||
@@ -1085,7 +1172,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
|
||||
When "make" is executed without arguments, bzImage will be built.
|
||||
|
||||
6.6 Building non-kbuild targets
|
||||
7.6 Building non-kbuild targets
|
||||
-------------------------------
|
||||
|
||||
extra-y
|
||||
@@ -1108,7 +1195,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
In this example, extra-y is used to list object files that
|
||||
shall be built, but shall not be linked as part of built-in.a.
|
||||
|
||||
6.7 Commands useful for building a boot image
|
||||
7.7 Commands useful for building a boot image
|
||||
---------------------------------------------
|
||||
|
||||
Kbuild provides a few macros that are useful when building a
|
||||
@@ -1211,7 +1298,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
targets += $(dtb-y)
|
||||
DTC_FLAGS ?= -p 1024
|
||||
|
||||
6.8 Custom kbuild commands
|
||||
7.8 Custom kbuild commands
|
||||
--------------------------
|
||||
|
||||
When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
|
||||
@@ -1241,7 +1328,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
will be displayed with "make KBUILD_VERBOSE=0".
|
||||
|
||||
|
||||
6.9 Preprocessing linker scripts
|
||||
7.9 Preprocessing linker scripts
|
||||
--------------------------------
|
||||
|
||||
When the vmlinux image is built, the linker script
|
||||
@@ -1274,7 +1361,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
The kbuild infrastructure for `*lds` files is used in several
|
||||
architecture-specific files.
|
||||
|
||||
6.10 Generic header files
|
||||
7.10 Generic header files
|
||||
-------------------------
|
||||
|
||||
The directory include/asm-generic contains the header files
|
||||
@@ -1283,7 +1370,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
to list the file in the Kbuild file.
|
||||
See "7.2 generic-y" for further info on syntax etc.
|
||||
|
||||
6.11 Post-link pass
|
||||
7.11 Post-link pass
|
||||
-------------------
|
||||
|
||||
If the file arch/xxx/Makefile.postlink exists, this makefile
|
||||
@@ -1299,7 +1386,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||
For example, powerpc uses this to check relocation sanity of
|
||||
the linked vmlinux file.
|
||||
|
||||
7 Kbuild syntax for exported headers
|
||||
8 Kbuild syntax for exported headers
|
||||
------------------------------------
|
||||
|
||||
The kernel includes a set of headers that is exported to userspace.
|
||||
@@ -1319,14 +1406,14 @@ A Kbuild file may be defined under arch/<arch>/include/uapi/asm/ and
|
||||
arch/<arch>/include/asm/ to list asm files coming from asm-generic.
|
||||
See subsequent chapter for the syntax of the Kbuild file.
|
||||
|
||||
7.1 no-export-headers
|
||||
8.1 no-export-headers
|
||||
---------------------
|
||||
|
||||
no-export-headers is essentially used by include/uapi/linux/Kbuild to
|
||||
avoid exporting specific headers (e.g. kvm.h) on architectures that do
|
||||
not support it. It should be avoided as much as possible.
|
||||
|
||||
7.2 generic-y
|
||||
8.2 generic-y
|
||||
-------------
|
||||
|
||||
If an architecture uses a verbatim copy of a header from
|
||||
@@ -1356,7 +1443,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||
|
||||
#include <asm-generic/termios.h>
|
||||
|
||||
7.3 generated-y
|
||||
8.3 generated-y
|
||||
---------------
|
||||
|
||||
If an architecture generates other header files alongside generic-y
|
||||
@@ -1370,7 +1457,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||
#arch/x86/include/asm/Kbuild
|
||||
generated-y += syscalls_32.h
|
||||
|
||||
7.4 mandatory-y
|
||||
8.4 mandatory-y
|
||||
---------------
|
||||
|
||||
mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild
|
||||
@@ -1380,7 +1467,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||
in arch/$(ARCH)/include/(uapi/)/asm, Kbuild will automatically generate
|
||||
a wrapper of the asm-generic one.
|
||||
|
||||
8 Kbuild Variables
|
||||
9 Kbuild Variables
|
||||
==================
|
||||
|
||||
The top Makefile exports the following variables:
|
||||
@@ -1438,8 +1525,8 @@ The top Makefile exports the following variables:
|
||||
command.
|
||||
|
||||
|
||||
9 Makefile language
|
||||
===================
|
||||
10 Makefile language
|
||||
====================
|
||||
|
||||
The kernel Makefiles are designed to be run with GNU Make. The Makefiles
|
||||
use only the documented features of GNU Make, but they do use many
|
||||
@@ -1458,7 +1545,7 @@ time the left-hand side is used.
|
||||
There are some cases where "=" is appropriate. Usually, though, ":="
|
||||
is the right choice.
|
||||
|
||||
10 Credits
|
||||
11 Credits
|
||||
==========
|
||||
|
||||
- Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
|
||||
@@ -1466,7 +1553,7 @@ is the right choice.
|
||||
- Updates by Sam Ravnborg <sam@ravnborg.org>
|
||||
- Language QA by Jan Engelhardt <jengelh@gmx.de>
|
||||
|
||||
11 TODO
|
||||
12 TODO
|
||||
=======
|
||||
|
||||
- Describe how kbuild supports shipped files with _shipped.
|
||||
|
||||
@@ -528,18 +528,6 @@ build.
|
||||
will then do the expected and compile both modules with
|
||||
full knowledge of symbols from either module.
|
||||
|
||||
Use an extra Module.symvers file
|
||||
When an external module is built, a Module.symvers file
|
||||
is generated containing all exported symbols which are
|
||||
not defined in the kernel. To get access to symbols
|
||||
from bar.ko, copy the Module.symvers file from the
|
||||
compilation of bar.ko to the directory where foo.ko is
|
||||
built. During the module build, kbuild will read the
|
||||
Module.symvers file in the directory of the external
|
||||
module, and when the build is finished, a new
|
||||
Module.symvers file is created containing the sum of
|
||||
all symbols defined and not part of the kernel.
|
||||
|
||||
Use "make" variable KBUILD_EXTRA_SYMBOLS
|
||||
If it is impractical to add a top-level kbuild file,
|
||||
you can assign a space separated list
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
#
|
||||
mainmenu "Linux/$(ARCH) $(KERNELVERSION) Kernel Configuration"
|
||||
|
||||
comment "Compiler: $(CC_VERSION_TEXT)"
|
||||
|
||||
source "scripts/Kconfig.include"
|
||||
|
||||
source "init/Kconfig"
|
||||
|
||||
@@ -11,9 +11,12 @@ NAME = Kleptomaniac Octopus
|
||||
# Comments in this file are targeted only to the developer, do not
|
||||
# expect to learn how to build the kernel reading this file.
|
||||
|
||||
$(if $(filter __%, $(MAKECMDGOALS)), \
|
||||
$(error targets prefixed with '__' are only for internal use))
|
||||
|
||||
# That's our default target when none is given on the command line
|
||||
PHONY := _all
|
||||
_all:
|
||||
PHONY := __all
|
||||
__all:
|
||||
|
||||
# We are using a recursive build, so we need to do a little thinking
|
||||
# to get the ordering right.
|
||||
@@ -157,12 +160,14 @@ MAKEFLAGS += --include-dir=$(abs_srctree)
|
||||
need-sub-make := 1
|
||||
endif
|
||||
|
||||
this-makefile := $(lastword $(MAKEFILE_LIST))
|
||||
|
||||
ifneq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||
# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
|
||||
# We need to invoke sub-make to avoid implicit rules in the top Makefile.
|
||||
need-sub-make := 1
|
||||
# Cancel implicit rules for this Makefile.
|
||||
$(lastword $(MAKEFILE_LIST)): ;
|
||||
$(this-makefile): ;
|
||||
endif
|
||||
|
||||
export abs_srctree abs_objtree
|
||||
@@ -170,13 +175,13 @@ export sub_make_done := 1
|
||||
|
||||
ifeq ($(need-sub-make),1)
|
||||
|
||||
PHONY += $(MAKECMDGOALS) sub-make
|
||||
PHONY += $(MAKECMDGOALS) __sub-make
|
||||
|
||||
$(filter-out _all sub-make $(lastword $(MAKEFILE_LIST)), $(MAKECMDGOALS)) _all: sub-make
|
||||
$(filter-out $(this-makefile), $(MAKECMDGOALS)) __all: __sub-make
|
||||
@:
|
||||
|
||||
# Invoke a second make in the output directory, passing relevant variables
|
||||
sub-make:
|
||||
__sub-make:
|
||||
$(Q)$(MAKE) -C $(abs_objtree) -f $(abs_srctree)/Makefile $(MAKECMDGOALS)
|
||||
|
||||
endif # need-sub-make
|
||||
@@ -213,6 +218,9 @@ ifeq ("$(origin M)", "command line")
|
||||
KBUILD_EXTMOD := $(M)
|
||||
endif
|
||||
|
||||
$(if $(word 2, $(KBUILD_EXTMOD)), \
|
||||
$(error building multiple external modules is not supported))
|
||||
|
||||
export KBUILD_CHECKSRC KBUILD_EXTMOD
|
||||
|
||||
extmod-prefix = $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)
|
||||
@@ -321,7 +329,7 @@ ifdef mixed-build
|
||||
|
||||
PHONY += $(MAKECMDGOALS) __build_one_by_one
|
||||
|
||||
$(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one
|
||||
$(MAKECMDGOALS): __build_one_by_one
|
||||
@:
|
||||
|
||||
__build_one_by_one:
|
||||
@@ -406,9 +414,12 @@ else
|
||||
HOSTCC = gcc
|
||||
HOSTCXX = g++
|
||||
endif
|
||||
KBUILD_HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \
|
||||
-fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS) \
|
||||
$(HOSTCFLAGS)
|
||||
|
||||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||||
-O2 -fomit-frame-pointer -std=gnu89
|
||||
export KBUILD_USERLDFLAGS :=
|
||||
|
||||
KBUILD_HOSTCFLAGS := $(KBUILD_USERCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||||
KBUILD_HOSTCXXFLAGS := -Wall -O2 $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
|
||||
KBUILD_HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) $(HOSTLDFLAGS)
|
||||
KBUILD_HOSTLDLIBS := $(HOST_LFS_LIBS) $(HOSTLDLIBS)
|
||||
@@ -447,6 +458,26 @@ PYTHON = python
|
||||
PYTHON3 = python3
|
||||
CHECK = sparse
|
||||
BASH = bash
|
||||
GZIP = gzip
|
||||
BZIP2 = bzip2
|
||||
LZOP = lzop
|
||||
LZMA = lzma
|
||||
LZ4 = lz4c
|
||||
XZ = xz
|
||||
|
||||
# GZIP, BZIP2, LZOP env vars are used by the tools. Support them as the command
|
||||
# line interface, but use _GZIP, _BZIP2, _LZOP internally.
|
||||
_GZIP := $(GZIP)
|
||||
_BZIP2 := $(BZIP2)
|
||||
_LZOP := $(LZOP)
|
||||
|
||||
# Reset GZIP, BZIP2, LZOP in this Makefile
|
||||
override GZIP=
|
||||
override BZIP2=
|
||||
override LZOP=
|
||||
|
||||
# Reset GZIP, BZIP2, LZOP in recursive invocations
|
||||
MAKEOVERRIDES += GZIP= BZIP2= LZOP=
|
||||
|
||||
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
|
||||
-Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF)
|
||||
@@ -495,6 +526,7 @@ CLANG_FLAGS :=
|
||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
|
||||
export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE LEX YACC AWK INSTALLKERNEL
|
||||
export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
|
||||
export _GZIP _BZIP2 _LZOP LZMA LZ4 XZ
|
||||
export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
|
||||
|
||||
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
|
||||
@@ -593,12 +625,12 @@ else #!config-build
|
||||
# targets and others. In general all targets except *config targets.
|
||||
|
||||
# If building an external module we do not care about the all: rule
|
||||
# but instead _all depend on modules
|
||||
# but instead __all depend on modules
|
||||
PHONY += all
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
_all: all
|
||||
__all: all
|
||||
else
|
||||
_all: modules
|
||||
__all: modules
|
||||
endif
|
||||
|
||||
# Decide whether to build built-in, modular, or both.
|
||||
@@ -608,19 +640,15 @@ KBUILD_MODULES :=
|
||||
KBUILD_BUILTIN := 1
|
||||
|
||||
# If we have only "make modules", don't compile built-in objects.
|
||||
# When we're building modules with modversions, we need to consider
|
||||
# the built-in objects during the descend as well, in order to
|
||||
# make sure the checksums are up to date before we record them.
|
||||
|
||||
ifeq ($(MAKECMDGOALS),modules)
|
||||
KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
|
||||
KBUILD_BUILTIN :=
|
||||
endif
|
||||
|
||||
# If we have "make <whatever> modules", compile modules
|
||||
# in addition to whatever we do anyway.
|
||||
# Just "make" or "make all" shall build modules as well
|
||||
|
||||
ifneq ($(filter all _all modules nsdeps,$(MAKECMDGOALS)),)
|
||||
ifneq ($(filter all modules nsdeps,$(MAKECMDGOALS)),)
|
||||
KBUILD_MODULES := 1
|
||||
endif
|
||||
|
||||
@@ -636,13 +664,11 @@ endif
|
||||
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
# Objects we will link into vmlinux / subdirs we need to visit
|
||||
init-y := init/
|
||||
core-y := init/ usr/
|
||||
drivers-y := drivers/ sound/
|
||||
drivers-$(CONFIG_SAMPLES) += samples/
|
||||
net-y := net/
|
||||
drivers-y += net/ virt/
|
||||
libs-y := lib/
|
||||
core-y := usr/
|
||||
virt-y := virt/
|
||||
endif # KBUILD_EXTMOD
|
||||
|
||||
# The all: target is the default when no target is given on the
|
||||
@@ -695,7 +721,7 @@ $(KCONFIG_CONFIG):
|
||||
# This exploits the 'multi-target pattern rule' trick.
|
||||
# The syncconfig should be executed only once to make all the targets.
|
||||
# (Note: use the grouped target '&:' when we bump to GNU Make 4.3)
|
||||
%/auto.conf %/auto.conf.cmd: $(KCONFIG_CONFIG)
|
||||
%/config/auto.conf %/config/auto.conf.cmd %/generated/autoconf.h: $(KCONFIG_CONFIG)
|
||||
$(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
|
||||
else # !may-sync-config
|
||||
# External modules and some install targets need include/generated/autoconf.h
|
||||
@@ -814,6 +840,12 @@ DEBUG_CFLAGS += $(call cc-option, -femit-struct-debug-baseonly) \
|
||||
$(call cc-option,-fno-var-tracking)
|
||||
endif
|
||||
|
||||
ifdef CONFIG_DEBUG_INFO_COMPRESSED
|
||||
DEBUG_CFLAGS += -gz=zlib
|
||||
KBUILD_AFLAGS += -Wa,--compress-debug-sections=zlib
|
||||
KBUILD_LDFLAGS += --compress-debug-sections=zlib
|
||||
endif
|
||||
|
||||
KBUILD_CFLAGS += $(DEBUG_CFLAGS)
|
||||
export DEBUG_CFLAGS
|
||||
|
||||
@@ -950,6 +982,10 @@ ifeq ($(CONFIG_RELR),y)
|
||||
LDFLAGS_vmlinux += --pack-dyn-relocs=relr
|
||||
endif
|
||||
|
||||
# Align the bit size of userspace programs with the kernel
|
||||
KBUILD_USERCFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
||||
|
||||
# make the checker run with the right architecture
|
||||
CHECKFLAGS += --arch=$(ARCH)
|
||||
|
||||
@@ -1011,10 +1047,10 @@ export mod_strip_cmd
|
||||
mod_compress_cmd = true
|
||||
ifdef CONFIG_MODULE_COMPRESS
|
||||
ifdef CONFIG_MODULE_COMPRESS_GZIP
|
||||
mod_compress_cmd = gzip -n -f
|
||||
mod_compress_cmd = $(_GZIP) -n -f
|
||||
endif # CONFIG_MODULE_COMPRESS_GZIP
|
||||
ifdef CONFIG_MODULE_COMPRESS_XZ
|
||||
mod_compress_cmd = xz -f
|
||||
mod_compress_cmd = $(XZ) -f
|
||||
endif # CONFIG_MODULE_COMPRESS_XZ
|
||||
endif # CONFIG_MODULE_COMPRESS
|
||||
export mod_compress_cmd
|
||||
@@ -1049,34 +1085,33 @@ export MODULES_NSDEPS := $(extmod-prefix)modules.nsdeps
|
||||
ifeq ($(KBUILD_EXTMOD),)
|
||||
core-y += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/
|
||||
|
||||
vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
|
||||
vmlinux-dirs := $(patsubst %/,%,$(filter %/, \
|
||||
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
|
||||
$(net-y) $(net-m) $(libs-y) $(libs-m) $(virt-y)))
|
||||
$(libs-y) $(libs-m)))
|
||||
|
||||
vmlinux-alldirs := $(sort $(vmlinux-dirs) Documentation \
|
||||
$(patsubst %/,%,$(filter %/, $(init-) $(core-) \
|
||||
$(drivers-) $(net-) $(libs-) $(virt-))))
|
||||
$(patsubst %/,%,$(filter %/, $(core-) \
|
||||
$(drivers-) $(libs-))))
|
||||
|
||||
subdir-modorder := $(addsuffix modules.order,$(filter %/, \
|
||||
$(core-y) $(core-m) $(libs-y) $(libs-m) \
|
||||
$(drivers-y) $(drivers-m)))
|
||||
|
||||
build-dirs := $(vmlinux-dirs)
|
||||
clean-dirs := $(vmlinux-alldirs)
|
||||
|
||||
init-y := $(patsubst %/, %/built-in.a, $(init-y))
|
||||
core-y := $(patsubst %/, %/built-in.a, $(core-y))
|
||||
drivers-y := $(patsubst %/, %/built-in.a, $(drivers-y))
|
||||
net-y := $(patsubst %/, %/built-in.a, $(net-y))
|
||||
libs-y2 := $(patsubst %/, %/built-in.a, $(filter %/, $(libs-y)))
|
||||
ifdef CONFIG_MODULES
|
||||
libs-y1 := $(filter-out %/, $(libs-y))
|
||||
libs-y2 += $(patsubst %/, %/lib.a, $(filter %/, $(libs-y)))
|
||||
else
|
||||
libs-y1 := $(patsubst %/, %/lib.a, $(libs-y))
|
||||
endif
|
||||
virt-y := $(patsubst %/, %/built-in.a, $(virt-y))
|
||||
|
||||
# Externally visible symbols (used by link-vmlinux.sh)
|
||||
export KBUILD_VMLINUX_OBJS := $(head-y) $(init-y) $(core-y) $(libs-y2) \
|
||||
$(drivers-y) $(net-y) $(virt-y)
|
||||
export KBUILD_VMLINUX_LIBS := $(libs-y1)
|
||||
KBUILD_VMLINUX_OBJS := $(head-y) $(patsubst %/,%/built-in.a, $(core-y))
|
||||
KBUILD_VMLINUX_OBJS += $(addsuffix built-in.a, $(filter %/, $(libs-y)))
|
||||
ifdef CONFIG_MODULES
|
||||
KBUILD_VMLINUX_OBJS += $(patsubst %/, %/lib.a, $(filter %/, $(libs-y)))
|
||||
KBUILD_VMLINUX_LIBS := $(filter-out %/, $(libs-y))
|
||||
else
|
||||
KBUILD_VMLINUX_LIBS := $(patsubst %/,%/lib.a, $(libs-y))
|
||||
endif
|
||||
KBUILD_VMLINUX_OBJS += $(patsubst %/,%/built-in.a, $(drivers-y))
|
||||
|
||||
export KBUILD_VMLINUX_OBJS KBUILD_VMLINUX_LIBS
|
||||
export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds
|
||||
export LDFLAGS_vmlinux
|
||||
# used by scripts/Makefile.package
|
||||
@@ -1087,16 +1122,14 @@ vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)
|
||||
# Recurse until adjust_autoksyms.sh is satisfied
|
||||
PHONY += autoksyms_recursive
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
autoksyms_recursive: descend modules.order
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||
endif
|
||||
|
||||
# For the kernel to actually contain only the needed exported symbols,
|
||||
# we have to build modules as well to determine what those symbols are.
|
||||
# (this can be evaluated only once include/config/auto.conf has been included)
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
KBUILD_MODULES := 1
|
||||
KBUILD_MODULES := 1
|
||||
|
||||
autoksyms_recursive: descend modules.order
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||
endif
|
||||
|
||||
autoksyms_h := $(if $(CONFIG_TRIM_UNUSED_KSYMS), include/generated/autoksyms.h)
|
||||
@@ -1122,7 +1155,7 @@ targets := vmlinux
|
||||
|
||||
# The actual objects are generated when descending,
|
||||
# make sure no implicit rule kicks in
|
||||
$(sort $(vmlinux-deps)): descend ;
|
||||
$(sort $(vmlinux-deps) $(subdir-modorder)): descend ;
|
||||
|
||||
filechk_kernel.release = \
|
||||
echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
||||
@@ -1147,7 +1180,8 @@ scripts: scripts_basic scripts_dtc
|
||||
PHONY += prepare archprepare
|
||||
|
||||
archprepare: outputmakefile archheaders archscripts scripts include/config/kernel.release \
|
||||
asm-generic $(version_h) $(autoksyms_h) include/generated/utsrelease.h
|
||||
asm-generic $(version_h) $(autoksyms_h) include/generated/utsrelease.h \
|
||||
include/generated/autoconf.h
|
||||
|
||||
prepare0: archprepare
|
||||
$(Q)$(MAKE) $(build)=scripts/mod
|
||||
@@ -1315,12 +1349,29 @@ dt_binding_check: scripts_dtc
|
||||
# ---------------------------------------------------------------------------
|
||||
# Modules
|
||||
|
||||
# install modules.builtin regardless of CONFIG_MODULES
|
||||
PHONY += _builtin_inst_
|
||||
_builtin_inst_:
|
||||
@mkdir -p $(MODLIB)/
|
||||
@cp -f modules.builtin $(MODLIB)/
|
||||
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
|
||||
|
||||
PHONY += install
|
||||
install: _builtin_inst_
|
||||
|
||||
ifdef CONFIG_MODULES
|
||||
|
||||
# By default, build modules as well
|
||||
|
||||
all: modules
|
||||
|
||||
# When we're building modules with modversions, we need to consider
|
||||
# the built-in objects during the descend as well, in order to
|
||||
# make sure the checksums are up to date before we record them.
|
||||
ifdef CONFIG_MODVERSIONS
|
||||
KBUILD_BUILTIN := 1
|
||||
endif
|
||||
|
||||
# Build modules
|
||||
#
|
||||
# A module can be listed more than once in obj-m resulting in
|
||||
@@ -1328,12 +1379,19 @@ all: modules
|
||||
# using awk while concatenating to the final file.
|
||||
|
||||
PHONY += modules
|
||||
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules.order
|
||||
modules: $(if $(KBUILD_BUILTIN),vmlinux) modules_check
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh
|
||||
|
||||
modules.order: descend
|
||||
$(Q)$(AWK) '!x[$$0]++' $(addsuffix /$@, $(build-dirs)) > $@
|
||||
PHONY += modules_check
|
||||
modules_check: modules.order
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules-check.sh $<
|
||||
|
||||
cmd_modules_order = $(AWK) '!x[$$0]++' $(real-prereqs) > $@
|
||||
|
||||
modules.order: $(subdir-modorder) FORCE
|
||||
$(call if_changed,modules_order)
|
||||
|
||||
targets += modules.order
|
||||
|
||||
# Target to prepare building external modules
|
||||
PHONY += modules_prepare
|
||||
@@ -1344,7 +1402,7 @@ PHONY += modules_install
|
||||
modules_install: _modinst_ _modinst_post
|
||||
|
||||
PHONY += _modinst_
|
||||
_modinst_:
|
||||
_modinst_: _builtin_inst_
|
||||
@rm -rf $(MODLIB)/kernel
|
||||
@rm -f $(MODLIB)/source
|
||||
@mkdir -p $(MODLIB)/kernel
|
||||
@@ -1354,8 +1412,6 @@ _modinst_:
|
||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||
fi
|
||||
@sed 's:^:kernel/:' modules.order > $(MODLIB)/modules.order
|
||||
@cp -f modules.builtin $(MODLIB)/
|
||||
@cp -f $(objtree)/modules.builtin.modinfo $(MODLIB)/
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
|
||||
|
||||
# This depmod is only for convenience to give the initial
|
||||
@@ -1395,14 +1451,14 @@ endif # CONFIG_MODULES
|
||||
# make distclean Remove editor backup files, patch leftover files and the like
|
||||
|
||||
# Directories & files removed with 'make clean'
|
||||
CLEAN_DIRS += include/ksym
|
||||
CLEAN_FILES += modules.builtin modules.builtin.modinfo modules.nsdeps
|
||||
CLEAN_FILES += include/ksym vmlinux.symvers \
|
||||
modules.builtin modules.builtin.modinfo modules.nsdeps
|
||||
|
||||
# Directories & files removed with 'make mrproper'
|
||||
MRPROPER_DIRS += include/config include/generated \
|
||||
MRPROPER_FILES += include/config include/generated \
|
||||
arch/$(SRCARCH)/include/generated .tmp_objdiff \
|
||||
debian/ snap/ tar-install/
|
||||
MRPROPER_FILES += .config .config.old .version \
|
||||
debian snap tar-install \
|
||||
.config .config.old .version \
|
||||
Module.symvers \
|
||||
signing_key.pem signing_key.priv signing_key.x509 \
|
||||
x509.genkey extra_certificates signing_key.x509.keyid \
|
||||
@@ -1410,12 +1466,10 @@ MRPROPER_FILES += .config .config.old .version \
|
||||
*.spec
|
||||
|
||||
# Directories & files removed with 'make distclean'
|
||||
DISTCLEAN_DIRS +=
|
||||
DISTCLEAN_FILES += tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
|
||||
|
||||
# clean - Delete most, but leave enough to build external modules
|
||||
#
|
||||
clean: rm-dirs := $(CLEAN_DIRS)
|
||||
clean: rm-files := $(CLEAN_FILES)
|
||||
|
||||
PHONY += archclean vmlinuxclean
|
||||
@@ -1428,7 +1482,6 @@ clean: archclean vmlinuxclean
|
||||
|
||||
# mrproper - Delete all generated files, including .config
|
||||
#
|
||||
mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
|
||||
mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
|
||||
mrproper-dirs := $(addprefix _mrproper_,scripts)
|
||||
|
||||
@@ -1437,18 +1490,15 @@ $(mrproper-dirs):
|
||||
$(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
|
||||
|
||||
mrproper: clean $(mrproper-dirs)
|
||||
$(call cmd,rmdirs)
|
||||
$(call cmd,rmfiles)
|
||||
|
||||
# distclean
|
||||
#
|
||||
distclean: rm-dirs := $(wildcard $(DISTCLEAN_DIRS))
|
||||
distclean: rm-files := $(wildcard $(DISTCLEAN_FILES))
|
||||
|
||||
PHONY += distclean
|
||||
|
||||
distclean: mrproper
|
||||
$(call cmd,rmdirs)
|
||||
$(call cmd,rmfiles)
|
||||
@find $(srctree) $(RCS_FIND_IGNORE) \
|
||||
\( -name '*.orig' -o -name '*.rej' -o -name '*~' \
|
||||
@@ -1634,17 +1684,9 @@ else # KBUILD_EXTMOD
|
||||
# We are always building modules
|
||||
KBUILD_MODULES := 1
|
||||
|
||||
PHONY += $(objtree)/Module.symvers
|
||||
$(objtree)/Module.symvers:
|
||||
@test -e $(objtree)/Module.symvers || ( \
|
||||
echo; \
|
||||
echo " WARNING: Symbol version dump $(objtree)/Module.symvers"; \
|
||||
echo " is missing; modules will have no dependencies and modversions."; \
|
||||
echo )
|
||||
|
||||
build-dirs := $(KBUILD_EXTMOD)
|
||||
PHONY += modules
|
||||
modules: descend $(objtree)/Module.symvers
|
||||
modules: descend
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||
|
||||
PHONY += modules_install
|
||||
@@ -1663,10 +1705,6 @@ _emodinst_post: _emodinst_
|
||||
clean-dirs := $(KBUILD_EXTMOD)
|
||||
clean: rm-files := $(KBUILD_EXTMOD)/Module.symvers $(KBUILD_EXTMOD)/modules.nsdeps
|
||||
|
||||
PHONY += /
|
||||
/:
|
||||
@echo >&2 '"$(MAKE) /" is no longer supported. Please use "$(MAKE) ./" instead.'
|
||||
|
||||
PHONY += help
|
||||
help:
|
||||
@echo ' Building external modules.'
|
||||
@@ -1724,6 +1762,10 @@ build-dirs := $(foreach d, $(build-dirs), \
|
||||
|
||||
endif
|
||||
|
||||
ifndef CONFIG_MODULES
|
||||
KBUILD_MODULES :=
|
||||
endif
|
||||
|
||||
# Handle descending into subdirectories listed in $(build-dirs)
|
||||
# Preset locale variables to speed up the build process. Limit locale
|
||||
# tweaks to this spot to avoid wrong language settings when running
|
||||
@@ -1742,7 +1784,6 @@ $(clean-dirs):
|
||||
$(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
|
||||
|
||||
clean: $(clean-dirs)
|
||||
$(call cmd,rmdirs)
|
||||
$(call cmd,rmfiles)
|
||||
@find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
|
||||
\( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \
|
||||
@@ -1837,14 +1878,8 @@ tools/%: FORCE
|
||||
$(Q)mkdir -p $(objtree)/tools
|
||||
$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $*
|
||||
|
||||
# FIXME Should go into a make.lib or something
|
||||
# ===========================================================================
|
||||
|
||||
quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
|
||||
cmd_rmdirs = rm -rf $(rm-dirs)
|
||||
|
||||
quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
|
||||
cmd_rmfiles = rm -f $(rm-files)
|
||||
cmd_rmfiles = rm -rf $(rm-files)
|
||||
|
||||
# Run depmod only if we have System.map and depmod is executable
|
||||
quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
||||
|
||||
@@ -45,12 +45,10 @@ endif
|
||||
ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
|
||||
KBUILD_CPPFLAGS += -mbig-endian
|
||||
CHECKFLAGS += -D__ARMEB__
|
||||
AS += -EB
|
||||
KBUILD_LDFLAGS += -EB
|
||||
else
|
||||
KBUILD_CPPFLAGS += -mlittle-endian
|
||||
CHECKFLAGS += -D__ARMEL__
|
||||
AS += -EL
|
||||
KBUILD_LDFLAGS += -EL
|
||||
endif
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ trap 'rm -f "$XIPIMAGE.tmp"; exit 1' 1 2 3
|
||||
# substitute the data section by a compressed version
|
||||
$DD if="$XIPIMAGE" count=$data_start iflag=count_bytes of="$XIPIMAGE.tmp"
|
||||
$DD if="$XIPIMAGE" skip=$data_start iflag=skip_bytes |
|
||||
gzip -9 >> "$XIPIMAGE.tmp"
|
||||
$_GZIP -9 >> "$XIPIMAGE.tmp"
|
||||
|
||||
# replace kernel binary
|
||||
mv -f "$XIPIMAGE.tmp" "$XIPIMAGE"
|
||||
|
||||
@@ -94,7 +94,6 @@ endif
|
||||
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
||||
KBUILD_CPPFLAGS += -mbig-endian
|
||||
CHECKFLAGS += -D__AARCH64EB__
|
||||
AS += -EB
|
||||
# Prefer the baremetal ELF build target, but not all toolchains include
|
||||
# it so fall back to the standard linux version if needed.
|
||||
KBUILD_LDFLAGS += -EB $(call ld-option, -maarch64elfb, -maarch64linuxb)
|
||||
@@ -102,7 +101,6 @@ UTS_MACHINE := aarch64_be
|
||||
else
|
||||
KBUILD_CPPFLAGS += -mlittle-endian
|
||||
CHECKFLAGS += -D__AARCH64EL__
|
||||
AS += -EL
|
||||
# Same as above, prefer ELF but fall back to linux target if needed.
|
||||
KBUILD_LDFLAGS += -EL $(call ld-option, -maarch64elf, -maarch64linux)
|
||||
UTS_MACHINE := aarch64
|
||||
|
||||
@@ -18,7 +18,7 @@ CONFIG_MEMORY_START ?= 0x00400000
|
||||
CONFIG_BOOT_LINK_OFFSET ?= 0x00280000
|
||||
IMAGE_OFFSET := $(shell printf "0x%08x" $$(($(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET))))
|
||||
|
||||
LIBGCC := $(shell $(CROSS-COMPILE)$(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
|
||||
LIBGCC := $(shell $(CROSS-COMPILE)$(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name 2>/dev/null)
|
||||
LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -estartup -T $(obj)/vmlinux.lds \
|
||||
--defsym output=$(CONFIG_MEMORY_START)
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ TIR_NAME := r19
|
||||
KBUILD_CFLAGS += -ffixed-$(TIR_NAME) -DTHREADINFO_REG=$(TIR_NAME) -D__linux__
|
||||
KBUILD_AFLAGS += -DTHREADINFO_REG=$(TIR_NAME)
|
||||
|
||||
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)
|
||||
LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name 2>/dev/null)
|
||||
libs-y += $(LIBGCC)
|
||||
|
||||
head-y := arch/hexagon/kernel/head.o
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ $(error Sorry, you need a newer version of the assember, one that is built from
|
||||
endif
|
||||
|
||||
quiet_cmd_gzip = GZIP $@
|
||||
cmd_gzip = cat $(real-prereqs) | gzip -n -f -9 > $@
|
||||
cmd_gzip = cat $(real-prereqs) | $(_GZIP) -n -f -9 > $@
|
||||
|
||||
quiet_cmd_objcopy = OBJCOPY $@
|
||||
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
|
||||
|
||||
+4
-4
@@ -135,10 +135,10 @@ vmlinux.gz: vmlinux
|
||||
ifndef CONFIG_KGDB
|
||||
cp vmlinux vmlinux.tmp
|
||||
$(STRIP) vmlinux.tmp
|
||||
gzip -9c vmlinux.tmp >vmlinux.gz
|
||||
$(_GZIP) -9c vmlinux.tmp >vmlinux.gz
|
||||
rm vmlinux.tmp
|
||||
else
|
||||
gzip -9c vmlinux >vmlinux.gz
|
||||
$(_GZIP) -9c vmlinux >vmlinux.gz
|
||||
endif
|
||||
|
||||
bzImage: vmlinux.bz2
|
||||
@@ -148,10 +148,10 @@ vmlinux.bz2: vmlinux
|
||||
ifndef CONFIG_KGDB
|
||||
cp vmlinux vmlinux.tmp
|
||||
$(STRIP) vmlinux.tmp
|
||||
bzip2 -1c vmlinux.tmp >vmlinux.bz2
|
||||
$(_BZIP2) -1c vmlinux.tmp >vmlinux.bz2
|
||||
rm vmlinux.tmp
|
||||
else
|
||||
bzip2 -1c vmlinux >vmlinux.bz2
|
||||
$(_BZIP2) -1c vmlinux >vmlinux.bz2
|
||||
endif
|
||||
|
||||
archclean:
|
||||
|
||||
@@ -162,7 +162,7 @@ vmlinuz: bzImage
|
||||
$(OBJCOPY) $(boot)/bzImage $@
|
||||
else
|
||||
vmlinuz: vmlinux
|
||||
@gzip -cf -9 $< > $@
|
||||
@$(_GZIP) -cf -9 $< > $@
|
||||
endif
|
||||
|
||||
install:
|
||||
|
||||
+1
-1
@@ -140,7 +140,7 @@ export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE)
|
||||
# When cleaning we don't include .config, so we don't include
|
||||
# TT or skas makefiles and don't clean skas_ptregs.h.
|
||||
CLEAN_FILES += linux x.i gmon.out
|
||||
MRPROPER_DIRS += arch/$(SUBARCH)/include/generated
|
||||
MRPROPER_FILES += arch/$(SUBARCH)/include/generated
|
||||
|
||||
archclean:
|
||||
@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
|
||||
|
||||
@@ -18,9 +18,9 @@ ubd-objs := ubd_kern.o ubd_user.o
|
||||
port-objs := port_kern.o port_user.o
|
||||
harddog-objs := harddog_kern.o harddog_user.o
|
||||
|
||||
LDFLAGS_pcap.o := -r $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libpcap.a)
|
||||
LDFLAGS_pcap.o = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libpcap.a)
|
||||
|
||||
LDFLAGS_vde.o := -r $(shell $(CC) $(CFLAGS) -print-file-name=libvdeplug.a)
|
||||
LDFLAGS_vde.o = $(shell $(CC) $(CFLAGS) -print-file-name=libvdeplug.a)
|
||||
|
||||
targets := pcap_kern.o pcap_user.o vde_kern.o vde_user.o
|
||||
|
||||
|
||||
@@ -10,12 +10,12 @@ lib-y += strncpy_from_user.o strnlen_user.o
|
||||
lib-y += clear_user.o copy_page.o
|
||||
lib-y += copy_from_user.o copy_to_user.o
|
||||
|
||||
GNU_LIBC_A := $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libc.a)
|
||||
GNU_LIBC_A = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libc.a)
|
||||
GNU_LIBC_A_OBJS := memchr.o memcpy.o memmove.o memset.o
|
||||
GNU_LIBC_A_OBJS += strchr.o strrchr.o
|
||||
GNU_LIBC_A_OBJS += rawmemchr.o # needed by strrchr.o
|
||||
|
||||
GNU_LIBGCC_A := $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libgcc.a)
|
||||
GNU_LIBGCC_A = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libgcc.a)
|
||||
GNU_LIBGCC_A_OBJS := _ashldi3.o _ashrdi3.o _lshrdi3.o
|
||||
GNU_LIBGCC_A_OBJS += _divsi3.o _modsi3.o _ucmpdi2.o _umodsi3.o _udivsi3.o
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#ifndef __LINUX_KCONFIG_H
|
||||
#define __LINUX_KCONFIG_H
|
||||
|
||||
/* CONFIG_CC_VERSION_TEXT (Do not delete this comment. See help in Kconfig) */
|
||||
|
||||
#include <generated/autoconf.h>
|
||||
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
|
||||
+27
-3
@@ -8,8 +8,25 @@ config DEFCONFIG_LIST
|
||||
default "/boot/config-$(shell,uname -r)"
|
||||
default "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)"
|
||||
|
||||
config CC_VERSION_TEXT
|
||||
string
|
||||
default "$(CC_VERSION_TEXT)"
|
||||
help
|
||||
This is used in unclear ways:
|
||||
|
||||
- Re-run Kconfig when the compiler is updated
|
||||
The 'default' property references the environment variable,
|
||||
CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd.
|
||||
When the compiler is updated, Kconfig will be invoked.
|
||||
|
||||
- Ensure full rebuild when the compier is updated
|
||||
include/linux/kconfig.h contains this option in the comment line so
|
||||
fixdep adds include/config/cc/version/text.h into the auto-generated
|
||||
dependency. When the compiler is updated, syncconfig will touch it
|
||||
and then every file will be rebuilt.
|
||||
|
||||
config CC_IS_GCC
|
||||
def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
|
||||
def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc)
|
||||
|
||||
config GCC_VERSION
|
||||
int
|
||||
@@ -21,7 +38,7 @@ config LD_VERSION
|
||||
default $(shell,$(LD) --version | $(srctree)/scripts/ld-version.sh)
|
||||
|
||||
config CC_IS_CLANG
|
||||
def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
|
||||
def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q clang)
|
||||
|
||||
config LD_IS_LLD
|
||||
def_bool $(success,$(LD) -v | head -n 1 | grep -q LLD)
|
||||
@@ -31,7 +48,14 @@ config CLANG_VERSION
|
||||
default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
|
||||
|
||||
config CC_CAN_LINK
|
||||
def_bool $(success,$(srctree)/scripts/cc-can-link.sh $(CC))
|
||||
bool
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m64-flag)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(m32-flag))
|
||||
|
||||
config CC_CAN_LINK_STATIC
|
||||
bool
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) -static $(m64-flag)) if 64BIT
|
||||
default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) -static $(m32-flag))
|
||||
|
||||
config CC_HAS_ASM_GOTO
|
||||
def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC))
|
||||
|
||||
+1
-1
@@ -35,4 +35,4 @@ include/generated/compile.h: FORCE
|
||||
@$($(quiet)chk_compile.h)
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkcompile_h $@ \
|
||||
"$(UTS_MACHINE)" "$(CONFIG_SMP)" "$(CONFIG_PREEMPT)" \
|
||||
"$(CONFIG_PREEMPT_RT)" "$(CC)" "$(LD)"
|
||||
"$(CONFIG_PREEMPT_RT)" $(CONFIG_CC_VERSION_TEXT) "$(LD)"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user