From f94f85b5578c5a8575f9cadc3702766defd9d707 Mon Sep 17 00:00:00 2001 From: malaterre Date: Thu, 13 Nov 2003 10:37:44 +0000 Subject: [PATCH] *ENH: Add a setup.py.in that cmake will parse and give the right path to VTK ... It creates a new setup.py in gdcm${bin}/gdcmPython (in order not to override old setup.py) --- gdcmPython/setup.py.in | 129 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 gdcmPython/setup.py.in diff --git a/gdcmPython/setup.py.in b/gdcmPython/setup.py.in new file mode 100644 index 00000000..e5e29880 --- /dev/null +++ b/gdcmPython/setup.py.in @@ -0,0 +1,129 @@ +from distutils.core import setup +import glob, os, sys, shutil +from distutilsWrapping import * +from WrapSwig import * +from WrapVTK import * + +ThisModule='gdcmPython' +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 distutils 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],'site-packages') + libraries=["stdc++"] + macros =[('__STDC_LIMIT_MACROS', '1')] + + VTKPATH="${VTK_DIR}" + vtkWrapper="vtkWrapPython" +else: + 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="${VTK_DIR}" + 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 already 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 already 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="${GDCM_VERSION_MAJOR}.${GDCM_VERSION_MINOR}", + description="...", + author="frog", + author_email="frog@creatis.insa-lyon.fr", + url="http://www.creatis.insa-lyon.fr/Public/Gdcm/", + 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(gdcmDictsDir,"*.*"))), + ] + ) -- 2.48.1