forked from bartvdbraak/blender
72ac596e19
Brings new bounds limiting and also prepares build system for the changes in the upstream. Namely shared_ptr header and namespace is now being detected by a build system rather than by hacks in the code. This commit includes some changes to auto-detection flags in SCons, presumably adding more consistency there. This is main changes which are suppoed to be reviewed here. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D581
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
import os
|
|
import platform
|
|
|
|
def FindPython():
|
|
all_abi_flags = ['m', 'mu', '']
|
|
|
|
python = "/usr"
|
|
abi_flags = "m" # Most common for linux distros
|
|
version = "3.4"
|
|
|
|
_arch = platform.uname()[4] + "-linux-gnu"
|
|
|
|
# Determine ABI flags used on this system
|
|
include = os.path.join(python, "include")
|
|
for cur_flags in all_abi_flags:
|
|
inc = os.path.join(include, "python" + version + cur_flags, "Python.h")
|
|
if os.path.exists(inc):
|
|
abi_flags = cur_flags
|
|
break
|
|
|
|
# Find config.h. In some distros, such as ubuntu 12.10 they are not in standard include dir.
|
|
incconf = os.path.join(include, _arch, "python" + version + cur_flags)
|
|
if not os.path.exists(os.path.join(incconf, "pyconfig.h")):
|
|
incconf = ''
|
|
|
|
# Determine whether python is in /usr/lib or /usr/lib64
|
|
lib32 = os.path.join(python, "lib", "python" + version, "sysconfig.py")
|
|
lib64 = os.path.join(python, "lib64", "python" + version, "sysconfig.py")
|
|
if os.path.exists(lib32):
|
|
libpath = "${BF_PYTHON}/lib"
|
|
elif os.path.exists(lib64):
|
|
libpath = "${BF_PYTHON}/lib64"
|
|
else:
|
|
# roll back to default value
|
|
libpath = "${BF_PYTHON}/lib"
|
|
|
|
libpath_arch = libpath
|
|
_libpath_arch = os.path.join(python, "lib", _arch) # No lib64 stuff with recent deb-like distro afaik...
|
|
_libs = ["libpython" + version + abi_flags + ext for ext in (".so", ".a")]
|
|
for l in _libs:
|
|
if not os.path.exists(os.path.join(libpath, l)) and os.path.exists(os.path.join(_libpath_arch, l)):
|
|
libpath_arch = os.path.join(libpath, _arch)
|
|
break
|
|
|
|
return {"PYTHON": python,
|
|
"VERSION": version,
|
|
"LIBPATH": libpath,
|
|
"LIBPATH_ARCH": libpath_arch,
|
|
"ABI_FLAGS": abi_flags,
|
|
"CONFIG": incconf}
|