Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6176aa9a authored by Jan Beulich's avatar Jan Beulich Committed by Sam Ravnborg
Browse files

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: default avatarJan Beulich <jbeulich@novell.com>
Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent 20a468b5
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -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

# If quiet is set, only print short version of command
cmd = @$(if $($(quiet)cmd_$(1)),\
      echo '  $(call escsq,$($(quiet)cmd_$(1)))' &&) $(cmd_$(1))
cmd = @$(echo-cmd) $(cmd_$(1))

# Add $(obj)/ for paths that is not absolute
objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
@@ -112,24 +111,24 @@ endif
echo-cmd = $(if $($(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
# >'< 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 $$,$$$$,$(call escsq,$(cmd_$(1))))' > $(@D)/.$(@F).cmd)
	$(echo-cmd) $(cmd_$(1)); \
	echo 'cmd_$@ := $(make-cmd)' > $(@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 $$,$$$$,$(call escsq,$(cmd_$(1))))' > $(@D)/.$(@F).tmp; \
	$(echo-cmd) $(cmd_$(1)); \
	scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(@D)/.$(@F).tmp; \
	rm -f $(depfile); \
	mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd)

+3 −5
Original line number Diff line number Diff line
@@ -178,12 +178,10 @@ cmd_modversions = \
endif

define rule_cc_o_c
	$(if $($(quiet)cmd_checksrc),echo '  $($(quiet)cmd_checksrc)';)   \
	$(cmd_checksrc)							  \
	$(if $($(quiet)cmd_cc_o_c),echo '  $(call escsq,$($(quiet)cmd_cc_o_c))';)  \
	$(cmd_cc_o_c);							  \
	$(call echo-cmd,checksrc) $(cmd_checksrc)			  \
	$(call echo-cmd,cc_o_c) $(cmd_cc_o_c);				  \
	$(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);						  \
	mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd
endef
+2 −12
Original line number Diff line number Diff line
@@ -132,20 +132,10 @@ void usage(void)

/*
 * 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)
{
	char *p = cmdline;

	printf("cmd_%s := ", target);
	for (; *p; p++) {
		if (*p == '#')
			printf("\\");
		printf("%c", *p);
	}
	printf("\n\n");
	printf("cmd_%s := %s\n\n", target, cmdline);
}

char * str_config  = NULL;