OSDN Git Service

ab7646d921f1699150757f10ff2629279dbe3977
[meshio/meshio.git] / swig / setup.py
1 # coding: utf-8
2
3 #from distutils.core import setup, Extension
4 from setuptools import setup, Extension
5 import os
6 import sys
7 import shutil
8
9 VERSION='1.03'
10
11 option={
12         'swig_opts': ['-c++'],
13         'include_dirs': [
14             '../include'
15             ],
16         'libraries': [
17             'meshio',
18             ],
19         'library_dirs': [
20             '../release',
21             ],
22         }
23
24 # copy englishmap
25 shutil.copy("pymeshio/englishmap.py", ".")
26
27 if os.name=='nt':
28     # vc option
29     option['extra_compile_args']=[
30             '/EHsc', '/MT',
31             ]
32
33 # swig c extensions    
34 ext_modules=[
35         Extension("_mqo", ["mqo.i"], **option),
36         Extension("_pmd", ["pmd.i"], **option),
37         Extension("_vmd", ["vmd.i"], **option),
38         ]
39
40 # blender importers
41 if sys.version_info[0]<3:
42     # blender 2.4
43      data_files=[
44              ('blender24', [
45                  'blender/README24',
46                  'blender/bl24.py',
47                  'blender/mqo_import.py', 
48                  'blender/mqo_export.py',
49                  'blender/pmd_import.py', 
50                  'blender/pmd_export.py', 
51                  ]),
52              ('blender24/pymeshio', [
53                  'pymeshio/__init__.py',
54                  'pymeshio/mqo.py',
55                  'pymeshio/mmd.py',
56                  'pymeshio/englishmap.py',
57                  ]),
58              ]
59
60 else:
61     # rename blender25 files
62     if not os.path.exists("addons"):
63         os.mkdir("addons")
64     shutil.copy("blender/mqo_import.py", "addons/io_import_scene_mqo.py")
65     shutil.copy("blender/mqo_export.py", "addons/io_export_scene_mqo.py")
66     shutil.copy("blender/pmd_import.py", "addons/io_import_scene_pmd.py")
67     shutil.copy("blender/pmd_export.py", "addons/io_export_scene_pmd.py")
68
69     # blender2.5
70     data_files=[
71             ('blender25', [
72                 'blender/README25',
73                 ]),
74             ('blender25/addons', [
75                 'blender/bl25.py',
76                 'addons/io_import_scene_mqo.py',
77                 'addons/io_export_scene_mqo.py',
78                 'addons/io_import_scene_pmd.py',
79                 'addons/io_export_scene_pmd.py',
80                 ]),
81             ('blender25/addons/pymeshio', [
82                 'pymeshio/__init__.py',
83                 'pymeshio/mqo.py',
84                 'pymeshio/mmd.py',
85                 'pymeshio/englishmap.py',
86                 ]),
87             ]
88
89 if os.name=='nt':
90     import distutils.msvc9compiler
91     org=distutils.msvc9compiler.MSVCCompiler.link
92     def custom(self, *args):
93         try:
94             org(self, *args)
95         except distutils.msvc9compiler.LinkError as e:
96             print(e)
97     distutils.msvc9compiler.MSVCCompiler.link=custom
98
99 else:
100     import re
101     pattern=re.compile("<:")
102     def edit(f):
103         new_file=f+".cpp"
104         io=open(new_file, 'wb')
105         for line in open(f):
106             if sys.version_info[0]<3:
107                 io.write(pattern.sub("< :", line))
108             else:
109                 io.write(pattern.sub("< :", line).encode('utf-8'))
110         io.close()
111         return new_file
112
113     import distutils.command.build_ext
114     org=distutils.command.build_ext.build_ext.swig_sources
115     def custom(self, sources, extension):
116         return [edit(f) for f in org(self, sources, extension)]
117     distutils.command.build_ext.build_ext.swig_sources=custom
118
119 setup(name="meshio",
120         version=VERSION,
121         description='polygon mesh io utilities',
122         author='ousttrue',
123         author_email='ousttrue@gmail.com',
124         url='http://sourceforge.jp/projects/meshio/',
125         packages=['meshio'],
126         package_dir={'meshio': '.'},
127         ext_package='meshio',
128         ext_modules=ext_modules,
129         data_files=data_files,
130         classifiers = [
131             "Programming Language :: Python",
132             "Programming Language :: Python :: 3",
133             "Development Status :: 4 - Beta",
134             "Environment :: Other Environment",
135             "Intended Audience :: Developers",
136             "License :: OSI Approved :: BSD License",
137             "Operating System :: Microsoft :: Windows",
138             "Operating System :: POSIX :: Linux",
139             "Natural Language :: Japanese",
140             "Topic :: Multimedia :: Graphics :: 3D Modeling",
141             ],
142         )
143