forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <[email protected]> ---
- Loading branch information
Sam Ravnborg
committed
Jul 25, 2005
1 parent
7c6b155
commit 8ec4b4f
Showing
7 changed files
with
103 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
#### | ||
# kbuild: Generic definitions | ||
|
||
# Convinient variables | ||
comma := , | ||
empty := | ||
space := $(empty) $(empty) | ||
|
||
### | ||
# The temporary file to save gcc -MD generated dependencies must not | ||
# contain a comma | ||
depfile = $(subst $(comma),_,$(@D)/.$(@F).d) | ||
|
||
### | ||
# filechk is used to check if the content of a generated file is updated. | ||
# Sample usage: | ||
# define filechk_sample | ||
# echo $KERNELRELEASE | ||
# endef | ||
# version.h : Makefile | ||
# $(call filechk,sample) | ||
# The rule defined shall write to stdout the content of the new file. | ||
# The existing file will be compared with the new one. | ||
# - If no file exist it is created | ||
# - If the content differ the new file is used | ||
# - If they are equal no change, and no timestamp update | ||
# - stdin is piped in from the first prerequisite ($<) so one has | ||
# to specify a valid file as first prerequisite (often the kbuild file) | ||
define filechk | ||
$(Q)set -e; \ | ||
echo ' CHK $@'; \ | ||
mkdir -p $(dir $@); \ | ||
$(filechk_$(1)) < $< > [email protected]; \ | ||
if [ -r $@ ] && cmp -s $@ [email protected]; then \ | ||
rm -f [email protected]; \ | ||
else \ | ||
echo ' UPD $@'; \ | ||
mv -f [email protected] $@; \ | ||
fi | ||
endef | ||
|
||
### | ||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= | ||
# Usage: | ||
# $(Q)$(MAKE) $(build)=dir | ||
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj | ||
|
||
# If quiet is set, only print short version of command | ||
cmd = @$(if $($(quiet)cmd_$(1)),\ | ||
echo ' $(subst ','\'',$($(quiet)cmd_$(1)))' &&) $(cmd_$(1)) | ||
|
||
### | ||
# if_changed - execute command if any prerequisite is newer than | ||
# target, or command line has changed | ||
# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies | ||
# including used config symbols | ||
# if_changed_rule - as if_changed but execute rule instead | ||
# See Documentation/kbuild/makefiles.txt for more info | ||
|
||
ifneq ($(KBUILD_NOCMDDEP),1) | ||
# Check if both arguments has same arguments. Result in empty string if equal | ||
# User may override this check using make KBUILD_NOCMDDEP=1 | ||
arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) ) | ||
endif | ||
|
||
# echo command. Short version is $(quiet) equals quiet, otherwise full command | ||
echo-cmd = $(if $($(quiet)cmd_$(1)), \ | ||
echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) | ||
|
||
# function to only execute the passed command if necessary | ||
# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file | ||
# note: when using inline perl scripts [perl -e '...$$t=1;...'] in $(cmd_xxx) double $$ your perl vars | ||
# | ||
if_changed = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ | ||
@set -e; \ | ||
$(echo-cmd) \ | ||
$(cmd_$(1)); \ | ||
echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd) | ||
|
||
# execute the command and also postprocess generated .d dependencies | ||
# file | ||
if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\ | ||
$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ | ||
@set -e; \ | ||
$(echo-cmd) \ | ||
$(cmd_$(1)); \ | ||
scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \ | ||
rm -f $(depfile); \ | ||
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) | ||
|
||
# Usage: $(call if_changed_rule,foo) | ||
# will check if $(cmd_foo) changed, or any of the prequisites changed, | ||
# and if so will execute $(rule_foo) | ||
if_changed_rule = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\ | ||
@set -e; \ | ||
$(rule_$(1))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,3 @@ | ||
# =========================================================================== | ||
# kbuild: Generic definitions | ||
# =========================================================================== | ||
|
||
# Standard vars | ||
|
||
comma := , | ||
empty := | ||
space := $(empty) $(empty) | ||
|
||
# Backward compatibility - to be removed... | ||
extra-y += $(EXTRA_TARGETS) | ||
# Figure out what we need to build from the various variables | ||
|
@@ -84,10 +74,6 @@ multi-objs-m := $(addprefix $(obj)/,$(multi-objs-m)) | |
subdir-ym := $(addprefix $(obj)/,$(subdir-ym)) | ||
obj-dirs := $(addprefix $(obj)/,$(obj-dirs)) | ||
|
||
# The temporary file to save gcc -MD generated dependencies must not | ||
# contain a comma | ||
depfile = $(subst $(comma),_,$(@D)/.$(@F).d) | ||
|
||
# These flags are needed for modversions and compiling, so we define them here | ||
# already | ||
# $(modname_flags) #defines KBUILD_MODNAME as the name of the module it will | ||
|
@@ -179,84 +165,4 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ | |
quiet_cmd_gzip = GZIP $@ | ||
cmd_gzip = gzip -f -9 < $< > $@ | ||
|
||
# =========================================================================== | ||
# Generic stuff | ||
# =========================================================================== | ||
|
||
ifneq ($(KBUILD_NOCMDDEP),1) | ||
# Check if both arguments has same arguments. Result in empty string if equal | ||
# User may override this check using make KBUILD_NOCMDDEP=1 | ||
arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) ) | ||
|
||
endif | ||
|
||
# echo command. Short version is $(quiet) equals quiet, otherwise full command | ||
echo-cmd = $(if $($(quiet)cmd_$(1)), \ | ||
echo ' $(subst ','\'',$($(quiet)cmd_$(1)))';) | ||
|
||
# function to only execute the passed command if necessary | ||
# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file | ||
# note: when using inline perl scripts [perl -e '...$$t=1;...'] in $(cmd_xxx) double $$ your perl vars | ||
# | ||
if_changed = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ | ||
@set -e; \ | ||
$(echo-cmd) \ | ||
$(cmd_$(1)); \ | ||
echo 'cmd_$@ := $(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).cmd) | ||
|
||
|
||
# execute the command and also postprocess generated .d dependencies | ||
# file | ||
|
||
if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\ | ||
$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ | ||
@set -e; \ | ||
$(echo-cmd) \ | ||
$(cmd_$(1)); \ | ||
scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(subst ','\'',$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \ | ||
rm -f $(depfile); \ | ||
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) | ||
|
||
# Usage: $(call if_changed_rule,foo) | ||
# will check if $(cmd_foo) changed, or any of the prequisites changed, | ||
# and if so will execute $(rule_foo) | ||
|
||
if_changed_rule = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\ | ||
@set -e; \ | ||
$(rule_$(1))) | ||
|
||
# If quiet is set, only print short version of command | ||
|
||
cmd = @$(if $($(quiet)cmd_$(1)),echo ' $(subst ','\'',$($(quiet)cmd_$(1)))' &&) $(cmd_$(1)) | ||
|
||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj= | ||
# Usage: | ||
# $(Q)$(MAKE) $(build)=dir | ||
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj | ||
|
||
# filechk is used to check if the content of a generated file is updated. | ||
# Sample usage: | ||
# define filechk_sample | ||
# echo $KERNELRELEASE | ||
# endef | ||
# version.h : Makefile | ||
# $(call filechk,sample) | ||
# The rule defined shall write to stdout the content of the new file. | ||
# The existing file will be compared with the new one. | ||
# - If no file exist it is created | ||
# - If the content differ the new file is used | ||
# - If they are equal no change, and no timestamp update | ||
|
||
define filechk | ||
$(Q)set -e; \ | ||
echo ' CHK $@'; \ | ||
mkdir -p $(dir $@); \ | ||
$(filechk_$(1)) $(2) > [email protected]; \ | ||
if [ -r $@ ] && cmp -s $@ [email protected]; then \ | ||
rm -f [email protected]; \ | ||
else \ | ||
echo ' UPD $@'; \ | ||
mv -f [email protected] $@; \ | ||
fi | ||
endef | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ | |
.PHONY: __modinst | ||
__modinst: | ||
|
||
include scripts/Makefile.lib | ||
include scripts/Kbuild.include | ||
|
||
# | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters