Commit 8ec4b4ff1c89bb280e662b84eba503ca44abe836

Authored by Sam Ravnborg
1 parent 7c6b155fb4

kbuild: introduce Kbuild.include

Kbuild.include is a placeholder for definitions originally present in
both the top-level Makefile and scripts/Makefile.build.
There were a slight difference in the filechk definition, so the most videly
used version was kept and usr/Makefile was adopted for this syntax.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---

Showing 7 changed files with 103 additions and 167 deletions Side-by-side Diff

... ... @@ -309,6 +309,9 @@
309 309 # Look for make include files relative to root of kernel src
310 310 MAKEFLAGS += --include-dir=$(srctree)
311 311  
  312 +# We need some generic definitions
  313 +include scripts/Kbuild.include
  314 +
312 315 # For maximum performance (+ possibly random breakage, uncomment
313 316 # the following)
314 317  
... ... @@ -367,11 +370,6 @@
367 370 # even be read-only.
368 371 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
369 372  
370   -# The temporary file to save gcc -MD generated dependencies must not
371   -# contain a comma
372   -comma := ,
373   -depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
374   -
375 373 # Files to ignore in find ... statements
376 374  
377 375 RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc \) -prune -o
... ... @@ -1284,72 +1282,6 @@
1284 1282 $(cmd_files): ; # Do not try to update included dependency files
1285 1283 include $(cmd_files)
1286 1284 endif
1287   -
1288   -# Execute command and generate cmd file
1289   -if_changed = $(if $(strip $? \
1290   - $(filter-out $(cmd_$(1)),$(cmd_$@))\
1291   - $(filter-out $(cmd_$@),$(cmd_$(1)))),\
1292   - @set -e; \
1293   - $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \
1294   - $(cmd_$(1)); \
1295   - echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
1296   -
1297   -
1298   -# execute the command and also postprocess generated .d dependencies
1299   -# file
1300   -if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
1301   - $(filter-out $(cmd_$(1)),$(cmd_$@))\
1302   - $(filter-out $(cmd_$@),$(cmd_$(1)))),\
1303   - $(Q)set -e; \
1304   - $(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) \
1305   - $(cmd_$(1)); \
1306   - scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
1307   - rm -f $(depfile); \
1308   - mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
1309   -
1310   -# Usage: $(call if_changed_rule,foo)
1311   -# will check if $(cmd_foo) changed, or any of the prequisites changed,
1312   -# and if so will execute $(rule_foo)
1313   -
1314   -if_changed_rule = $(if $(strip $? \
1315   - $(filter-out $(cmd_$(1)),$(cmd_$(@F)))\
1316   - $(filter-out $(cmd_$(@F)),$(cmd_$(1)))),\
1317   - $(Q)$(rule_$(1)))
1318   -
1319   -# If quiet is set, only print short version of command
1320   -
1321   -cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1))
1322   -
1323   -# filechk is used to check if the content of a generated file is updated.
1324   -# Sample usage:
1325   -# define filechk_sample
1326   -# echo $KERNELRELEASE
1327   -# endef
1328   -# version.h : Makefile
1329   -# $(call filechk,sample)
1330   -# The rule defined shall write to stdout the content of the new file.
1331   -# The existing file will be compared with the new one.
1332   -# - If no file exist it is created
1333   -# - If the content differ the new file is used
1334   -# - If they are equal no change, and no timestamp update
1335   -
1336   -define filechk
1337   - @set -e; \
1338   - echo ' CHK $@'; \
1339   - mkdir -p $(dir $@); \
1340   - $(filechk_$(1)) < $< > $@.tmp; \
1341   - if [ -r $@ ] && cmp -s $@ $@.tmp; then \
1342   - rm -f $@.tmp; \
1343   - else \
1344   - echo ' UPD $@'; \
1345   - mv -f $@.tmp $@; \
1346   - fi
1347   -endef
1348   -
1349   -# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=dir
1350   -# Usage:
1351   -# $(Q)$(MAKE) $(build)=dir
1352   -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
1353 1285  
1354 1286 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1355 1287 # Usage:
scripts/Kbuild.include
  1 +####
  2 +# kbuild: Generic definitions
  3 +
  4 +# Convinient variables
  5 +comma := ,
  6 +empty :=
  7 +space := $(empty) $(empty)
  8 +
  9 +###
  10 +# The temporary file to save gcc -MD generated dependencies must not
  11 +# contain a comma
  12 +depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
  13 +
  14 +###
  15 +# filechk is used to check if the content of a generated file is updated.
  16 +# Sample usage:
  17 +# define filechk_sample
  18 +# echo $KERNELRELEASE
  19 +# endef
  20 +# version.h : Makefile
  21 +# $(call filechk,sample)
  22 +# The rule defined shall write to stdout the content of the new file.
  23 +# The existing file will be compared with the new one.
  24 +# - If no file exist it is created
  25 +# - If the content differ the new file is used
  26 +# - If they are equal no change, and no timestamp update
  27 +# - stdin is piped in from the first prerequisite ($<) so one has
  28 +# to specify a valid file as first prerequisite (often the kbuild file)
  29 +define filechk
  30 + $(Q)set -e; \
  31 + echo ' CHK $@'; \
  32 + mkdir -p $(dir $@); \
  33 + $(filechk_$(1)) < $< > $@.tmp; \
  34 + if [ -r $@ ] && cmp -s $@ $@.tmp; then \
  35 + rm -f $@.tmp; \
  36 + else \
  37 + echo ' UPD $@'; \
  38 + mv -f $@.tmp $@; \
  39 + fi
  40 +endef
  41 +
  42 +###
  43 +# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
  44 +# Usage:
  45 +# $(Q)$(MAKE) $(build)=dir
  46 +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
  47 +
  48 +# If quiet is set, only print short version of command
  49 +cmd = @$(if $($(quiet)cmd_$(1)),\
  50 + echo ' $(subst ','\'',$($(quiet)cmd_$(1)))' &&) $(cmd_$(1))
  51 +
  52 +###
  53 +# if_changed - execute command if any prerequisite is newer than
  54 +# target, or command line has changed
  55 +# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies
  56 +# including used config symbols
  57 +# if_changed_rule - as if_changed but execute rule instead
  58 +# See Documentation/kbuild/makefiles.txt for more info
  59 +
  60 +ifneq ($(KBUILD_NOCMDDEP),1)
  61 +# Check if both arguments has same arguments. Result in empty string if equal
  62 +# User may override this check using make KBUILD_NOCMDDEP=1
  63 +arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) )
  64 +endif
  65 +
  66 +# echo command. Short version is $(quiet) equals quiet, otherwise full command
  67 +echo-cmd = $(if $($(quiet)cmd_$(1)), \
  68 + echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';)
  69 +
  70 +# function to only execute the passed command if necessary
  71 +# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file
  72 +# note: when using inline perl scripts [perl -e '...$$t=1;...'] in $(cmd_xxx) double $$ your perl vars
  73 +#
  74 +if_changed = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
  75 + @set -e; \
  76 + $(echo-cmd) \
  77 + $(cmd_$(1)); \
  78 + echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
  79 +
  80 +# execute the command and also postprocess generated .d dependencies
  81 +# file
  82 +if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
  83 + $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
  84 + @set -e; \
  85 + $(echo-cmd) \
  86 + $(cmd_$(1)); \
  87 + scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
  88 + rm -f $(depfile); \
  89 + mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
  90 +
  91 +# Usage: $(call if_changed_rule,foo)
  92 +# will check if $(cmd_foo) changed, or any of the prequisites changed,
  93 +# and if so will execute $(rule_foo)
  94 +if_changed_rule = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\
  95 + @set -e; \
  96 + $(rule_$(1)))
