Use python3 when building on non-Windows for Windows

The makefiles look for python3 on Unix-like systems where python is often
Python 2. This uses sh code so it doesn't work on Windows. On Windows, the
makefiles just assume that python is Python 3.

The code was incorrectly deciding not to try python3 based on WINDOWS_BUILD,
which indicates that the build is *for* Windows. Switch to checking WINDOWS,
which indicates that the build is *on* Windows.

Fix #4774

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2021-07-13 18:14:25 +02:00
parent 5df77c63fb
commit 8b427c851e
3 changed files with 14 additions and 2 deletions

View file

@ -0,0 +1,4 @@
Bugfix
* The GNU makefiles invoke python3 in preference to python except on Windows.
The check was accidentally not performed when cross-compiling for Windows
on Linux. Fix this. Fixes #4774.

View file

@ -43,11 +43,15 @@ LOCAL_LDFLAGS += -lws2_32
ifdef SHARED ifdef SHARED
SHARED_SUFFIX=.$(DLEXT) SHARED_SUFFIX=.$(DLEXT)
endif endif
PYTHON ?= python
else else
DLEXT ?= so DLEXT ?= so
EXEXT= EXEXT=
SHARED_SUFFIX= SHARED_SUFFIX=
endif
ifdef WINDOWS
PYTHON ?= python
else
PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi) PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi)
endif endif

View file

@ -50,11 +50,15 @@ LOCAL_LDFLAGS += -lws2_32
ifdef SHARED ifdef SHARED
SHARED_SUFFIX=.$(DLEXT) SHARED_SUFFIX=.$(DLEXT)
endif endif
PYTHON ?= python
else else
DLEXT ?= so DLEXT ?= so
EXEXT= EXEXT=
SHARED_SUFFIX= SHARED_SUFFIX=
endif
ifdef WINDOWS
PYTHON ?= python
else
PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi) PYTHON ?= $(shell if type python3 >/dev/null 2>/dev/null; then echo python3; else echo python; fi)
endif endif