coriolis/hurricane/src/pyext/setup.py

70 lines
2.1 KiB
Python
Executable File

import sys
class BuildConfigurationFileReader:
def __init__(self):
src_dir=""
self.sources = ""
self.include_dirs = ""
self.library_dirs = ""
def load(self):
f = open("PyExtensionBuild.conf")
try:
for line in f:
if (line == "\n"):
continue
args = line.split("=", 1)
if (len(args) > 0):
if (len(args) != 2):
print "Error in configuration file"
print args
sys.exit(55)
if (args[0]=="src_dir"):
self.src_dir = args[1].strip("\n")
if (args[0]=="sources"):
self.sources = args[1].strip("\n").split(";")
self.sources = map(lambda s : self.src_dir + "/" + s, self.sources)
elif (args[0]=="include_dirs"):
self.include_dirs=[args[1].strip("\n")]
print self.include_dirs
elif (args[0]=="library_dirs"):
self.library_dirs=args[1].strip("\n").split(":")
finally:
f.close()
if (len(self.sources)==0 or len(self.include_dirs)==0 or len(self.library_dirs)==0):
print "Error in configuration file"
print self.sources
print self.include_dirs
print self.library_dirs
sys.exit(55)
class PyBuilder:
def __init__(self, sources, library_dirs, include_dirs):
self.sources = sources
self.libraryDirs = library_dirs
self.libraries = ['isobar', 'hurricane']
self.includeDirs = include_dirs
def build(self, build=False):
from distutils.core import setup, Extension
hurricane = Extension('Hurricane',
include_dirs=self.includeDirs,
libraries=self.libraries,
library_dirs=self.libraryDirs,
sources=self.sources,
define_macros=[('__PYTHON_MODULE__', '1')])
build = ('build' in sys.argv)
if (build):
setup(name='Hurricane',
version='2.0',
description = "Python Module for Hurricane",
author='Coriolis Team',
ext_modules=[hurricane])
if (__name__=='__main__'):
r = BuildConfigurationFileReader()
r.load()
b = PyBuilder(r.sources, r.library_dirs, r.include_dirs)
build = ('build' in sys.argv)
b.build(build)