makepanda: Add pyenv support

Only tested on Linux with Clang

Closes #943
This commit is contained in:
Mitchell Stokes 2020-05-26 22:31:36 -07:00 committed by rdb
parent ffef5968fe
commit eef55f19d8
2 changed files with 28 additions and 0 deletions

View File

@ -1972,6 +1972,10 @@ def CompileLink(dll, obj, opts):
if GetOrigExt(x) != ".dat":
cmd += ' ' + x
pyenv_prefix = GetPyenvPrefix()
if pyenv_prefix is not None:
cmd += ' -L' + os.path.join(pyenv_prefix, 'lib')
if (GetOrigExt(dll) == ".exe" and GetTarget() == 'windows' and "NOICON" not in opts):
cmd += " " + GetOutputDir() + "/tmp/pandaIcon.res"

View File

@ -548,6 +548,24 @@ def GetFlex():
return FLEX
def GetPyenvPrefix():
pyenv_prefix = None
try:
pyenv_prefix = subprocess.check_output(['pyenv', 'virtualenv-prefix'])
except subprocess.CalledProcessError:
pass
try:
if pyenv_prefix is None:
pyenv_prefix = subprocess.check_output(['pyenv', 'prefix'])
except subprocess.CalledProcessError:
pass
if pyenv_prefix is not None:
pyenv_prefix = pyenv_prefix.decode('utf8').strip()
return pyenv_prefix
########################################################################
##
## LocateBinary
@ -3065,6 +3083,12 @@ def SetupBuildEnvironment(compiler):
for dir in SYS_INC_DIRS:
print(" " + dir)
# Check to see if pyenv is being used and update SYS dirs accordingly
pyenv_prefix = GetPyenvPrefix()
if pyenv_prefix is not None:
SYS_LIB_DIRS.insert(0, os.path.join(pyenv_prefix, 'lib'))
SYS_INC_DIRS.insert(0, os.path.join(pyenv_prefix, 'include'))
# If we're cross-compiling, no point in putting our output dirs on the path.
if CrossCompiling():
return