X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=setup.py;h=df658a28f1bc2812f6d140f56604a2924d776898;hb=738c5370d807730d3e59ada72a1534876c51c8fd;hp=983c54fc74908fbdddaa97e49277613b694d1630;hpb=b7f909f6f6c37085bb05debd27c375c826c1ce74;p=gdcm.git diff --git a/setup.py b/setup.py index 983c54fc..df658a28 100644 --- a/setup.py +++ b/setup.py @@ -1,58 +1,129 @@ from distutils.core import setup -import glob, os, sys -from distutilsSwigCPlusPlus import * - -PythonIncludes=os.path.join(sys.exec_prefix, 'include') -PythonIncludes=os.path.join(PythonIncludes, 'python' + sys.version[:3]) +import glob, os, sys, shutil +from distutilsWrapping import * +from WrapSwig import * +from WrapVTK import * ThisModule='gdcmPython' - -gdcmSrcDir="src" gdcmPythonSrcDir=ThisModule +gdcmSrcDir ="src" +gdcmJpeg8SrcDir =os.path.join('src', 'jpeg', 'libijg8') +gdcmJpeg12SrcDir=os.path.join('src', 'jpeg', 'libijg12') +gdcmJpgSrcDir=os.path.join('src', 'jpeg', 'ljpg') +gdcmvtkSrcDir ="vtk" +gdcmDictsDir ="Dicts" +gdcmTestDir ="Test" # Due to a disutil oddity on Unices : see # http://aspn.activestate.com/ASPN/Mail/Message/distutils-sig/588325 if(os.name=='posix'): - targetDir=os.path.join('lib', 'python' + sys.version[:3]) - targetDir=os.path.join(targetDir, 'site-packages') - ExtraPath=ThisModule + targetDir=os.path.join('lib','python'+sys.version[:3],'site-packages') + libraries=["stdc++"] + macros =[('__STDC_LIMIT_MACROS', '1')] + + VTKPATH="/usr" + vtkWrapper="vtkWrapPython" else: - targetDir='Lib' - ExtraPath=os.path.join(targetDir,ThisModule) + targetDir=os.path.join('lib','site-packages') + libraries=["WSOCK32"] + macros =[] + + try: + VTKPATH=os.environ['VTKPATH'] + except KeyError,e: + err=str(e) + print "Environment variable",err[err.rfind(':')+1:],'not defined, '\ + 'please fix it!' + VTKPATH="c:\\Creatis\\vtkDistrib" + vtkWrapper=os.path.join(VTKPATH,"bin","vtkWrapPython") targetDir=os.path.join(targetDir, ThisModule) +### Sources section: determination of sources for the extensions: +# Sources 1a/ The kernel of gdcm itself (which wrapped with Swig) +# defines the first extension +Sources = [] +Sources.extend(glob.glob(os.path.join(gdcmSrcDir,"*.cxx"))) +Sources.append(os.path.join(gdcmPythonSrcDir,"gdcm.i")) +# Sources 1b/ The kernel of gdcm depends on a jpeg library whose sources are +# contained in subdir gdcmJpeg8SrcDir. But within this subdir +# some of the C files should not be compiled (refer to +# gdcmJpeg8SrcDir/Makefile.am) ! + +Jpeg8Sources = glob.glob(os.path.join(gdcmJpeg8SrcDir,"j*.c")) +Jpeg8SourcesToRemove = ['jmemansi.c', 'jmemname.c', 'jmemdos.c', 'jmemmac.c'] +for Remove in Jpeg8SourcesToRemove: + ### Because setup.py is a multiple pass process we need to trap + ### the case where the files were allready wed out on a previous pass. + try: + Jpeg8Sources.remove(os.path.join(gdcmJpeg8SrcDir, Remove)) + except ValueError: + continue +Sources.extend(Jpeg8Sources) + +Jpeg12Sources = glob.glob(os.path.join(gdcmJpeg12SrcDir,"j*.c")) +Jpeg12SourcesToRemove = ['jmemansi12.c', 'jmemname12.c', 'jmemdos12.c', 'jmemmac12.c'] +for Remove in Jpeg12SourcesToRemove: + ### Because setup.py is a multiple pass process we need to trap + ### the case where the files were allready wed out on a previous pass. + try: + Jpeg12Sources.remove(os.path.join(gdcmJpeg12SrcDir, Remove)) + except ValueError: + continue +Sources.extend(Jpeg12Sources) + +#For 'xmedcon' Jpeg Lossless +JpgSources =glob.glob(os.path.join(gdcmJpgSrcDir,"*.c")) +Sources.extend(JpgSources) + +# Sources 2/ The second extension contains the VTK classes (which we wrap +# with the vtk wrappers): +VTK_INCLUDE_DIR=os.path.join(VTKPATH,"include","vtk") +VTK_LIB_DIR=os.path.join(VTKPATH,"lib","vtk") +vtkSources = [] +vtkSources.extend(glob.glob(os.path.join(gdcmvtkSrcDir,"vtk*.cxx"))) +vtkSources.extend(glob.glob(os.path.join(gdcmSrcDir,"*.cxx"))) +vtkSources.extend(Jpeg8Sources) +vtkSources.extend(Jpeg12Sources) +vtkSources.extend(JpgSources) + +vtkLibraries=["vtkCommon","vtkCommonPython", + "vtkIO","vtkIOPython", + "vtkFiltering","vtkFilteringPython"] + +##### setup(name=ThisModule, - version="0.1", + version="0.3", description="...", author="frog", author_email="frog@creatis.insa-lyon.fr", url="http://www.creatis.insa-lyon.fr/", - packages=[ gdcmPythonSrcDir, - gdcmPythonSrcDir + '.demo', - ], - #package_dir={'':'python'}, - #extra_path = "zob", - cmdclass={'build_ext':mybuild_ext}, # redirects default build_ext - ext_modules=[MyExtension( - name='_gdcm', - sources=[os.path.join(gdcmSrcDir, "gdcmDict.cxx"), - os.path.join(gdcmSrcDir, "gdcmDictEntry.cxx"), - os.path.join(gdcmSrcDir, "gdcmDictSet.cxx"), - os.path.join(gdcmSrcDir, "gdcmElValSet.cxx"), - os.path.join(gdcmSrcDir, "gdcmElValue.cxx"), - os.path.join(gdcmSrcDir, "gdcmFile.cxx"), - os.path.join(gdcmSrcDir, "gdcmHeader.cxx"), - os.path.join(gdcmSrcDir, "gdcmUtil.cxx"), - os.path.join(gdcmPythonSrcDir, "gdcm.i")], - include_dirs=[gdcmSrcDir, PythonIncludes], - libraries=["stdc++"], - #library_dirs=[VTK_LIB_DIR], - swig_cpp=1, - swig_include=[gdcmSrcDir] ) ], - data_files=[(os.path.join(targetDir,"Data"), - glob.glob(os.path.join("Data","*.*"))), + packages=[ '.', + gdcmPythonSrcDir, + gdcmPythonSrcDir + '.demo' ], + cmdclass={'build_ext':build_extWrap}, # redirects default build_ext + ext_modules=[SwigExtension(name='_gdcm', + sources=Sources, + include_dirs=[gdcmSrcDir,gdcmJpeg8SrcDir, + gdcmJpeg12SrcDir,gdcmJpgSrcDir], + libraries=libraries, + define_macros=macros, + swig_cpp=1, + swig_include=[gdcmSrcDir] + ), + VTKExtension(name='gdcmPython.vtkgdcmPython', + sources=vtkSources, + include_dirs=[gdcmSrcDir,gdcmvtkSrcDir, + VTK_INCLUDE_DIR], + libraries=libraries+vtkLibraries, + define_macros=macros, + library_dirs=[VTK_LIB_DIR], + vtkWrapper=vtkWrapper, + ), + ], + data_files=[(os.path.join(targetDir,gdcmTestDir), + glob.glob(os.path.join(gdcmTestDir,"*.acr"))), (os.path.join(targetDir,"Dicts"), - glob.glob(os.path.join("Dicts","*.*"))), + glob.glob(os.path.join(gdcmDictsDir,"*.*"))), ] )