1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
# Tell vtkWrapPython.cmake to set VTK_PYTHON_LIBRARIES for us.
SET(VTK_WRAP_PYTHON_FIND_LIBS 1)
SET(VTK_WRAP_INCLUDE_DIRS
"${ParaView_BINARY_DIR}/VTK"
"${ParaView_SOURCE_DIR}/VTK/Common"
"${ParaView_SOURCE_DIR}/VTK/Parallel"
)
INCLUDE("${VTK_CMAKE_DIR}/vtkWrapPython.cmake")
INCLUDE_DIRECTORIES(
${MPI_INCLUDE_PATH}
${PYTHON_INCLUDE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}"
"${CMAKE_CURRENT_BINARY_DIR}"
"${ParaView_BINARY_DIR}/VTK"
"${ParaView_SOURCE_DIR}/VTK/Common"
"${ParaView_SOURCE_DIR}/VTK/Parallel"
"${ParaView_SOURCE_DIR}/VTK/Wrapping/Python"
"${ParaView_BINARY_DIR}/VTK/Wrapping/Python"
"${PVCommon_SOURCE_DIR}"
"${PVClientServerCore_SOURCE_DIR}"
"${PVServerImplementation_SOURCE_DIR}"
"${PVServerManager_SOURCE_DIR}"
)
# create the VTK/Python executable
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/vtkPythonAppInitConfigure.h.in
${CMAKE_CURRENT_BINARY_DIR}/vtkPythonAppInitConfigure.h)
VTK_ADD_LIBRARY(vtkPVPythonInterpretor
vtkPVPythonInterpretor.cxx
vtkPVPythonInteractiveInterpretor.cxx)
VTK_ADD_LIBRARY(vtkPVPython
vtkPVPythonOptions.cxx)
add_executable_with_forwarding(PV_EXE_SUFFIX
pvpython
pvpython.cxx)
add_executable_with_forwarding(PV_EXE_SUFFIX
pvbatch
pvbatch.cxx)
IF(CMAKE_SYSTEM_NAME MATCHES "AIX")
GET_FILENAME_COMPONENT(CMAKE_PYTHON_LIB_PREFIX "${PYTHON_LIBRARY}" PATH)
FIND_FILE(CMAKE_PYTHON_LIBRARY_EXPORT python.exp "${CMAKE_PYTHON_LIB_PREFIX}")
SET_TARGET_PROPERTIES( pvpython${PV_EXE_SUFFIX} PROPERTIES LINK_FLAGS
"-Wl,-bE:${CMAKE_PYTHON_LIBRARY_EXPORT}")
SET_TARGET_PROPERTIES( pvbatch${PV_EXE_SUFFIX} PROPERTIES LINK_FLAGS
"-Wl,-bE:${CMAKE_PYTHON_LIBRARY_EXPORT}")
ENDIF(CMAKE_SYSTEM_NAME MATCHES "AIX")
IF(VTK_USE_CARBON)
GET_TARGET_PROPERTY(pvpython_location pvpython${PV_EXE_SUFFIX} LOCATION)
GET_TARGET_PROPERTY(pvbatch_location pvbatch${PV_EXE_SUFFIX} LOCATION)
FIND_PROGRAM(VTK_APPLE_RESOURCE Rez /Developer/Tools)
IF(VTK_APPLE_RESOURCE)
ADD_CUSTOM_COMMAND(
TARGET pvpython${PV_EXE_SUFFIX} POST_BUILD
COMMAND ${VTK_APPLE_RESOURCE} Carbon.r -o ${pvpython_location}
)
ADD_CUSTOM_COMMAND(
TARGET pvbatch${PV_EXE_SUFFIX} POST_BUILD
COMMAND ${VTK_APPLE_RESOURCE} Carbon.r -o ${pvbatch_location}
)
ENDIF(VTK_APPLE_RESOURCE)
ENDIF(VTK_USE_CARBON)
IF(NOT APPLE)
FIND_LIBRARY(PYTHON_UTIL_LIBRARY
NAMES util
DOC "Utility library needed for pvpython"
)
MARK_AS_ADVANCED(PYTHON_UTIL_LIBRARY)
IF(PYTHON_UTIL_LIBRARY)
SET(PYTHON_UTIL_LIBRARY_LIB ${PYTHON_UTIL_LIBRARY})
ENDIF(PYTHON_UTIL_LIBRARY)
ENDIF(NOT APPLE)
IF (APPLE)
SET_TARGET_PROPERTIES(pvpython${PV_EXE_SUFFIX} PROPERTIES LINK_FLAGS "-flat_namespace -undefined suppress -u _PyMac_Error")
SET_TARGET_PROPERTIES(pvbatch${PV_EXE_SUFFIX} PROPERTIES LINK_FLAGS "-flat_namespace -undefined suppress -u _PyMac_Error")
ENDIF (APPLE)
# When paraview is linked statically (for example during
# cross-compiling) the python wrapper module "init" functions must be
# referenced and called at startup. The necessary code is written
# into pvpythonmodules.h and included in vtkPVPythonInterpretor.cxx
# for compilation. Then the vtkPVPythonInterpretor static library
# "links" to all the module archives. This creates a circular
# dependency chain between the interpreter and the wrapper modules.
#
# In the future we should change this to have a library whose purpose
# is to reference all the module init functions. That library may
# then depend on the modules and vtkPVPythonInterpretor without
# creating a cycle.
SET(PYTHON_MODULE_PREFIX "")
PYTHON_WRITE_MODULES_HEADER(${CMAKE_CURRENT_BINARY_DIR}/pvpythonmodules.h)
# The PYTHON_ADD_MODULE macro stores the list of static modules in a global property
GET_PROPERTY(PY_STATIC_MODULES_LIST GLOBAL PROPERTY PY_STATIC_MODULES_LIST)
IF(PY_STATIC_MODULES_LIST)
TARGET_LINK_LIBRARIES(vtkPVPythonInterpretor ${PY_STATIC_MODULES_LIST})
ENDIF(PY_STATIC_MODULES_LIST)
TARGET_LINK_LIBRARIES(vtkPVPythonInterpretor
vtkCommon
${VTK_PYTHON_LIBRARIES}
${PYTHON_UTIL_LIBRARY_LIB})
# Link against all the kit wrappers.
SET(_PVPYTHON_LINK_LIBS
vtkPVServerManagerPythonD
vtkCommon
vtkFiltering
vtkIO
vtkGraphics
vtkImaging
vtkPVPythonInterpretor
# vtkPVServerManager # dont add this one here, because then cmake doesn't add the automatic dependencies of this lib (if linked static)
${VTK_PYTHON_LIBRARIES}
${PYTHON_UTIL_LIBRARY_LIB})
IF(VTK_WRAP_TCL)
SET(_PVPYTHON_LINK_LIBS ${_PVPYTHON_LINK_LIBS} ${VTK_TK_LIBRARIES})
ENDIF(VTK_WRAP_TCL)
IF(VTK_USE_SYSTEM_PNG)
LIST(APPEND _PVPYTHON_LINK_LIBS ${PNG_LIBRARY})
ENDIF(VTK_USE_SYSTEM_PNG)
TARGET_LINK_LIBRARIES(vtkPVPython ${_PVPYTHON_LINK_LIBS})
TARGET_LINK_LIBRARIES(pvpython${PV_EXE_SUFFIX} vtkPVPython)
TARGET_LINK_LIBRARIES(pvbatch${PV_EXE_SUFFIX} vtkPVPython)
IF(BORLAND)
SET(KITS Common PVServerCommon PVServerManager)
FOREACH(KIT ${KITS})
WRITE_FILE(${LIBRARY_OUTPUT_PATH}/vtk${KIT}Python.def
"EXPORTS\ninitvtk${KIT}Python=_initvtk${KIT}Python\n")
ENDFOREACH(KIT)
ENDIF(BORLAND)
# Install vtkPVPythonInterpretor and vtkPVPython library.
IF(NOT PV_INSTALL_NO_LIBRARIES)
INSTALL(TARGETS vtkPVPythonInterpretor vtkPVPython
EXPORT ${PV_INSTALL_EXPORT_NAME}
RUNTIME DESTINATION ${PV_INSTALL_BIN_DIR} COMPONENT Runtime
LIBRARY DESTINATION ${PV_INSTALL_LIB_DIR} COMPONENT Runtime
ARCHIVE DESTINATION ${PV_INSTALL_LIB_DIR} COMPONENT Development)
ENDIF()
# Install the pvpython executable.
SET(PV_EXE_LIST pvpython pvbatch)
FOREACH(pvexe ${PV_EXE_LIST})
IF(NOT PV_INSTALL_NO_RUNTIME)
INSTALL(TARGETS ${pvexe}
DESTINATION ${PV_INSTALL_BIN_DIR}
COMPONENT Runtime)
IF (PV_EXE_SUFFIX)
# Shared forwarding enabled.
INSTALL(TARGETS ${pvexe}${PV_EXE_SUFFIX}
DESTINATION ${PV_INSTALL_LIB_DIR}
COMPONENT Runtime)
ENDIF (PV_EXE_SUFFIX)
ENDIF(NOT PV_INSTALL_NO_RUNTIME)
ENDFOREACH(pvexe)
# Allow the user to customize their build with some local options
#
INCLUDE (${VTK_BINARY_DIR}/Wrapping/Tcl/LocalUserOptions.cmake OPTIONAL)
INCLUDE (${VTK_SOURCE_DIR}/Wrapping/Tcl/LocalUserOptions.cmake OPTIONAL)
|