scripts/Makefile.build
... ... @@ -12,6 +12,7 @@
12 12  
13 13 include $(if $(wildcard $(obj)/Kbuild), $(obj)/Kbuild, $(obj)/Makefile)
14 14  
  15 +include scripts/Kbuild.include
15 16 include scripts/Makefile.lib
16 17  
17 18 ifdef host-progs
scripts/Makefile.lib
1   -# ===========================================================================
2   -# kbuild: Generic definitions
3   -# ===========================================================================
4   -
5   -# Standard vars
6   -
7   -comma := ,
8   -empty :=
9   -space := $(empty) $(empty)
10   -
11 1 # Backward compatibility - to be removed...
12 2 extra-y += $(EXTRA_TARGETS)
13 3 # Figure out what we need to build from the various variables
... ... @@ -84,10 +74,6 @@
84 74 subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
85 75 obj-dirs := $(addprefix $(obj)/,$(obj-dirs))
86 76  
87   -# The temporary file to save gcc -MD generated dependencies must not
88   -# contain a comma
89   -depfile = $(subst $(comma),_,$(@D)/.$(@F).d)
90   -
91 77 # These flags are needed for modversions and compiling, so we define them here
92 78 # already
93 79 # $(modname_flags) #defines KBUILD_MODNAME as the name of the module it will
... ... @@ -178,85 +164,4 @@
178 164  
179 165 quiet_cmd_gzip = GZIP $@
180 166 cmd_gzip = gzip -f -9 < $< > $@
181   -
182   -# ===========================================================================
183   -# Generic stuff
184   -# ===========================================================================
185   -
186   -ifneq ($(KBUILD_NOCMDDEP),1)
187   -# Check if both arguments has same arguments. Result in empty string if equal
188   -# User may override this check using make KBUILD_NOCMDDEP=1
189   -arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) )
190   -
191   -endif
192   -
193   -# echo command. Short version is $(quiet) equals quiet, otherwise full command
194   -echo-cmd = $(if $($(quiet)cmd_$(1)), \
195   - echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';)
196   -
197   -# function to only execute the passed command if necessary
198   -# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file
199   -# note: when using inline perl scripts [perl -e '...$$t=1;...'] in $(cmd_xxx) double $$ your perl vars
200   -#
201   -if_changed = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
202   - @set -e; \
203   - $(echo-cmd) \
204   - $(cmd_$(1)); \
205   - echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
206   -
207   -
208   -# execute the command and also postprocess generated .d dependencies
209   -# file
210   -
211   -if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
212   - $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
213   - @set -e; \
214   - $(echo-cmd) \
215   - $(cmd_$(1)); \
216   - scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
217   - rm -f $(depfile); \
218   - mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
219   -
220   -# Usage: $(call if_changed_rule,foo)
221   -# will check if $(cmd_foo) changed, or any of the prequisites changed,
222   -# and if so will execute $(rule_foo)
223   -
224   -if_changed_rule = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\
225   - @set -e; \
226   - $(rule_$(1)))
227   -
228   -# If quiet is set, only print short version of command
229   -
230   -cmd = @$(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))' &&) $(cmd_$(1))
231   -
232   -# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
233   -# Usage:
234   -# $(Q)$(MAKE) $(build)=dir
235   -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
236   -
237   -# filechk is used to check if the content of a generated file is updated.
238   -# Sample usage:
239   -# define filechk_sample
240   -# echo $KERNELRELEASE
241   -# endef
242   -# version.h : Makefile
243   -# $(call filechk,sample)
244   -# The rule defined shall write to stdout the content of the new file.
245   -# The existing file will be compared with the new one.
246   -# - If no file exist it is created
247   -# - If the content differ the new file is used
248   -# - If they are equal no change, and no timestamp update
249   -
250   -define filechk
251   - $(Q)set -e; \
252   - echo ' CHK $@'; \
253   - mkdir -p $(dir $@); \
254   - $(filechk_$(1)) $(2) > $@.tmp; \
255   - if [ -r $@ ] && cmp -s $@ $@.tmp; then \
256   - rm -f $@.tmp; \
257   - else \
258   - echo ' UPD $@'; \
259   - mv -f $@.tmp $@; \
260   - fi
261   -endef
scripts/Makefile.modinst
... ... @@ -5,7 +5,7 @@
5 5 .PHONY: __modinst
6 6 __modinst:
7 7  
8   -include scripts/Makefile.lib
  8 +include scripts/Kbuild.include
9 9  
10 10 #
11 11  
scripts/Makefile.modpost
... ... @@ -36,6 +36,7 @@
36 36 _modpost: __modpost
37 37  
38 38 include .config
  39 +include scripts/Kbuild.include
39 40 include scripts/Makefile.lib
40 41  
41 42 symverfile := $(objtree)/Module.symvers
... ... @@ -27,7 +27,7 @@
27 27 filechk_initramfs_list = $(CONFIG_SHELL) \
28 28 $(srctree)/scripts/gen_initramfs_list.sh $(gen_initramfs_args) $(quotefixed_initramfs_source)
29 29  
30   -$(obj)/initramfs_list: FORCE
  30 +$(obj)/initramfs_list: $(obj)/Makefile FORCE
31 31 $(call filechk,initramfs_list)
32 32  
33 33 quiet_cmd_cpio = CPIO $@