Blame view
scripts/Makefile.build
19.6 KB
b24413180 License cleanup: ... |
1 |
# SPDX-License-Identifier: GPL-2.0 |
1da177e4c Linux-2.6.12-rc2 |
2 3 4 5 6 |
# ========================================================================== # Building # ========================================================================== src := $(obj) |
4f1933620 kbuild: change kb... |
7 |
PHONY := __build |
1da177e4c Linux-2.6.12-rc2 |
8 |
__build: |
d72e5edbf kbuild: avoid env... |
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# Init all relevant variables used in kbuild files so # 1) they have correct type # 2) they do not inherit any value from the environment obj-y := obj-m := lib-y := lib-m := always := targets := subdir-y := subdir-m := EXTRA_AFLAGS := EXTRA_CFLAGS := EXTRA_CPPFLAGS := EXTRA_LDFLAGS := |
f77bf0142 kbuild: introduce... |
24 25 26 27 |
asflags-y := ccflags-y := cppflags-y := ldflags-y := |
d72e5edbf kbuild: avoid env... |
28 |
|
720097d89 kbuild: introduce... |
29 30 |
subdir-asflags-y := subdir-ccflags-y := |
3156fd052 kbuild: fix some ... |
31 |
# Read auto.conf if it exists, otherwise ignore |
c955ccafc kconfig: fix .con... |
32 |
-include include/config/auto.conf |
1da177e4c Linux-2.6.12-rc2 |
33 |
|
20a468b51 kbuild: make cc-v... |
34 |
include scripts/Kbuild.include |
3156fd052 kbuild: fix some ... |
35 |
# For backward compatibility check that these variables do not change |
0c53c8e6e kbuild: check for... |
36 |
save-cflags := $(CFLAGS) |
2a6914703 kbuild: fix make ... |
37 |
# The filename Kbuild has precedence over Makefile |
db8c1a7b2 kbuild: fix build... |
38 |
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src)) |
0c53c8e6e kbuild: check for... |
39 40 41 42 43 44 |
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile) include $(kbuild-file) # If the save-* variables changed error out ifeq ($(KBUILD_NOPEDANTIC),) ifneq ("$(save-cflags)","$(CFLAGS)") |
49c57d254 scripts/Makefile.... |
45 |
$(error CFLAGS was changed in "$(kbuild-file)". Fix it to use ccflags-y) |
0c53c8e6e kbuild: check for... |
46 47 |
endif endif |
4a5838ad9 kbuild: Add extra... |
48 |
|
1da177e4c Linux-2.6.12-rc2 |
49 50 51 52 53 54 55 56 |
include scripts/Makefile.lib ifdef host-progs ifneq ($(hostprogs-y),$(host-progs)) $(warning kbuild: $(obj)/Makefile - Usage of host-progs is deprecated. Please replace with hostprogs-y!) hostprogs-y += $(host-progs) endif endif |
3156fd052 kbuild: fix some ... |
57 |
# Do not include host rules unless needed |
244038743 Shared library su... |
58 |
ifneq ($(hostprogs-y)$(hostprogs-m)$(hostlibs-y)$(hostlibs-m)$(hostcxxlibs-y)$(hostcxxlibs-m),) |
1da177e4c Linux-2.6.12-rc2 |
59 60 61 62 63 64 65 66 67 68 69 |
include scripts/Makefile.host endif ifneq ($(KBUILD_SRC),) # Create output directory if not already present _dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj)) # Create directories for object files if directory does not exist # Needed when obj-y := dir/file.o syntax is used _dummy := $(foreach d,$(obj-dirs), $(shell [ -d $(d) ] || mkdir -p $(d))) endif |
1da177e4c Linux-2.6.12-rc2 |
70 71 72 73 74 |
ifndef obj $(warning kbuild: Makefile.build is included improperly) endif # =========================================================================== |
a4954fd77 kbuild: remove ob... |
75 |
ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),) |
1da177e4c Linux-2.6.12-rc2 |
76 |
lib-target := $(obj)/lib.a |
7f2084fa5 [kbuild] handle e... |
77 |
obj-y += $(obj)/lib-ksyms.o |
1da177e4c Linux-2.6.12-rc2 |
78 |
endif |
a4954fd77 kbuild: remove ob... |
79 |
ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),) |
1da177e4c Linux-2.6.12-rc2 |
80 81 |
builtin-target := $(obj)/built-in.o endif |
551559e13 kbuild: implement... |
82 |
modorder-target := $(obj)/modules.order |
1da177e4c Linux-2.6.12-rc2 |
83 84 85 |
# We keep a list of all modules in $(MODVERDIR) __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \ |
551559e13 kbuild: implement... |
86 |
$(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \ |
1da177e4c Linux-2.6.12-rc2 |
87 88 89 90 91 92 93 94 95 96 97 98 99 |
$(subdir-ym) $(always) @: # Linus' kernel sanity checking tool ifneq ($(KBUILD_CHECKSRC),0) ifeq ($(KBUILD_CHECKSRC),2) quiet_cmd_force_checksrc = CHECK $< cmd_force_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ; else quiet_cmd_checksrc = CHECK $< cmd_checksrc = $(CHECK) $(CHECKFLAGS) $(c_flags) $< ; endif endif |
91341d4b2 kbuild: introduce... |
100 101 102 103 |
# Do section mismatch analysis for each module/built-in.o ifdef CONFIG_DEBUG_SECTION_MISMATCH cmd_secanalysis = ; scripts/mod/modpost $@ endif |
1da177e4c Linux-2.6.12-rc2 |
104 105 106 107 108 |
# Compile C sources (.c) # --------------------------------------------------------------------------- # Default is built-in, unless we know otherwise |
6588169d5 kbuild: allow ass... |
109 110 111 |
modkern_cflags = \ $(if $(part-of-module), \ $(KBUILD_CFLAGS_MODULE) $(CFLAGS_MODULE), \ |
80c00ba94 kbuild: allow ass... |
112 |
$(KBUILD_CFLAGS_KERNEL) $(CFLAGS_KERNEL)) |
1da177e4c Linux-2.6.12-rc2 |
113 |
quiet_modtag := $(empty) $(empty) |
18c167fd6 ftrace, ia64: mak... |
114 115 116 117 |
$(real-objs-m) : part-of-module := y $(real-objs-m:.o=.i) : part-of-module := y $(real-objs-m:.o=.s) : part-of-module := y $(real-objs-m:.o=.lst): part-of-module := y |
1da177e4c Linux-2.6.12-rc2 |
118 119 120 121 122 123 124 125 126 |
$(real-objs-m) : quiet_modtag := [M] $(real-objs-m:.o=.i) : quiet_modtag := [M] $(real-objs-m:.o=.s) : quiet_modtag := [M] $(real-objs-m:.o=.lst): quiet_modtag := [M] $(obj-m) : quiet_modtag := [M] # Default for not multi-part modules |
5e8d780d7 kbuild: fix ia64 ... |
127 |
modname = $(basetarget) |
1da177e4c Linux-2.6.12-rc2 |
128 129 130 131 132 133 134 135 136 137 138 |
$(multi-objs-m) : modname = $(modname-multi) $(multi-objs-m:.o=.i) : modname = $(modname-multi) $(multi-objs-m:.o=.s) : modname = $(modname-multi) $(multi-objs-m:.o=.lst) : modname = $(modname-multi) $(multi-objs-y) : modname = $(modname-multi) $(multi-objs-y:.o=.i) : modname = $(modname-multi) $(multi-objs-y:.o=.s) : modname = $(modname-multi) $(multi-objs-y:.o=.lst) : modname = $(modname-multi) quiet_cmd_cc_s_c = CC $(quiet_modtag) $@ |
1e64ff42e Kbuild, lto: Disa... |
139 |
cmd_cc_s_c = $(CC) $(c_flags) $(DISABLE_LTO) -fverbose-asm -S -o $@ $< |
1da177e4c Linux-2.6.12-rc2 |
140 |
|
767e581d7 kbuild: enable us... |
141 |
$(obj)/%.s: $(src)/%.c FORCE |
1da177e4c Linux-2.6.12-rc2 |
142 |
$(call if_changed_dep,cc_s_c) |
23d438487 kbuild: rename cm... |
143 144 |
quiet_cmd_cpp_i_c = CPP $(quiet_modtag) $@ cmd_cpp_i_c = $(CPP) $(c_flags) -o $@ $< |
1da177e4c Linux-2.6.12-rc2 |
145 |
|
767e581d7 kbuild: enable us... |
146 |
$(obj)/%.i: $(src)/%.c FORCE |
23d438487 kbuild: rename cm... |
147 |
$(call if_changed_dep,cpp_i_c) |
1da177e4c Linux-2.6.12-rc2 |
148 |
|
4efca4ed0 kbuild: modversio... |
149 150 |
# These mirror gensymtypes_S and co below, keep them in synch. cmd_gensymtypes_c = \ |
37a8d9f67 kbuild: simplify ... |
151 |
$(CPP) -D__GENKSYMS__ $(c_flags) $< | \ |
d70f82acf genksyms: pass sy... |
152 153 |
$(GENKSYMS) $(if $(1), -T $(2)) \ $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \ |
56067812d kbuild: modversio... |
154 |
$(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS)) \ |
37a8d9f67 kbuild: simplify ... |
155 |
$(if $(KBUILD_PRESERVE),-p) \ |
e26d6b834 Makefile.build: m... |
156 |
-r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null)) |
37a8d9f67 kbuild: simplify ... |
157 |
|
15fde6751 kbuild: support f... |
158 |
quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ |
37a8d9f67 kbuild: simplify ... |
159 160 |
cmd_cc_symtypes_c = \ set -e; \ |
4efca4ed0 kbuild: modversio... |
161 |
$(call cmd_gensymtypes_c,true,$@) >/dev/null; \ |
37a8d9f67 kbuild: simplify ... |
162 |
test -s $@ || rm -f $@ |
15fde6751 kbuild: support f... |
163 |
|
767e581d7 kbuild: enable us... |
164 |
$(obj)/%.symtypes : $(src)/%.c FORCE |
64e6c1e12 genksyms: track s... |
165 |
$(call cmd,cc_symtypes_c) |
15fde6751 kbuild: support f... |
166 |
|
433db3e26 kbuild: Add suppo... |
167 168 169 170 171 172 173 |
# LLVM assembly # Generate .ll files from .c quiet_cmd_cc_ll_c = CC $(quiet_modtag) $@ cmd_cc_ll_c = $(CC) $(c_flags) -emit-llvm -S -o $@ $< $(obj)/%.ll: $(src)/%.c FORCE $(call if_changed_dep,cc_ll_c) |
1da177e4c Linux-2.6.12-rc2 |
174 175 176 177 178 179 180 181 182 183 184 |
# C (.c) files # The C file is compiled and updated dependency information is generated. # (See cmd_cc_o_c + relevant part of rule_cc_o_c) quiet_cmd_cc_o_c = CC $(quiet_modtag) $@ ifndef CONFIG_MODVERSIONS cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< else # When module versioning is enabled the following steps are executed: |
2ea038917 Revert "kbuild: s... |
185 186 187 |
# o compile a .tmp_<file>.o from <file>.c # o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does # not export symbols, we just rename .tmp_<file>.o to <file>.o and |
1da177e4c Linux-2.6.12-rc2 |
188 189 190 |
# are done. # o otherwise, we calculate symbol versions using the good old # genksyms on the preprocessed source and postprocess them in a way |
2ea038917 Revert "kbuild: s... |
191 192 193 194 |
# that they are usable as a linker script # o generate <file>.o from .tmp_<file>.o using the linker to # replace the unresolved symbols __crc_exported_symbol with # the actual value of the checksum generated by genksyms |
1da177e4c Linux-2.6.12-rc2 |
195 |
|
2ea038917 Revert "kbuild: s... |
196 |
cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $< |
4efca4ed0 kbuild: modversio... |
197 198 |
cmd_modversions_c = \ |
e26d6b834 Makefile.build: m... |
199 |
if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \ |
4efca4ed0 kbuild: modversio... |
200 |
$(call cmd_gensymtypes_c,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \ |
e26d6b834 Makefile.build: m... |
201 202 203 204 205 206 207 |
> $(@D)/.tmp_$(@F:.o=.ver); \ \ $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \ -T $(@D)/.tmp_$(@F:.o=.ver); \ rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \ else \ mv -f $(@D)/.tmp_$(@F) $@; \ |
1da177e4c Linux-2.6.12-rc2 |
208 209 |
fi; endif |
8da3821ba ftrace: create __... |
210 |
ifdef CONFIG_FTRACE_MCOUNT_RECORD |
72441cb1f ftrace/x86: Add s... |
211 |
ifdef BUILD_C_RECORDMCOUNT |
85356f802 kbuild/recordmcou... |
212 213 214 |
ifeq ("$(origin RECORDMCOUNT_WARN)", "command line") RECORDMCOUNT_FLAGS = -w endif |
d7b4d6de5 ftrace: Remove re... |
215 216 |
# Due to recursion, we must skip empty.o. # The empty.o file is created in the make process in order to determine |
312a3d091 kbuild: trivial c... |
217 218 |
# the target endianness and word size. It is made before all other C # files, including recordmcount. |
45677454d ftrace: Speed up ... |
219 220 |
sub_cmd_record_mcount = \ if [ $(@) != "scripts/mod/empty.o" ]; then \ |
85356f802 kbuild/recordmcou... |
221 |
$(objtree)/scripts/recordmcount $(RECORDMCOUNT_FLAGS) "$(@)"; \ |
45677454d ftrace: Speed up ... |
222 |
fi; |
d6971822c ftrace/kbuild: Ad... |
223 224 |
recordmcount_source := $(srctree)/scripts/recordmcount.c \ $(srctree)/scripts/recordmcount.h |
72441cb1f ftrace/x86: Add s... |
225 |
else |
45677454d ftrace: Speed up ... |
226 |
sub_cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \ |
e6299d267 MIPS: Tracing: Ad... |
227 |
"$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \ |
b3acf29af ftrace, kbuild: c... |
228 |
"$(if $(CONFIG_64BIT),64,32)" \ |
487467e7d ftrace: Build wit... |
229 |
"$(OBJDUMP)" "$(OBJCOPY)" "$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)" \ |
f9810a825 ARM: 6317/1: ftra... |
230 |
"$(LD)" "$(NM)" "$(RM)" "$(MV)" \ |
18c167fd6 ftrace, ia64: mak... |
231 |
"$(if $(part-of-module),1,0)" "$(@)"; |
d6971822c ftrace/kbuild: Ad... |
232 |
recordmcount_source := $(srctree)/scripts/recordmcount.pl |
312a3d091 kbuild: trivial c... |
233 |
endif # BUILD_C_RECORDMCOUNT |
c0a80c0c2 ftrace: allow arc... |
234 235 236 |
cmd_record_mcount = \ if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \ "$(CC_FLAGS_FTRACE)" ]; then \ |
45677454d ftrace: Speed up ... |
237 238 |
$(sub_cmd_record_mcount) \ fi; |
312a3d091 kbuild: trivial c... |
239 |
endif # CONFIG_FTRACE_MCOUNT_RECORD |
8da3821ba ftrace: create __... |
240 |
|
b9ab5ebb1 objtool: Add CONF... |
241 |
ifdef CONFIG_STACK_VALIDATION |
3b27a0c85 objtool: Detect a... |
242 |
ifneq ($(SKIP_STACK_VALIDATION),1) |
b9ab5ebb1 objtool: Add CONF... |
243 244 |
__objtool_obj := $(objtree)/tools/objtool/objtool |
8af220c9e x86/unwind: Renam... |
245 |
objtool_args = $(if $(CONFIG_UNWINDER_ORC),orc generate,check) |
ee9f8fce9 x86/unwind: Add t... |
246 |
|
a69898c9e objtool: Add modu... |
247 |
objtool_args += $(if $(part-of-module), --module,) |
b9ab5ebb1 objtool: Add CONF... |
248 249 250 |
ifndef CONFIG_FRAME_POINTER objtool_args += --no-fp endif |
867ac9d73 objtool: Fix gcov... |
251 252 |
ifdef CONFIG_GCOV_KERNEL objtool_args += --no-unreachable |
da541b200 objtool: Skip unr... |
253 254 |
else objtool_args += $(call cc-ifversion, -lt, 0405, --no-unreachable) |
867ac9d73 objtool: Fix gcov... |
255 |
endif |
e6993149f objtool: Add retp... |
256 257 258 |
ifdef CONFIG_RETPOLINE objtool_args += --retpoline endif |
b9ab5ebb1 objtool: Add CONF... |
259 |
|
f41b2d7ee objtool: Fix seg ... |
260 261 262 263 264 |
ifdef CONFIG_MODVERSIONS objtool_o = $(@D)/.tmp_$(@F) else objtool_o = $(@) endif |
b9ab5ebb1 objtool: Add CONF... |
265 266 267 268 269 |
# 'OBJECT_FILES_NON_STANDARD := y': skip objtool checking for a directory # 'OBJECT_FILES_NON_STANDARD_foo.o := 'y': skip objtool checking for a file # 'OBJECT_FILES_NON_STANDARD_foo.o := 'n': override directory skip for a file cmd_objtool = $(if $(patsubst y%,, \ $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \ |
f41b2d7ee objtool: Fix seg ... |
270 |
$(__objtool_obj) $(objtool_args) "$(objtool_o)";) |
b9ab5ebb1 objtool: Add CONF... |
271 272 273 |
objtool_obj = $(if $(patsubst y%,, \ $(OBJECT_FILES_NON_STANDARD_$(basetarget).o)$(OBJECT_FILES_NON_STANDARD)n), \ $(__objtool_obj)) |
3b27a0c85 objtool: Detect a... |
274 |
endif # SKIP_STACK_VALIDATION |
b9ab5ebb1 objtool: Add CONF... |
275 |
endif # CONFIG_STACK_VALIDATION |
ee9f8fce9 x86/unwind: Add t... |
276 277 278 279 |
# Rebuild all objects when objtool changes, or is enabled/disabled. objtool_dep = $(objtool_obj) \ $(wildcard include/config/orc/unwinder.h \ include/config/stack/validation.h) |
1da177e4c Linux-2.6.12-rc2 |
280 |
define rule_cc_o_c |
6176aa9ae kbuild: consolida... |
281 |
$(call echo-cmd,checksrc) $(cmd_checksrc) \ |
e4aca4595 kbuild: de-duplic... |
282 |
$(call cmd_and_fixdep,cc_o_c) \ |
e8a3118e1 objtool: make it ... |
283 |
$(call echo-cmd,objtool) $(cmd_objtool) \ |
f41b2d7ee objtool: Fix seg ... |
284 |
$(cmd_modversions_c) \ |
e4aca4595 kbuild: de-duplic... |
285 |
$(call echo-cmd,record_mcount) $(cmd_record_mcount) |
1da177e4c Linux-2.6.12-rc2 |
286 |
endef |
b9ab5ebb1 objtool: Add CONF... |
287 |
define rule_as_o_S |
e4aca4595 kbuild: de-duplic... |
288 |
$(call cmd_and_fixdep,as_o_S) \ |
f41b2d7ee objtool: Fix seg ... |
289 290 |
$(call echo-cmd,objtool) $(cmd_objtool) \ $(cmd_modversions_S) |
b9ab5ebb1 objtool: Add CONF... |
291 |
endef |
9895c03d4 kbuild: record ne... |
292 293 294 295 296 297 |
# List module undefined symbols (or empty line if not enabled) ifdef CONFIG_TRIM_UNUSED_KSYMS cmd_undef_syms = $(NM) $@ | sed -n 's/^ \+U //p' | xargs echo else cmd_undef_syms = echo endif |
1da177e4c Linux-2.6.12-rc2 |
298 |
# Built-in and composite module parts |
ee9f8fce9 x86/unwind: Add t... |
299 |
$(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE |
1da177e4c Linux-2.6.12-rc2 |
300 301 302 303 |
$(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) # Single-part modules are special since we need to mark them in $(MODVERDIR) |
ee9f8fce9 x86/unwind: Add t... |
304 |
$(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE |
1da177e4c Linux-2.6.12-rc2 |
305 306 |
$(call cmd,force_checksrc) $(call if_changed_rule,cc_o_c) |
9895c03d4 kbuild: record ne... |
307 308 |
@{ echo $(@:.o=.ko); echo $@; \ $(cmd_undef_syms); } > $(MODVERDIR)/$(@F:.o=.mod) |
1da177e4c Linux-2.6.12-rc2 |
309 310 311 312 313 |
quiet_cmd_cc_lst_c = MKLST $@ cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \ $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \ System.map $(OBJDUMP) > $@ |
767e581d7 kbuild: enable us... |
314 |
$(obj)/%.lst: $(src)/%.c FORCE |
1da177e4c Linux-2.6.12-rc2 |
315 316 317 318 |
$(call if_changed_dep,cc_lst_c) # Compile assembler sources (.S) # --------------------------------------------------------------------------- |
80c00ba94 kbuild: allow ass... |
319 |
modkern_aflags := $(KBUILD_AFLAGS_KERNEL) $(AFLAGS_KERNEL) |
1da177e4c Linux-2.6.12-rc2 |
320 |
|
6588169d5 kbuild: allow ass... |
321 322 |
$(real-objs-m) : modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE) $(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE) |
1da177e4c Linux-2.6.12-rc2 |
323 |
|
4efca4ed0 kbuild: modversio... |
324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 |
# .S file exports must have their C prototypes defined in asm/asm-prototypes.h # or a file that it includes, in order to get versioned symbols. We build a # dummy C file that includes asm-prototypes and the EXPORT_SYMBOL lines from # the .S file (with trailing ';'), and run genksyms on that, to extract vers. # # This is convoluted. The .S file must first be preprocessed to run guards and # expand names, then the resulting exports must be constructed into plain # EXPORT_SYMBOL(symbol); to build our dummy C file, and that gets preprocessed # to make the genksyms input. # # These mirror gensymtypes_c and co above, keep them in synch. cmd_gensymtypes_S = \ (echo "\#include <linux/kernel.h>" ; \ echo "\#include <asm/asm-prototypes.h>" ; \ $(CPP) $(a_flags) $< | \ |
cc6acc11c kbuild: be more c... |
339 340 |
grep "\<___EXPORT_SYMBOL\>" | \ sed 's/.*___EXPORT_SYMBOL[[:space:]]*\([a-zA-Z0-9_]*\)[[:space:]]*,.*/EXPORT_SYMBOL(\1);/' ) | \ |
4efca4ed0 kbuild: modversio... |
341 342 343 |
$(CPP) -D__GENKSYMS__ $(c_flags) -xc - | \ $(GENKSYMS) $(if $(1), -T $(2)) \ $(patsubst y,-s _,$(CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX)) \ |
56067812d kbuild: modversio... |
344 |
$(patsubst y,-R,$(CONFIG_MODULE_REL_CRCS)) \ |
4efca4ed0 kbuild: modversio... |
345 346 347 348 349 350 351 352 353 354 355 |
$(if $(KBUILD_PRESERVE),-p) \ -r $(firstword $(wildcard $(2:.symtypes=.symref) /dev/null)) quiet_cmd_cc_symtypes_S = SYM $(quiet_modtag) $@ cmd_cc_symtypes_S = \ set -e; \ $(call cmd_gensymtypes_S,true,$@) >/dev/null; \ test -s $@ || rm -f $@ $(obj)/%.symtypes : $(src)/%.S FORCE $(call cmd,cc_symtypes_S) |
e0f41e52d kbuild: rename cm... |
356 357 |
quiet_cmd_cpp_s_S = CPP $(quiet_modtag) $@ cmd_cpp_s_S = $(CPP) $(a_flags) -o $@ $< |
1da177e4c Linux-2.6.12-rc2 |
358 |
|
767e581d7 kbuild: enable us... |
359 |
$(obj)/%.s: $(src)/%.S FORCE |
e0f41e52d kbuild: rename cm... |
360 |
$(call if_changed_dep,cpp_s_S) |
1da177e4c Linux-2.6.12-rc2 |
361 362 |
quiet_cmd_as_o_S = AS $(quiet_modtag) $@ |
4efca4ed0 kbuild: modversio... |
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 |
ifndef CONFIG_MODVERSIONS cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< else ASM_PROTOTYPES := $(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/asm-prototypes.h) ifeq ($(ASM_PROTOTYPES),) cmd_as_o_S = $(CC) $(a_flags) -c -o $@ $< else # versioning matches the C process described above, with difference that # we parse asm-prototypes.h C header to get function definitions. cmd_as_o_S = $(CC) $(a_flags) -c -o $(@D)/.tmp_$(@F) $< cmd_modversions_S = \ if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \ $(call cmd_gensymtypes_S,$(KBUILD_SYMTYPES),$(@:.o=.symtypes)) \ > $(@D)/.tmp_$(@F:.o=.ver); \ \ $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \ -T $(@D)/.tmp_$(@F:.o=.ver); \ rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \ else \ mv -f $(@D)/.tmp_$(@F) $@; \ fi; endif endif |
1da177e4c Linux-2.6.12-rc2 |
394 |
|
ee9f8fce9 x86/unwind: Add t... |
395 |
$(obj)/%.o: $(src)/%.S $(objtool_dep) FORCE |
b9ab5ebb1 objtool: Add CONF... |
396 |
$(call if_changed_rule,as_o_S) |
1da177e4c Linux-2.6.12-rc2 |
397 398 399 400 401 402 403 |
targets += $(real-objs-y) $(real-objs-m) $(lib-y) targets += $(extra-y) $(MAKECMDGOALS) $(always) # Linker scripts preprocessor (.lds.S -> .lds) # --------------------------------------------------------------------------- quiet_cmd_cpp_lds_S = LDS $@ |
5cb0512c0 Kbuild: don't pas... |
404 |
cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -U$(ARCH) \ |
42f29a252 kbuild: Don't def... |
405 |
-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $< |
1da177e4c Linux-2.6.12-rc2 |
406 |
|
767e581d7 kbuild: enable us... |
407 |
$(obj)/%.lds: $(src)/%.lds.S FORCE |
1da177e4c Linux-2.6.12-rc2 |
408 |
$(call if_changed_dep,cpp_lds_S) |
4520c6a49 X.509: Add simple... |
409 410 411 412 413 414 415 416 417 418 |
# ASN.1 grammar # --------------------------------------------------------------------------- quiet_cmd_asn1_compiler = ASN.1 $@ cmd_asn1_compiler = $(objtree)/scripts/asn1_compiler $< \ $(subst .h,.c,$@) $(subst .c,.h,$@) .PRECIOUS: $(objtree)/$(obj)/%-asn1.c $(objtree)/$(obj)/%-asn1.h $(obj)/%-asn1.c $(obj)/%-asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler $(call cmd,asn1_compiler) |
1da177e4c Linux-2.6.12-rc2 |
419 420 421 422 423 424 425 426 427 428 |
# Build the compiled-in targets # --------------------------------------------------------------------------- # To build objects in subdirs, we need to descend into the directories $(sort $(subdir-obj-y)): $(subdir-ym) ; # # Rule to compile a set of .o files into one .o file # ifdef builtin-target |
a5967db9a kbuild: allow arc... |
429 430 |
ifdef CONFIG_THIN_ARCHIVES |
9a6cfca4f kbuild: thin arch... |
431 432 |
cmd_make_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) cmd_make_empty_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) |
a5967db9a kbuild: allow arc... |
433 434 435 436 437 438 |
quiet_cmd_link_o_target = AR $@ else cmd_make_builtin = $(LD) $(ld_flags) -r -o cmd_make_empty_builtin = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) quiet_cmd_link_o_target = LD $@ endif |
1da177e4c Linux-2.6.12-rc2 |
439 440 |
# If the list of objects to link is empty, just create an empty built-in.o cmd_link_o_target = $(if $(strip $(obj-y)),\ |
a5967db9a kbuild: allow arc... |
441 |
$(cmd_make_builtin) $@ $(filter $(obj-y), $^) \ |
91341d4b2 kbuild: introduce... |
442 |
$(cmd_secanalysis),\ |
a5967db9a kbuild: allow arc... |
443 |
$(cmd_make_empty_builtin) $@) |
1da177e4c Linux-2.6.12-rc2 |
444 445 446 447 448 449 450 451 |
$(builtin-target): $(obj-y) FORCE $(call if_changed,link_o_target) targets += $(builtin-target) endif # builtin-target # |
551559e13 kbuild: implement... |
452 453 454 455 456 457 458 459 460 461 462 463 464 |
# Rule to create modules.order file # # Create commands to either record .ko file or cat modules.order from # a subdirectory modorder-cmds = \ $(foreach m, $(modorder), \ $(if $(filter %/modules.order, $m), \ cat $m;, echo kernel/$m;)) $(modorder-target): $(subdir-ym) FORCE $(Q)(cat /dev/null; $(modorder-cmds)) > $@ # |
1da177e4c Linux-2.6.12-rc2 |
465 466 467 468 |
# Rule to compile a set of .o files into one .a file # ifdef lib-target quiet_cmd_link_l_target = AR $@ |
a5967db9a kbuild: allow arc... |
469 470 |
ifdef CONFIG_THIN_ARCHIVES |
9a6cfca4f kbuild: thin arch... |
471 |
cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(lib-y) |
a5967db9a kbuild: allow arc... |
472 473 474 |
else cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y) endif |
1da177e4c Linux-2.6.12-rc2 |
475 476 477 478 479 |
$(lib-target): $(lib-y) FORCE $(call if_changed,link_l_target) targets += $(lib-target) |
7f2084fa5 [kbuild] handle e... |
480 481 482 483 484 485 486 487 488 489 490 |
dummy-object = $(obj)/.lib_exports.o ksyms-lds = $(dot-target).lds ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX ref_prefix = EXTERN(_ else ref_prefix = EXTERN( endif quiet_cmd_export_list = EXPORTS $@ cmd_export_list = $(OBJDUMP) -h $< | \ |
76bee2341 kbuild: cmd_expor... |
491 |
sed -ne '/___ksymtab/s/.*+\([^ ]*\).*/$(ref_prefix)\1)/p' >$(ksyms-lds);\ |
7f2084fa5 [kbuild] handle e... |
492 |
rm -f $(dummy-object);\ |
9da2f584b kbuild: improve l... |
493 |
echo | $(CC) $(a_flags) -c -o $(dummy-object) -x assembler -;\ |
7f2084fa5 [kbuild] handle e... |
494 495 496 497 498 |
$(LD) $(ld_flags) -r -o $@ -T $(ksyms-lds) $(dummy-object);\ rm $(dummy-object) $(ksyms-lds) $(obj)/lib-ksyms.o: $(lib-target) FORCE $(call if_changed,export_list) |
989cea5c1 kbuild: prevent l... |
499 500 |
targets += $(obj)/lib-ksyms.o |
1da177e4c Linux-2.6.12-rc2 |
501 502 503 504 505 506 507 508 509 |
endif # # Rule to link composite objects # # Composite objects are specified in kbuild makefile as follows: # <composite-object>-objs := <list of .o files> # or # <composite-object>-y := <list of .o files> |
cf4f21938 kbuild: Allow to ... |
510 511 512 |
# or # <composite-object>-m := <list of .o files> # The -m syntax only works if <composite object> is a module |
1da177e4c Linux-2.6.12-rc2 |
513 514 515 |
link_multi_deps = \ $(filter $(addprefix $(obj)/, \ $($(subst $(obj)/,,$(@:.o=-objs))) \ |
cf4f21938 kbuild: Allow to ... |
516 517 |
$($(subst $(obj)/,,$(@:.o=-y))) \ $($(subst $(obj)/,,$(@:.o=-m)))), $^) |
38385f8f0 kbuild: trivial -... |
518 |
|
fe026a851 kbuild: thin arch... |
519 520 521 522 |
cmd_link_multi-link = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis) ifdef CONFIG_THIN_ARCHIVES quiet_cmd_link_multi-y = AR $@ |
9a6cfca4f kbuild: thin arch... |
523 |
cmd_link_multi-y = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(link_multi_deps) |
fe026a851 kbuild: thin arch... |
524 525 526 527 |
else quiet_cmd_link_multi-y = LD $@ cmd_link_multi-y = $(cmd_link_multi-link) endif |
1da177e4c Linux-2.6.12-rc2 |
528 529 |
quiet_cmd_link_multi-m = LD [M] $@ |
fe026a851 kbuild: thin arch... |
530 |
cmd_link_multi-m = $(cmd_link_multi-link) |
1da177e4c Linux-2.6.12-rc2 |
531 |
|
c8589d1e9 kbuild: handle mu... |
532 |
$(multi-used-y): FORCE |
1da177e4c Linux-2.6.12-rc2 |
533 |
$(call if_changed,link_multi-y) |
c8589d1e9 kbuild: handle mu... |
534 |
$(call multi_depend, $(multi-used-y), .o, -objs -y) |
1da177e4c Linux-2.6.12-rc2 |
535 |
|
c8589d1e9 kbuild: handle mu... |
536 |
$(multi-used-m): FORCE |
1da177e4c Linux-2.6.12-rc2 |
537 |
$(call if_changed,link_multi-m) |
9895c03d4 kbuild: record ne... |
538 539 |
@{ echo $(@:.o=.ko); echo $(link_multi_deps); \ $(cmd_undef_syms); } > $(MODVERDIR)/$(@F:.o=.mod) |
cf4f21938 kbuild: Allow to ... |
540 |
$(call multi_depend, $(multi-used-m), .o, -objs -y -m) |
1da177e4c Linux-2.6.12-rc2 |
541 542 543 544 545 546 |
targets += $(multi-used-y) $(multi-used-m) # Descending # --------------------------------------------------------------------------- |
4f1933620 kbuild: change kb... |
547 |
PHONY += $(subdir-ym) |
1da177e4c Linux-2.6.12-rc2 |
548 549 550 551 552 |
$(subdir-ym): $(Q)$(MAKE) $(build)=$@ # Add FORCE to the prequisites of a target to force it to be always rebuilt. # --------------------------------------------------------------------------- |
4f1933620 kbuild: change kb... |
553 |
PHONY += FORCE |
1da177e4c Linux-2.6.12-rc2 |
554 555 556 557 558 559 560 561 562 563 564 565 566 567 |
FORCE: # Read all saved command lines and dependencies for the $(targets) we # may be building above, using $(if_changed{,_dep}). As an # optimization, we don't need to read them if the target does not # exist, we will rebuild anyway in that case. targets := $(wildcard $(sort $(targets))) cmd_files := $(wildcard $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) ifneq ($(cmd_files),) include $(cmd_files) endif |
4f1933620 kbuild: change kb... |
568 |
|
4f1933620 kbuild: change kb... |
569 570 571 572 |
# Declare the contents of the .PHONY variable as phony. We keep that # information in a variable se we can use it in if_changed and friends. .PHONY: $(PHONY) |