mirror of
https://github.com/boostorg/python.git
synced 2026-01-20 04:42:28 +00:00
141 lines
4.0 KiB
Python
141 lines
4.0 KiB
Python
#!/usr/bin/python
|
|
# Copyright Bruno da Silva de Oliveira 2003. Use, modification and
|
|
# distribution is subject to the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http:#www.boost.org/LICENSE_1_0.txt)
|
|
|
|
import os
|
|
import glob
|
|
import shutil
|
|
import sys
|
|
import time
|
|
|
|
#=============================================================================
|
|
# win32 configuration
|
|
#=============================================================================
|
|
if sys.platform == 'win32':
|
|
|
|
includes = '-ID:/programming/libraries/boost-cvs/boost -ID:/Bin/Python/include'
|
|
build_pyste_cmd = 'python ../src/Pyste/pyste.py --pyste-ns=pyste --cache-dir=cache %s ' % includes
|
|
compile_single_cmd = 'cl /nologo /GR /GX -c %s -I. ' % includes
|
|
link_single_cmd = 'link /nologo /DLL '\
|
|
'/libpath:D:/programming/libraries/boost-cvs/lib /libpath:D:/Bin/Python/libs '\
|
|
'boost_python.lib python24.lib /out:_%s.dll '
|
|
obj_ext = 'obj'
|
|
|
|
#=============================================================================
|
|
# linux configuration
|
|
#=============================================================================
|
|
elif sys.platform == 'linux2':
|
|
|
|
build_pyste_cmd = 'python ../src/Pyste/pyste.py -I. '
|
|
compile_single_cmd = 'g++ -shared -c -I. -I/usr/include/python2.4 '
|
|
link_single_cmd = 'g++ -shared -o _%s.so -lboost_python '
|
|
obj_ext = 'o'
|
|
|
|
|
|
|
|
def build_pyste(multiple, module):
|
|
rest = '%s --module=_%s %s.pyste' % (multiple, module, module)
|
|
execute(build_pyste_cmd + rest)
|
|
|
|
|
|
def compile_single(module):
|
|
module_obj = ''
|
|
if os.path.isfile(module+'.cpp'):
|
|
execute(compile_single_cmd + module+'.cpp')
|
|
module_obj = module + '.' + obj_ext
|
|
execute(compile_single_cmd + ('_%s.cpp' % module))
|
|
link = link_single_cmd % module
|
|
execute(link + ('_%s.%s ' % (module, obj_ext)) + module_obj)
|
|
|
|
|
|
def compile_multiple(module):
|
|
module_obj = ''
|
|
if os.path.isfile(module+'.cpp'):
|
|
execute(compile_single_cmd + module+'.cpp')
|
|
module_obj = module + '.' + obj_ext
|
|
files = glob.glob('_%s/*.cpp' % module)
|
|
for f in files:
|
|
execute(compile_single_cmd + f)
|
|
def basename(name):
|
|
return os.path.basename(os.path.splitext(name)[0])
|
|
objs = [basename(x) + '.' + obj_ext for x in files]
|
|
objs.append(module_obj)
|
|
execute((link_single_cmd % module) + ' '.join(objs))
|
|
|
|
|
|
def execute(cmd):
|
|
os.system(cmd)
|
|
|
|
|
|
def run_tests():
|
|
if os.system('python runtests.py') != 0:
|
|
raise RuntimeError, 'tests failed'
|
|
|
|
|
|
def cleanup():
|
|
modules = get_modules()
|
|
extensions = '*.dll *.pyc *.obj *.exp *.lib *.o *.so'
|
|
files = []
|
|
for module in modules:
|
|
files.append('_' + module + '.cpp')
|
|
for ext in extensions.split():
|
|
files += glob.glob(ext)
|
|
files.append('build.log')
|
|
for file in files:
|
|
try:
|
|
os.remove(file)
|
|
except OSError: pass
|
|
|
|
for module in modules:
|
|
try:
|
|
shutil.rmtree('_' + module)
|
|
except OSError: pass
|
|
|
|
|
|
def main(multiple, module=None):
|
|
if module is None:
|
|
modules = get_modules()
|
|
else:
|
|
modules = [module]
|
|
|
|
start = time.clock()
|
|
for module in modules:
|
|
build_pyste(multiple, module)
|
|
print '-'*50
|
|
print 'Building pyste files: %0.2f seconds' % (time.clock()-start)
|
|
print
|
|
|
|
start = time.clock()
|
|
for module in modules:
|
|
if multiple:
|
|
compile_multiple(module)
|
|
else:
|
|
compile_single(module)
|
|
print '-'*50
|
|
print 'Compiling files: %0.2f seconds' % (time.clock()-start)
|
|
print
|
|
if len(modules) == 1:
|
|
os.system('python %sUT.py' % modules[0])
|
|
else:
|
|
run_tests()
|
|
#cleanup()
|
|
|
|
|
|
def get_modules():
|
|
def getname(file):
|
|
return os.path.splitext(os.path.basename(file))[0]
|
|
return [getname(x) for x in glob.glob('*.pyste')]
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) > 1:
|
|
module = sys.argv[1]
|
|
else:
|
|
module = None
|
|
try:
|
|
# main('--multiple', module)
|
|
main('', module)
|
|
except RuntimeError, e:
|
|
print e
|