Makefile(s): avoid recipe prefix in conditional statements
In GNU Make commit 07fcee35 ([SV 64815] Recipe lines cannot contain
conditional statements, 2023-05-22) and following, conditional
statements may no longer be preceded by a tab character (which Make
refers to as the recipe prefix).
There are a handful of spots in our various Makefile(s) which will break
in a future release of Make containing 07fcee35. For instance, trying to
compile the pre-image of this patch with the tip of make.git results in
the following:
$ make -v | head -1 && make
GNU Make 4.4.90
config.mak.uname:842: *** missing 'endif'. Stop.
The kernel addressed this issue in 82175d1f9430 (kbuild: Replace tabs
with spaces when followed by conditionals, 2024-01-28). Address the
issues in Git's tree by applying the same strategy.
When a conditional word (ifeq, ifneq, ifdef, etc.) is preceded by one or
more tab characters, replace each tab character with 8 space characters
with the following:
find . -type f -not -path './.git/*' -name Makefile -or -name '*.mak' |
xargs perl -i -pe '
s/(\t+)(ifn?eq|ifn?def|else|endif)/" " x (length($1) * 8) . $2/ge unless /\\$/
'
The "unless /\\$/" removes any false-positives (like "\telse \"
appearing within a shell script as part of a recipe).
After doing so, Git compiles on newer versions of Make:
$ make -v | head -1 && make
GNU Make 4.4.90
GIT_VERSION = 2.44.0.414.gfac1dc44ca9
[...]
$ echo $?
0
[j6t: cherry-picked from 728b9ac0c3]
Reported-by: Dario Gjorgjevski <dario.gjorgjevski@gmail.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
maint
parent
34a2498659
commit
1351570912
16
Makefile
16
Makefile
|
|
@ -107,12 +107,12 @@ endif
|
|||
|
||||
ifeq ($(uname_S),Darwin)
|
||||
TKFRAMEWORK = /Library/Frameworks/Tk.framework/Resources/Wish.app
|
||||
ifeq ($(shell echo "$(uname_R)" | awk -F. '{if ($$1 >= 9) print "y"}')_$(shell test -d $(TKFRAMEWORK) || echo n),y_n)
|
||||
ifeq ($(shell echo "$(uname_R)" | awk -F. '{if ($$1 >= 9) print "y"}')_$(shell test -d $(TKFRAMEWORK) || echo n),y_n)
|
||||
TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish.app
|
||||
ifeq ($(shell test -d $(TKFRAMEWORK) || echo n),n)
|
||||
ifeq ($(shell test -d $(TKFRAMEWORK) || echo n),n)
|
||||
TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
TKEXECUTABLE = $(shell basename "$(TKFRAMEWORK)" .app)
|
||||
endif
|
||||
|
||||
|
|
@ -143,9 +143,9 @@ ifeq ($(exedir),$(gg_libdir))
|
|||
endif
|
||||
gg_libdir_sed_in := $(gg_libdir)
|
||||
ifeq ($(uname_S),Darwin)
|
||||
ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
|
||||
ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
|
||||
GITGUI_MACOSXAPP := YesPlease
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifneq (,$(findstring MINGW,$(uname_S)))
|
||||
ifeq ($(shell expr "$(uname_R)" : '1\.'),2)
|
||||
|
|
@ -220,9 +220,9 @@ ifdef NO_MSGFMT
|
|||
MSGFMT ?= $(TCL_PATH) po/po2msg.sh
|
||||
else
|
||||
MSGFMT ?= msgfmt
|
||||
ifneq ($(shell $(MSGFMT) --tcl -l C -d . /dev/null 2>/dev/null; echo $$?),0)
|
||||
ifneq ($(shell $(MSGFMT) --tcl -l C -d . /dev/null 2>/dev/null; echo $$?),0)
|
||||
MSGFMT := $(TCL_PATH) po/po2msg.sh
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
msgsdir = $(gg_libdir)/msgs
|
||||
|
|
|
|||
Loading…
Reference in New Issue