[Make][Python] Look for Python3

This commit is contained in:
Kenn Sebesta 2021-12-02 07:05:43 -05:00
parent a65b4dae49
commit b0749cd06f
3 changed files with 71 additions and 13 deletions

View File

@ -5,8 +5,6 @@
# system. # system.
QT_SPEC ?= linux-g++
############################ ############################
# Check for and find Python # Check for and find Python
############################ ############################
@ -14,25 +12,28 @@ QT_SPEC ?= linux-g++
# Get Python version, separate major/minor/patch, then put into wordlist # Get Python version, separate major/minor/patch, then put into wordlist
PYTHON_VERSION_=$(wordlist 2,4,$(subst ., ,$(shell python -V 2>&1))) PYTHON_VERSION_=$(wordlist 2,4,$(subst ., ,$(shell python -V 2>&1)))
# Get major version from aforementioned list # Get major version from aforementioned list
PYTHON_MAJOR_VERSION_=$(word 1,$(PYTHON_VERSION_)) PYTHON_MAJOR_VERSION_=$(word 1,$(PYTHON_VERSION_))
# Just in case Make has some weird scope stuff # Just in case Make has some weird scope stuff
PYTHON=0 PYTHON=0
# If the major Python version is the one we want.. # If the major Python version is the one we want..
ifeq ($(PYTHON_MAJOR_VERSION_),2) ifeq ($(PYTHON_MAJOR_VERSION_),3)
# Then we can just use the normal Python executable # Then we can just use the normal Python executable
PYTHON:=python PYTHON:=python
else else
# However, this isn't always the case.. # However, this isn't always the case..
# Let's look for `python2`. If `which` doesn't return a null value, then # Let's look for `python3`. If `which` doesn't return a null value, then
# it exists! # it exists!
ifneq ($(shell which python2), "") ifneq ($(shell which python3), "")
PYTHON:=python2 PYTHON:=python3
else else
# And if it doesn't exist, let's use the default Python, and warn the user. # And if it doesn't exist, let's use the default Python, and warn the user.
# PYTHON NOT FOUND. # PYTHON NOT FOUND.
PYTHON:=python PYTHON:=python
echo "Python not found." $(warning "Python3 not found.")
endif endif
endif endif

View File

@ -9,15 +9,36 @@
# Check for and find Python # Check for and find Python
############################ ############################
ifneq (, $(shell which /usr/local/bin/python))
# Homebrew python present. Use it. # Get Python version, separate major/minor/patch, then put into wordlist
PYTHON_ROOT:=/usr/local/bin/ PYTHON_VERSION_=$(wordlist 2,4,$(subst ., ,$(shell python -V 2>&1)))
# Get major version from aforementioned list
PYTHON_MAJOR_VERSION_=$(word 1,$(PYTHON_VERSION_))
# Just in case Make has some weird scope stuff
PYTHON=0
# If the major Python version is the one we want..
ifeq ($(PYTHON_MAJOR_VERSION_),3)
# Then we can just use the normal Python executable
PYTHON:=python
else else
# Homebrew python not present. Use the system python command. # However, this isn't always the case..
PYTHON_ROOT:=/usr/bin/ # Let's look for `python3`. If `which` doesn't return a null value, then
# it exists!
ifneq ($(shell which python3), "")
PYTHON:=python3
else
# And if it doesn't exist, let's use the default Python, and warn the user.
# PYTHON NOT FOUND.
PYTHON:=python \
$(warning "Python3 not found.")
endif
endif endif
#include $(ROOT_DIR)/make/python.mk export PYTHON
############################ ############################
# Configure shell commands # Configure shell commands

View File

@ -4,6 +4,42 @@
# Configure an environment that will allow VESC's code to be built on a Windows # Configure an environment that will allow VESC's code to be built on a Windows
# system. # system.
############################
# Check for and find Python
############################
# Get Python version, separate major/minor/patch, then put into wordlist
PYTHON_VERSION_=$(wordlist 2,4,$(subst ., ,$(shell python -V 2>&1)))
# Get major version from aforementioned list
PYTHON_MAJOR_VERSION_=$(word 1,$(PYTHON_VERSION_))
# Just in case Make has some weird scope stuff
PYTHON=0
# If the major Python version is the one we want..
ifeq ($(PYTHON_MAJOR_VERSION_),3)
# Then we can just use the normal Python executable
PYTHON:=python
else
# However, this isn't always the case..
# Let's look for `python3`. If `where` doesn't return a null value, then
# it exists!
ifneq ($(shell where python3), "")
PYTHON:=python3
else
# And if it doesn't exist, let's use the default Python, and warn the user.
# PYTHON NOT FOUND.
PYTHON:=python \
$(warning "Python3 not found.")
endif
endif
export PYTHON
############################ ############################
# Configure shell commands # Configure shell commands
############################ ############################