kbuild: consolidate command line escaping
While the recent change to also escape # symbols when storing C-file compilation command lines was helpful, it should be in effect for all command lines, as much as the dollar escaping should be in effect for C-source compilation commands. Additionally, for better readability and maintenance, consolidating all the escaping (single quotes, dollars, and now sharps) was also desirable. Signed-Off-By: Jan Beulich <jbeulich@novell.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
parent
20a468b513
commit
6176aa9ae4
3 changed files with 12 additions and 25 deletions
|
@ -88,8 +88,7 @@ cc-ifversion = $(shell if [ $(call cc-version, $(CC)) $(1) $(2) ]; then \
|
||||||
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
|
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
|
||||||
|
|
||||||
# If quiet is set, only print short version of command
|
# If quiet is set, only print short version of command
|
||||||
cmd = @$(if $($(quiet)cmd_$(1)),\
|
cmd = @$(echo-cmd) $(cmd_$(1))
|
||||||
echo ' $(call escsq,$($(quiet)cmd_$(1)))' &&) $(cmd_$(1))
|
|
||||||
|
|
||||||
# Add $(obj)/ for paths that is not absolute
|
# Add $(obj)/ for paths that is not absolute
|
||||||
objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
|
objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
|
||||||
|
@ -112,24 +111,24 @@ endif
|
||||||
echo-cmd = $(if $($(quiet)cmd_$(1)), \
|
echo-cmd = $(if $($(quiet)cmd_$(1)), \
|
||||||
echo ' $(call escsq,$($(quiet)cmd_$(1)))';)
|
echo ' $(call escsq,$($(quiet)cmd_$(1)))';)
|
||||||
|
|
||||||
|
make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))
|
||||||
|
|
||||||
# function to only execute the passed command if necessary
|
# function to only execute the passed command if necessary
|
||||||
# >'< substitution is for echo to work, >$< substitution to preserve $ when reloading .cmd file
|
# >'< 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
|
# 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_$@)) ), \
|
if_changed = $(if $(strip $? $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
|
||||||
@set -e; \
|
@set -e; \
|
||||||
$(echo-cmd) \
|
$(echo-cmd) $(cmd_$(1)); \
|
||||||
$(cmd_$(1)); \
|
echo 'cmd_$@ := $(make-cmd)' > $(@D)/.$(@F).cmd)
|
||||||
echo 'cmd_$@ := $(subst $$,$$$$,$(call escsq,$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
|
|
||||||
|
|
||||||
# execute the command and also postprocess generated .d dependencies
|
# execute the command and also postprocess generated .d dependencies
|
||||||
# file
|
# file
|
||||||
if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
|
if_changed_dep = $(if $(strip $? $(filter-out FORCE $(wildcard $^),$^)\
|
||||||
$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
|
$(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \
|
||||||
@set -e; \
|
@set -e; \
|
||||||
$(echo-cmd) \
|
$(echo-cmd) $(cmd_$(1)); \
|
||||||
$(cmd_$(1)); \
|
scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(@D)/.$(@F).tmp; \
|
||||||
scripts/basic/fixdep $(depfile) $@ '$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
|
|
||||||
rm -f $(depfile); \
|
rm -f $(depfile); \
|
||||||
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
|
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)
|
||||||
|
|
||||||
|
|
|
@ -178,12 +178,10 @@ cmd_modversions = \
|
||||||
endif
|
endif
|
||||||
|
|
||||||
define rule_cc_o_c
|
define rule_cc_o_c
|
||||||
$(if $($(quiet)cmd_checksrc),echo ' $($(quiet)cmd_checksrc)';) \
|
$(call echo-cmd,checksrc) $(cmd_checksrc) \
|
||||||
$(cmd_checksrc) \
|
$(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \
|
||||||
$(if $($(quiet)cmd_cc_o_c),echo ' $(call escsq,$($(quiet)cmd_cc_o_c))';) \
|
|
||||||
$(cmd_cc_o_c); \
|
|
||||||
$(cmd_modversions) \
|
$(cmd_modversions) \
|
||||||
scripts/basic/fixdep $(depfile) $@ '$(call escsq,$(cmd_cc_o_c))' > $(@D)/.$(@F).tmp; \
|
scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > $(@D)/.$(@F).tmp; \
|
||||||
rm -f $(depfile); \
|
rm -f $(depfile); \
|
||||||
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd
|
mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -132,20 +132,10 @@ void usage(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out the commandline prefixed with cmd_<target filename> :=
|
* Print out the commandline prefixed with cmd_<target filename> :=
|
||||||
* If commandline contains '#' escape with '\' so make to not see
|
*/
|
||||||
* the '#' as a start-of-comment symbol
|
|
||||||
**/
|
|
||||||
void print_cmdline(void)
|
void print_cmdline(void)
|
||||||
{
|
{
|
||||||
char *p = cmdline;
|
printf("cmd_%s := %s\n\n", target, cmdline);
|
||||||
|
|
||||||
printf("cmd_%s := ", target);
|
|
||||||
for (; *p; p++) {
|
|
||||||
if (*p == '#')
|
|
||||||
printf("\\");
|
|
||||||
printf("%c", *p);
|
|
||||||
}
|
|
||||||
printf("\n\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char * str_config = NULL;
|
char * str_config = NULL;
|
||||||
|
|
Loading…
Add table
Reference in a new issue