Pass llvm version and ptx support to wrapper generator through environ
This commit is contained in:
parent
5d83d626f6
commit
ae6dab8e50
3 changed files with 32 additions and 12 deletions
|
|
@ -838,3 +838,17 @@ class Attr(object):
|
||||||
writer.println()
|
writer.println()
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pick-up environ var
|
||||||
|
#
|
||||||
|
PTX_SUPPORT = os.environ['LLVMPY_PTX_SUPPORT']
|
||||||
|
|
||||||
|
def _parse_llvm_version(ver):
|
||||||
|
import re
|
||||||
|
m = re.compile(r'(\d+)\.(\d+)').match(ver)
|
||||||
|
assert m
|
||||||
|
major, minor = m.groups()
|
||||||
|
return int(major), int(minor)
|
||||||
|
|
||||||
|
LLVM_VERSION = _parse_llvm_version(os.environ['LLVMPY_LLVM_VERSION'])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,14 @@ InitializeNativeTargetDisassembler = llvm.Function(
|
||||||
#InitializeAllTargetMCs = llvm.Function('InitializeAllTargetMCs')
|
#InitializeAllTargetMCs = llvm.Function('InitializeAllTargetMCs')
|
||||||
#InitializeAllAsmPrinters = llvm.Function('InitializeAllAsmPrinters')
|
#InitializeAllAsmPrinters = llvm.Function('InitializeAllAsmPrinters')
|
||||||
|
|
||||||
#LLVMInitializePTXTarget = default.Function('LLVMInitializePTXTarget')
|
if PTX_SUPPORT == 'PTX':
|
||||||
#LLVMInitializePTXTargetInfo = default.Function('LLVMInitializePTXTargetInfo')
|
LLVMInitializePTXTarget = default.Function('LLVMInitializePTXTarget')
|
||||||
#LLVMInitializePTXTargetMC = default.Function('LLVMInitializePTXTargetMC')
|
LLVMInitializePTXTargetInfo = default.Function('LLVMInitializePTXTargetInfo')
|
||||||
#LLVMInitializePTXAsmPrinter = default.Function('LLVMInitializePTXAsmPrinter')
|
LLVMInitializePTXTargetMC = default.Function('LLVMInitializePTXTargetMC')
|
||||||
|
LLVMInitializePTXAsmPrinter = default.Function('LLVMInitializePTXAsmPrinter')
|
||||||
|
|
||||||
LLVMInitializeNVPTXTarget = default.Function('LLVMInitializeNVPTXTarget')
|
if PTX_SUPPORT == 'NVPTX':
|
||||||
LLVMInitializeNVPTXTargetInfo = default.Function('LLVMInitializeNVPTXTargetInfo')
|
LLVMInitializeNVPTXTarget = default.Function('LLVMInitializeNVPTXTarget')
|
||||||
LLVMInitializeNVPTXTargetMC = default.Function('LLVMInitializeNVPTXTargetMC')
|
LLVMInitializeNVPTXTargetInfo = default.Function('LLVMInitializeNVPTXTargetInfo')
|
||||||
LLVMInitializeNVPTXAsmPrinter = default.Function('LLVMInitializeNVPTXAsmPrinter')
|
LLVMInitializeNVPTXTargetMC = default.Function('LLVMInitializeNVPTXTargetMC')
|
||||||
|
LLVMInitializeNVPTXAsmPrinter = default.Function('LLVMInitializeNVPTXAsmPrinter')
|
||||||
|
|
|
||||||
12
setup.py
12
setup.py
|
|
@ -97,7 +97,7 @@ def determine_to_use_dynlink(libdir, llvm_version):
|
||||||
|
|
||||||
|
|
||||||
dynlink = determine_to_use_dynlink(libdir, llvm_version)
|
dynlink = determine_to_use_dynlink(libdir, llvm_version)
|
||||||
|
ptx_support = ''
|
||||||
|
|
||||||
if dynlink:
|
if dynlink:
|
||||||
print('Using dynamic linking')
|
print('Using dynamic linking')
|
||||||
|
|
@ -120,12 +120,13 @@ else:
|
||||||
if (nvptx_components & enabled_components) == nvptx_components:
|
if (nvptx_components & enabled_components) == nvptx_components:
|
||||||
print("Using NVPTX")
|
print("Using NVPTX")
|
||||||
extra_components.extend(nvptx_components)
|
extra_components.extend(nvptx_components)
|
||||||
|
ptx_support = 'NVPTX'
|
||||||
elif (ptx_components & enabled_components) == ptx_components:
|
elif (ptx_components & enabled_components) == ptx_components:
|
||||||
print("Using PTX")
|
print("Using PTX")
|
||||||
extra_components.extend(ptx_components)
|
extra_components.extend(ptx_components)
|
||||||
|
ptx_support = 'PTX'
|
||||||
else:
|
else:
|
||||||
print("No CUDA support")
|
print("No CUDA support")
|
||||||
macros.append(('LLVM_DISABLE_PTX', None))
|
|
||||||
|
|
||||||
libs_core, objs_core = get_libs_and_objs(
|
libs_core, objs_core = get_libs_and_objs(
|
||||||
['core', 'analysis', 'scalaropts', 'executionengine',
|
['core', 'analysis', 'scalaropts', 'executionengine',
|
||||||
|
|
@ -136,14 +137,17 @@ else:
|
||||||
|
|
||||||
if sys.platform == 'win32':
|
if sys.platform == 'win32':
|
||||||
# If no PTX lib got added, disable PTX in the build
|
# If no PTX lib got added, disable PTX in the build
|
||||||
if 'LLVMPTXCodeGen' not in libs_core:
|
if 'LLVMPTXCodeGen' in libs_core:
|
||||||
macros.append(('LLVM_DISABLE_PTX', None))
|
ptx_support = 'ptx'
|
||||||
else:
|
else:
|
||||||
macros.append(('_GNU_SOURCE', None))
|
macros.append(('_GNU_SOURCE', None))
|
||||||
|
|
||||||
# auto generate bindings
|
# auto generate bindings
|
||||||
|
os.environ['LLVMPY_PTX_SUPPORT'] = ptx_support
|
||||||
|
os.environ['LLVMPY_LLVM_VERSION'] = llvm_version
|
||||||
check_call([sys.executable, 'llvmpy/build.py'])
|
check_call([sys.executable, 'llvmpy/build.py'])
|
||||||
|
|
||||||
|
# generate shared objects
|
||||||
extra_link_args = ldflags.split()
|
extra_link_args = ldflags.split()
|
||||||
kwds = dict(
|
kwds = dict(
|
||||||
ext_modules = [
|
ext_modules = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue