Init commit for work on new binding

This contains the foundation for the new binding as well as early work on Module and Type.
This commit is contained in:
Siu Kwan Lam 2013-01-22 10:09:14 -06:00
commit a12c4da93d
23 changed files with 1477 additions and 0 deletions

54
newbinding/setup.py Normal file
View file

@ -0,0 +1,54 @@
import sys, os
from distutils.core import setup, Extension
llvm_config = os.environ.get('LLVM_CONFIG_PATH')
def run_llvm_config(args):
cmd = llvm_config + ' ' + ' '.join(args)
return os.popen(cmd).read().rstrip()
def get_libs_and_objs(components):
parts = run_llvm_config(['--libs'] + components).split()
libs = []
objs = []
for part in parts:
if part.startswith('-l'):
libs.append(part[2:])
elif part.endswith('.o'):
objs.append(part)
return libs, objs
incdir = run_llvm_config(['--includedir'])
libdir = run_llvm_config(['--libdir'])
ldflags = run_llvm_config(['--ldflags'])
macros = [('__STDC_CONSTANT_MACROS', None),
('__STDC_LIMIT_MACROS', None)]
extra_link_args = ldflags.split()
libs_core, objs_core = get_libs_and_objs(['core', 'analysis', 'scalaropts',
'executionengine', 'jit', 'native',
'interpreter', 'bitreader',
'bitwriter', 'instrumentation', 'ipa',
'ipo', 'transformutils', 'asmparser',
'linker', 'support', 'vectorize'])
ext_modules = [Extension(name='_api',
sources=['api.cpp'],
include_dirs = ['include', incdir],
library_dirs = [libdir],
libraries = libs_core,
define_macros = macros,
extra_objects = objs_core,
extra_link_args = extra_link_args),
Extension(name='_capsule',
sources=['capsule.cpp'],
include_dirs = ['include'],),
]
setup(name = 'llvmpy2',
description = 'Python bindings for LLVM',
author = 'Siu Kwan Lam',
ext_modules = ext_modules,
license = "BSD")