Blame view
scripts/Makefile.modpost
3.84 KB
b24413180 License cleanup: ... |
1 |
# SPDX-License-Identifier: GPL-2.0 |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 7 |
# =========================================================================== # Module versions # =========================================================================== # # Stage one of module building created the following: # a) The individual .o files used for the module |
c30fe7f73 fix typos "wich" ... |
8 |
# b) A <module>.o file which is the .o files above linked together |
b7dca6dd1 kbuild: create *.... |
9 10 |
# c) A <module>.mod file, listing the name of the preliminary <module>.o file, # plus all .o files |
ff9b45c55 kbuild: modpost: ... |
11 |
# d) modules.order, which lists all the modules |
1da177e4c Linux-2.6.12-rc2 |
12 13 |
# Stage 2 is handled by this file and does the following |
ff9b45c55 kbuild: modpost: ... |
14 |
# 1) Find all modules listed in modules.order |
1da177e4c Linux-2.6.12-rc2 |
15 16 17 |
# 2) modpost is then used to # 3) create one <module>.mod.c file pr. module # 4) create one Module.symvers file with CRC for all exported symbols |
1da177e4c Linux-2.6.12-rc2 |
18 19 20 |
# Step 3 is used to place certain information in the module's ELF # section, including information such as: |
163d3fe6a kbuild: Fix refer... |
21 |
# Version magic (see include/linux/vermagic.h for full details) |
1da177e4c Linux-2.6.12-rc2 |
22 23 |
# - Kernel release # - SMP is CONFIG_SMP |
4b950bb9a Kbuild: Handle PR... |
24 |
# - PREEMPT is CONFIG_PREEMPT[_RT] |
1da177e4c Linux-2.6.12-rc2 |
25 26 27 28 29 30 31 32 |
# - GCC Version # Module info # - Module version (MODULE_VERSION) # - Module alias'es (MODULE_ALIAS) # - Module license (MODULE_LICENSE) # - See include/linux/module.h for more details # Step 4 is solely used to allow module versioning in external modules, |
4696e2958 trivial: fix a ty... |
33 |
# where the CRC of each module is retrieved from the Module.symvers file. |
1da177e4c Linux-2.6.12-rc2 |
34 |
|
ea837f1c0 kbuild: make modp... |
35 36 37 |
# KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined # symbols in the final module linking stage # KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. |
25985edce Fix common misspe... |
38 |
# This is solely useful to speed up test compiles |
a721588d9 kbuild: modpost: ... |
39 40 41 |
PHONY := __modpost __modpost: |
1da177e4c Linux-2.6.12-rc2 |
42 |
|
c955ccafc kconfig: fix .con... |
43 |
include include/config/auto.conf |
8ec4b4ff1 kbuild: introduce... |
44 |
include scripts/Kbuild.include |
0d96fb20b kbuild: Add new K... |
45 |
|
54b778476 modpost: return e... |
46 47 48 |
MODPOST = scripts/mod/modpost \ $(if $(CONFIG_MODVERSIONS),-m) \ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a) \ |
54b778476 modpost: return e... |
49 |
$(if $(CONFIG_SECTION_MISMATCH_WARN_ONLY),,-E) \ |
bcfedae7d modpost: print sy... |
50 51 |
$(if $(KBUILD_MODPOST_WARN),-w) \ -o $@ |
a721588d9 kbuild: modpost: ... |
52 53 |
ifdef MODPOST_VMLINUX |
bcfedae7d modpost: print sy... |
54 55 |
quiet_cmd_modpost = MODPOST $@ cmd_modpost = $(MODPOST) $< |
a721588d9 kbuild: modpost: ... |
56 |
|
269a535ca modpost: generate... |
57 |
vmlinux.symvers: vmlinux.o |
a721588d9 kbuild: modpost: ... |
58 |
$(call cmd,modpost) |
269a535ca modpost: generate... |
59 |
__modpost: vmlinux.symvers |
bcfedae7d modpost: print sy... |
60 |
|
a721588d9 kbuild: modpost: ... |
61 |
else |
1747269ab modpost: do not p... |
62 |
ifeq ($(KBUILD_EXTMOD),) |
269a535ca modpost: generate... |
63 64 |
input-symdump := vmlinux.symvers |
bcfedae7d modpost: print sy... |
65 |
output-symdump := Module.symvers |
1747269ab modpost: do not p... |
66 |
else |
96d97f262 kbuild: fix $(src... |
67 |
|
fab546e6c kbuild: update co... |
68 |
# set src + obj - they may be used in the modules's Makefile |
96d97f262 kbuild: fix $(src... |
69 70 |
obj := $(KBUILD_EXTMOD) src := $(obj) |
0d96fb20b kbuild: Add new K... |
71 72 73 |
# Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile) |
e3fb4df7f modpost: re-add -... |
74 75 76 |
# modpost option for external modules MODPOST += -e |
f1005b30a modpost: refactor... |
77 |
input-symdump := Module.symvers $(KBUILD_EXTRA_SYMBOLS) |
bcfedae7d modpost: print sy... |
78 |
output-symdump := $(KBUILD_EXTMOD)/Module.symvers |
0d96fb20b kbuild: Add new K... |
79 |
endif |
4e5ab74c3 modpost: pass -N ... |
80 81 |
# modpost options for modules (both in-kernel and external) MODPOST += \ |
436b2ac60 modpost: invoke m... |
82 |
$(addprefix -i ,$(wildcard $(input-symdump))) \ |
859c926ae modpost: move -d ... |
83 |
$(if $(KBUILD_NSDEPS),-d $(MODULES_NSDEPS)) \ |
4e5ab74c3 modpost: pass -N ... |
84 |
$(if $(CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS)$(KBUILD_NSDEPS),-N) |
91e6ee581 modpost: fix -i (... |
85 86 87 88 |
# 'make -i -k' ignores compile errors, and builds as many modules as possible. ifneq ($(findstring i,$(filter-out --%,$(MAKEFLAGS))),) MODPOST += -n endif |
48a0f7279 modpost: show war... |
89 90 |
# Clear VPATH to not search for *.symvers in $(srctree). Check only $(objtree). VPATH := |
436b2ac60 modpost: invoke m... |
91 |
$(input-symdump): |
48a0f7279 modpost: show war... |
92 93 |
@echo >&2 'WARNING: Symbol version dump "$@" is missing.' @echo >&2 ' Modules may not have dependencies or modversions.' |
436b2ac60 modpost: invoke m... |
94 |
|
bcfedae7d modpost: print sy... |
95 |
# Read out modules.order to pass in modpost. |
9b9a3f20c kbuild: split fin... |
96 |
# Otherwise, allmodconfig would fail with "Argument list too long". |
bcfedae7d modpost: print sy... |
97 |
quiet_cmd_modpost = MODPOST $@ |
436b2ac60 modpost: invoke m... |
98 |
cmd_modpost = sed 's/ko$$/o/' $< | $(MODPOST) -T - |
1da177e4c Linux-2.6.12-rc2 |
99 |
|
436b2ac60 modpost: invoke m... |
100 101 102 103 |
$(output-symdump): $(MODORDER) $(input-symdump) FORCE $(call if_changed,modpost) targets += $(output-symdump) |
bcfedae7d modpost: print sy... |
104 105 |
__modpost: $(output-symdump) |
9b9a3f20c kbuild: split fin... |
106 107 108 |
ifneq ($(KBUILD_MODPOST_NOFINAL),1) $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modfinal endif |
4f1933620 kbuild: change kb... |
109 |
|
bcfedae7d modpost: print sy... |
110 111 |
PHONY += FORCE FORCE: |
436b2ac60 modpost: invoke m... |
112 113 114 |
existing-targets := $(wildcard $(sort $(targets))) -include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd) |
a721588d9 kbuild: modpost: ... |
115 |
endif |
4f1933620 kbuild: change kb... |
116 |
.PHONY: $(PHONY) |