]> Creatis software - gdcm.git/blob - setup.py
* Cosmetic changes:
[gdcm.git] / setup.py
1 from distutils.core import setup
2 import glob, os, sys, shutil
3 from distutilsWrapping import *
4 from WrapSwig import *
5 from WrapVTK import *
6
7 ThisModule='gdcmPython'
8 gdcmPythonSrcDir=ThisModule
9 gdcmSrcDir      ="src"
10 gdcmJpeg8SrcDir =os.path.join('src', 'jpeg', 'libijg8')
11 gdcmJpeg12SrcDir=os.path.join('src', 'jpeg', 'libijg12')
12 gdcmvtkSrcDir   ="vtk"
13 gdcmDictsDir    ="Dicts"
14 gdcmTestDir     ="Test"
15
16 # Due to a disutil oddity on Unices : see
17 # http://aspn.activestate.com/ASPN/Mail/Message/distutils-sig/588325
18 if(os.name=='posix'):
19         targetDir=os.path.join('lib','python'+sys.version[:3],'site-packages')
20         libraries=["stdc++"]
21         macros   =[('__STDC_LIMIT_MACROS', '1')]
22
23         VTKPATH="/usr"
24         vtkWrapper="vtkWrapPython"
25 else:
26         targetDir=os.path.join('lib','site-packages')
27         libraries=["WSOCK32"]
28         macros   =[]
29
30         try:
31                 VTKPATH=os.environ['VTKPATH']
32         except KeyError,e:
33                 err=str(e)
34                 print "Environment variable",err[err.rfind(':')+1:],'not defined, '\
35                        'please fix it!'
36                 VTKPATH="c:\\Creatis\\vtkDistrib"
37         vtkWrapper=os.path.join(VTKPATH,"bin","vtkWrapPython")
38
39 targetDir=os.path.join(targetDir, ThisModule)
40
41 ### Sources section: determination of sources for the extensions:
42 # Sources 1a/ The kernel of gdcm itself (which wrapped with Swig)
43 #             defines the first extension
44 Sources = []
45 Sources.extend(glob.glob(os.path.join(gdcmSrcDir,"*.cxx")))
46 Sources.append(os.path.join(gdcmPythonSrcDir,"gdcm.i"))
47 # Sources 1b/ The kernel of gdcm depends on a jpeg library whose sources are
48 #             contained in subdir gdcmJpeg8SrcDir. But within this subdir
49 #             some of the C files should not be compiled (refer to
50 #             gdcmJpeg8SrcDir/Makefile.am) !
51
52 Jpeg8Sources = glob.glob(os.path.join(gdcmJpeg8SrcDir,"j*.c"))
53 Jpeg8SourcesToRemove = ['jmemansi.c', 'jmemname.c', 'jmemdos.c', 'jmemmac.c']
54 for Remove in Jpeg8SourcesToRemove:
55    ### Because setup.py is a multiple pass process we need to trap
56    ### the case were the files were allready wed out on a previous pass.
57    try:
58       Jpeg8Sources.remove(os.path.join(gdcmJpeg8SrcDir, Remove))
59    except ValueError:
60       continue
61 Sources.extend(Jpeg8Sources)
62
63 Jpeg12Sources = glob.glob(os.path.join(gdcmJpeg12SrcDir,"j*.c"))
64 Jpeg12SourcesToRemove = ['jmemansi12.c', 'jmemname12.c', 'jmemdos12.c', 'jmemmac12.c']
65 for Remove in Jpeg12SourcesToRemove:
66    ### Because setup.py is a multiple pass process we need to trap
67    ### the case were the files were allready wed out on a previous pass.
68    try:
69       Jpeg12Sources.remove(os.path.join(gdcmJpeg12SrcDir, Remove))
70    except ValueError:
71       continue
72 Sources.extend(Jpeg12Sources)
73
74 # Sources 2/ The second extension contains the VTK classes (which we wrap
75 #            with the vtk wrappers):
76 VTK_INCLUDE_DIR=os.path.join(VTKPATH,"include","vtk")
77 VTK_LIB_DIR=os.path.join(VTKPATH,"lib","vtk")
78 vtkSources = []
79 vtkSources.extend(glob.glob(os.path.join(gdcmvtkSrcDir,"vtk*.cxx")))
80 vtkSources.extend(glob.glob(os.path.join(gdcmSrcDir,"*.cxx")))
81 vtkSources.extend(Jpeg8Sources)
82 vtkSources.extend(Jpeg12Sources)
83 vtkLibraries=["vtkCommon","vtkCommonPython",
84               "vtkIO","vtkIOPython",
85               "vtkFiltering","vtkFilteringPython"]
86
87 ##### 
88 setup(name=ThisModule,
89       version="0.3",
90       description="...",
91       author="frog",
92       author_email="frog@creatis.insa-lyon.fr",
93       url="http://www.creatis.insa-lyon.fr/",
94       packages=[ '.',
95                  gdcmPythonSrcDir,
96                  gdcmPythonSrcDir + '.demo' ],
97       cmdclass={'build_ext':build_extWrap}, # redirects default build_ext
98       ext_modules=[SwigExtension(name='_gdcm',
99                                  sources=Sources,
100                                  include_dirs=[gdcmSrcDir,gdcmJpeg8SrcDir,
101                                                gdcmSrcDir,gdcmJpeg12SrcDir],
102                                  libraries=libraries,
103                                  define_macros=macros,
104                                  swig_cpp=1,
105                                  swig_include=[gdcmSrcDir]
106                                 ),
107                    VTKExtension(name='gdcmPython.vtkgdcmPython',
108                                 sources=vtkSources,
109                                 include_dirs=[gdcmSrcDir,gdcmvtkSrcDir,
110                                               VTK_INCLUDE_DIR],
111                                 libraries=libraries+vtkLibraries,
112                                 define_macros=macros,
113                                 library_dirs=[VTK_LIB_DIR],
114                                 vtkWrapper=vtkWrapper,
115                                ),
116                                                 ],
117       data_files=[(os.path.join(targetDir,gdcmTestDir),
118                    glob.glob(os.path.join(gdcmTestDir,"*.acr"))),
119                   (os.path.join(targetDir,"Dicts"),
120                    glob.glob(os.path.join(gdcmDictsDir,"*.*"))),
121                 ]
122      )