143 lines
No EOL
4.2 KiB
Python
143 lines
No EOL
4.2 KiB
Python
#!/usr/bin/python2
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# This file is part of occmodel - See LICENSE.txt
|
|
#
|
|
import sys
|
|
import os
|
|
import glob
|
|
import shutil
|
|
|
|
from distutils.core import setup
|
|
from distutils.extension import Extension
|
|
|
|
try:
|
|
from Cython.Distutils import build_ext
|
|
except ImportError:
|
|
print >>sys.stderr, "Cython is required to build occmodel"
|
|
sys.exit(1)
|
|
|
|
try:
|
|
import geotools
|
|
except ImportError:
|
|
print >>sys.stderr, "geotools is required to build occmodel"
|
|
sys.exit(1)
|
|
|
|
viewer = True
|
|
try:
|
|
import gltools
|
|
except ImportError:
|
|
viewer = False
|
|
|
|
#sys.argv.append('build_ext')
|
|
#sys.argv.extend(['sdist','--formats=gztar,zip'])
|
|
#sys.argv.append('bdist_wininst')
|
|
|
|
# create config file
|
|
sys.dont_write_bytecode = True
|
|
import version
|
|
|
|
CONFIG = 'occmodel/@src/Config.pxi'
|
|
if not os.path.exists(CONFIG) and 'sdist' not in sys.argv:
|
|
with open(CONFIG, 'w') as fh:
|
|
fh.write("__version__ = '%s'\n" % version.STRING)
|
|
args = version.MAJOR, version.MINOR, version.BUILD
|
|
fh.write("__version_info__ = (%d,%d,%d)\n" % args)
|
|
|
|
OCC = \
|
|
'''FWOSPlugin PTKernel TKBO TKBRep TKBinL TKBool TKCDF TKFeat TKFillet
|
|
TKG2d TKG3d TKGeomAlgo TKGeomBase TKHLR TKIGES TKLCAF TKMath TKMesh TKOffset
|
|
TKPLCAF TKPShape TKPrim TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKSTL TKShHealing
|
|
TKShapeSchema TKStdLSchema TKTObj TKTopAlgo TKXMesh TKXSBase TKXmlL TKernel
|
|
'''
|
|
|
|
# platform specific settings
|
|
SOURCES = ["occmodel/occmodel.pyx"]
|
|
|
|
OBJECTS, LIBS, LINK_ARGS, COMPILE_ARGS = [],[],[],[]
|
|
if sys.platform == 'win32':
|
|
COMPILE_ARGS.append('/EHsc')
|
|
OCCINCLUDE = r"C:\vs9include\oce"
|
|
OCCLIBS = []
|
|
OBJECTS = [name + '.lib' for name in OCC.split()] + ['occmodel.lib',]
|
|
|
|
elif sys.platform == 'darwin':
|
|
SOURCES += glob.glob("occmodel/@src/*.cpp")
|
|
OCCINCLUDE = '/usr/include/oce'
|
|
OCCLIBS = OCC.split()
|
|
COMPILE_ARGS.append("-fpermissive")
|
|
|
|
else:
|
|
OCCINCLUDE = '/usr/include/oce'
|
|
OCCLIBS = OCC.split()
|
|
OBJECTS = ["occmodel/liboccmodel.a"]
|
|
COMPILE_ARGS.append("-fpermissive")
|
|
|
|
EXTENSIONS = [
|
|
Extension("occmodel",
|
|
sources = SOURCES,
|
|
depends = glob.glob("occmodel/@src/*.pxd") + \
|
|
glob.glob("occmodel/@src/*.pxi"),
|
|
include_dirs = ['occmodel/@src', OCCINCLUDE],
|
|
library_dirs = ['/lib/','occmodel'],
|
|
libraries = LIBS + OCCLIBS,
|
|
extra_link_args = LINK_ARGS,
|
|
extra_compile_args = COMPILE_ARGS,
|
|
extra_objects = OBJECTS,
|
|
language="c++"
|
|
)
|
|
]
|
|
|
|
# only build viewer of gltools is available
|
|
if viewer:
|
|
EXTENSIONS.append(
|
|
Extension("occmodelviewer", sources = ["occmodel/occmodelviewer.pyx"]),
|
|
)
|
|
|
|
classifiers = '''\
|
|
Development Status :: 4 - Beta
|
|
Environment :: MacOS X
|
|
Environment :: Win32 (MS Windows)
|
|
Environment :: X11 Applications
|
|
Intended Audience :: Science/Research
|
|
License :: OSI Approved :: GNU General Public License v2 (GPLv2)
|
|
Operating System :: OS Independent
|
|
Programming Language :: Cython
|
|
Topic :: Scientific/Engineering
|
|
'''
|
|
|
|
try:
|
|
setup(
|
|
name = 'occmodel',
|
|
version = version.STRING,
|
|
description = 'Easy access to the OpenCASCADE library',
|
|
long_description = \
|
|
'''**occmodel** is a small library which gives a high level access
|
|
to the OpenCASCADE modelling kernel.
|
|
|
|
For most users a direct use of the OpenCASCADE modelling
|
|
kernel can be quite a hurdle as it is a huge library.
|
|
|
|
The geometry can be visualized with the included viewer.
|
|
This viewer is utilizing modern OpenGL methods like GLSL
|
|
shaders and vertex buffers to ensure visual quality and
|
|
maximum speed. To use the viewer OpenGL version 2.1 is
|
|
needed.
|
|
|
|
In order to complete the installation OpenCASCADE must be installed
|
|
on the system. Check the home page or the README file for details.
|
|
''',
|
|
classifiers = [value for value in classifiers.split("\n") if value],
|
|
author='Runar Tenfjord',
|
|
author_email = 'runar.tenfjord@gmail.com',
|
|
license = 'GPLv2',
|
|
download_url='http://pypi.python.org/pypi/occmodel/',
|
|
url = 'http://github.com/tenko/occmodel',
|
|
platforms = ['any'],
|
|
scripts = ['occmodel/occmodeldemo.py'],
|
|
ext_modules = EXTENSIONS,
|
|
cmdclass = {'build_ext': build_ext}
|
|
)
|
|
except:
|
|
print('Traceback\n:%s\n' % str(sys.exc_info()[-2]))
|
|
sys.exit(1) |