X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=gdcmPython%2FCMakeLists.txt;h=932c9af282d5465fcbc76fa585540dc66c400735;hb=a4704902060fca3d4b2c6e10702136c8a24fe9c7;hp=9581048645b7eb5fbe33a89a3c34b0901ed01338;hpb=2e1f797ea8181180ebba6a48f0a4463bf43acedc;p=gdcm.git diff --git a/gdcmPython/CMakeLists.txt b/gdcmPython/CMakeLists.txt index 95810486..932c9af2 100644 --- a/gdcmPython/CMakeLists.txt +++ b/gdcmPython/CMakeLists.txt @@ -2,6 +2,7 @@ INCLUDE_DIRECTORIES( ${GDCM_SOURCE_DIR}/src + ${GDCM_SOURCE_DIR}/gdcmPython ${PYTHON_INCLUDE_PATH} ${GDCM_BINARY_DIR}/ ) @@ -13,36 +14,35 @@ INCLUDE_DIRECTORIES( # CMake 2.0 will fully support Swig wrapping so split based on cmake version: # We need to pass that to swig to be sure all modules are generated in the proper dir -SET(CMAKE_SWIG_FLAGS "-outdir ${GDCM_BINARY_DIR}/gdcmPython") +SET(CMAKE_SWIG_FLAGS "-outdir \"${GDCM_BINARY_DIR}/gdcmPython\"") +#SET(CMAKE_SWIG_OUTDIR "${GDCM_BINARY_DIR}/gdcmPython") # Looks like a bug to me in cmake 2.0.x: SEPARATE_ARGUMENTS(CMAKE_SWIG_FLAGS) FIND_PACKAGE(SWIG REQUIRED) -INCLUDE(${SWIG_USE_FILE}) +IF(SWIG_FOUND) + INCLUDE(${SWIG_USE_FILE}) +ENDIF(SWIG_FOUND) + SET_SOURCE_FILES_PROPERTIES(gdcm.i PROPERTIES CPLUSPLUS ON) -# Setting SWIG_FLAGS to "-includeall" at the following line looks like -# a bad idea since swig tries to recursively include all the referenced -# files, "including" the C++ , , ... Of course swig -# has no way of finding the path to those files (unless it is told by -# cmake) since they are related to the compiler installation layout. -# Anyhow, since this inclusion recursion is not necessary, just don't -# do it. -# Note: apparently the line is required in order to avoid a NOTFOUND -# as argument of swig on invocation of make. +# BUG: This is only needed with cmake <= 2.0.5 SET_SOURCE_FILES_PROPERTIES(gdcm.i PROPERTIES SWIG_FLAGS "") -SWIG_ADD_MODULE(gdcm python gdcm.i) #gdcm_wrap.cxx +# END OF BUG +#FIXME : +#where must we put the keyword SHARED +#- just like in ADD_LIBRARY(vtkgdcmPython SHARED ${gdcmWrapSOURCES}) - +#to allow use of a static/shared libray ? +# JPRx +SWIG_ADD_MODULE(gdcm python gdcm.i) #gdcm_wrap.cxx, or gdcmPYTHON_wrap.cxx SWIG_LINK_LIBRARIES(gdcm gdcm ${PYTHON_LIBRARIES}) # Get rid of -Wall / -W / -pedantic if exist -#SET(CMAKE_CXX_FLAGS "") -# I guess I need to put them back on the this file: -#SET_SOURCE_FILES_PROPERTIES(${GDCM_BINARY_DIR}/gdcmPython/gdcm_wrap.cxx -# PROPERTIES COMPILE_FLAGS "") -ADD_DEPENDENCIES( - ${GDCM_BINARY_DIR}/gdcmPython/gdcm_wrap.cxx - ${GDCM_SOURCE_DIR}/gdcmConfigure.h - ) +SET(CMAKE_CXX_FLAGS "") +# I guess I need to put them back on this file: +#SET_SOURCE_FILES_PROPERTIES( +# ${swig_generated_file_fullname} +# PROPERTIES COMPILE_FLAGS "") INSTALL_TARGETS(/lib/gdcm/ _gdcm) @@ -68,18 +68,36 @@ IF(GDCM_VTK) IF(NOT VTK_WRAP_PYTHON) MESSAGE(FATAL_ERROR "Can't build gdcm python wrapping if VTK_WRAP_PYTHON is OFF" ) ENDIF(NOT VTK_WRAP_PYTHON) + IF("${VTK_MAJOR_VERSION}" GREATER 4) + INCLUDE(${VTK_CMAKE_DIR}/vtkWrapPython.cmake) + ENDIF("${VTK_MAJOR_VERSION}" GREATER 4) VTK_WRAP_PYTHON2(vtkgdcmPython gdcmWrapSOURCES ${vtkgdcmPython_la_SOURCES}) # The C++ files must be made into a C++ library - ADD_LIBRARY(vtkgdcmPython SHARED ${gdcmWrapSOURCES}) #MODULE on apple ? + ADD_LIBRARY(vtkgdcmPython MODULE ${gdcmWrapSOURCES}) #MODULE on apple ? + + # Python extension modules on Windows must have the extension ".pyd" + # instead of ".dll" as of Python 2.5. Older python versions do support + # this suffix. + IF(WIN32 AND NOT CYGWIN) + SET_TARGET_PROPERTIES(vtkgdcmPython PROPERTIES SUFFIX ".pyd") + ENDIF(WIN32 AND NOT CYGWIN) + # set the libraries to link against #SET_TARGET_PROPERTIES(${foobar} PROPERTIES PREFIX "") #GET_TARGET_PROPERTY(swig_gdcm_fullpath "${SWIG_MODULE_gdcm_REAL_NAME}" LOCATION) - TARGET_LINK_LIBRARIES (vtkgdcmPython - vtkgdcm - vtkCommonPython - vtkIOPython) + IF("${VTK_MAJOR_VERSION}" LESS 5) + TARGET_LINK_LIBRARIES (vtkgdcmPython + vtkgdcm + vtkCommonPython + vtkIOPython) + ELSE("${VTK_MAJOR_VERSION}" LESS 5) + TARGET_LINK_LIBRARIES (vtkgdcmPython + vtkgdcm + vtkCommonPythonD + vtkIOPythonD) + ENDIF("${VTK_MAJOR_VERSION}" LESS 5) INSTALL_TARGETS(/lib/gdcm/ vtkgdcmPython) ENDIF (GDCM_WRAP_PYTHON) @@ -131,32 +149,42 @@ IF(WIN32) "${GDCM_BINARY_DIR}\n" "${GDCM_BINARY_DIR}/bin/release\n" ) + FILE(WRITE ${GDCM_BINARY_DIR}/gdcmPython/InstallOnly/gdcmPython.pth + "${GDCM_SOURCE_DIR}\n" + "${GDCM_SOURCE_DIR}/bin\n" + ) ELSE(WIN32) FILE(WRITE ${GDCM_BINARY_DIR}/gdcmPython/gdcmPython.pth "${CMAKE_INSTALL_PREFIX}/lib/gdcm\n" ) + FILE(WRITE ${GDCM_BINARY_DIR}/gdcmPython/InstallOnly/gdcmPython.pth + "/usr/lib/gdcm\n" + ) ENDIF(WIN32) -FIND_PATH(PYTHON_INSTALL "site-packages" - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath] - /usr/lib/python2.4 - /usr/lib/python2.3 - /usr/lib/python2.2 - /usr/lib/python2.1 - /usr/lib/python2.0 - /usr/lib/python1.6 - /usr/lib/python1.5 -) -STRING(REGEX REPLACE "/usr(.*)/config.*" "\\1" PYTHON_INSTALL ${PYTHON_LIBRARY}) -INSTALL_FILES(${PYTHON_INSTALL}/site-packages "\\.pth$") -INSTALL_FILES(/lib/gdcm/gdcmPython "\\.py$") -INSTALL_FILES(/lib/gdcm/gdcmPython FILES "gdcm.py") +# Install a python path file in site-packages that tells +# python where to find the gdcmPython module +IF(UNIX) + FIND_PATH(PYTHON_DIR "site-packages" + /usr/lib/python2.5 + /usr/lib/python2.4 + /usr/lib/python2.3 + /usr/lib/python2.2 + /usr/lib/python2.1 + ) + STRING(REGEX REPLACE "/usr" "" PYTHON_DIR ${PYTHON_DIR}) + + INSTALL_FILES(${PYTHON_DIR}/site-packages FILES + "${GDCM_BINARY_DIR}/gdcmPython/InstallOnly/gdcmPython.pth" + ) + INSTALL_FILES(/lib/gdcm/gdcmPython FILES + "gdcm.py" + "__init__.py" + "gdcmVersion.py" + "core.py" + "vtk.py" + ) +ENDIF(UNIX) #----------------------------------------------------------------------------- # Add test from demo subdir: