Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
3.5 KiB

2 years ago
# Handle out-of-source builds correctly.
#
# 1. Create a list of Python files to be installed/copied.
# 2. Copy them to VTK_BINARY_DIR if it is different from VTK_SOURCE_DIR.
# 3. Use Python's compileall to compile the copied files.
#
# *** Step 1 has to be done carefully to avoid missing out files ***
IF(PYTHON_EXECUTABLE AND VTK_WRAP_PYTHON)
SET(CMD ${PYTHON_EXECUTABLE})
# Make the necessary directories.
FOREACH(dir
${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py
)
MAKE_DIRECTORY(${dir})
ENDFOREACH(dir)
# Now create a list of Python files.
# tcl2py testing related files. These are for testing tcl-translated scripts.
SET(VTK_PYTHON_FILES
__init__
vtkTclParser
vtkTclToPyConvertor
backdrop
catch
expr
file
info
mccases
rtImageTest
)
# Done listing of files.
# Now copy these files if necessary.
SET(VTK_PYTHON_SOURCE_FILES)
SET(VTK_PYTHON_OUTPUT_FILES)
FOREACH(file ${VTK_PYTHON_FILES})
SET(src "${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/${file}.py")
SET(VTK_PYTHON_SOURCE_FILES ${VTK_PYTHON_SOURCE_FILES} ${src})
ENDFOREACH(file)
IF ("${VTK_BINARY_DIR}" MATCHES "^${VTK_SOURCE_DIR}$")
#MESSAGE("In source build -- no need to copy Python files.")
ELSE ("${VTK_BINARY_DIR}" MATCHES "^${VTK_SOURCE_DIR}$")
FOREACH(file ${VTK_PYTHON_FILES})
SET(src "${VTK_SOURCE_DIR}/Utilities/vtkTclTest2Py/${file}.py")
SET(tgt "${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/${file}.py")
ADD_CUSTOM_COMMAND(DEPENDS ${src}
COMMAND ${CMAKE_COMMAND}
ARGS -E copy ${src} ${tgt}
OUTPUT ${tgt}
COMMENT "source copy")
ENDFOREACH(file)
ENDIF ("${VTK_BINARY_DIR}" MATCHES "^${VTK_SOURCE_DIR}$")
# Byte compile the Python files.
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/compile_all_vtk.py.in
${CMAKE_CURRENT_BINARY_DIR}/compile_all_vtk.py
@ONLY IMMEDIATE)
ADD_CUSTOM_COMMAND(
COMMAND ${CMD}
ARGS -- ${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/compile_all_vtk.py
-A "${VTK_BINARY_DIR}/Wrapping/Python"
DEPENDS ${VTK_PYTHON_SOURCE_FILES} ${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/compile_all_vtk.py vtkpython
OUTPUT "${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/vtk_compile_complete"
)
#ADD_DEPENDENCIES(vtktcltest2py_pyc vtkpython_pyc)
# Create a python module having the list of all VTK Classes.
SET(kits
Common
Filtering
Imaging
Graphics
GenericFiltering
IO)
IF(VTK_USE_RENDERING)
SET(kits ${kits}
Rendering
VolumeRendering
Hybrid
Widgets)
ENDIF(VTK_USE_RENDERING)
IF(VTK_USE_PARALLEL)
SET(kits ${kits}
Parallel)
ENDIF(VTK_USE_PARALLEL)
SET(VTK_CLASSES "\"___list_begins___\"")
MACRO(APPEND_CLASSES varname)
#SET(VTK_CLASSES ${VTK_CLASSES} ${${varname}})
FOREACH (class ${${varname}})
SET(VTK_CLASSES "${VTK_CLASSES},\n\"${class}\"")
ENDFOREACH (class)
ENDMACRO(APPEND_CLASSES)
FOREACH(kit ${kits})
STRING(TOUPPER ${kit} ukit)
INCLUDE(${VTK_BINARY_DIR}/Utilities/vtk${kit}Kit.cmake)
SET(var VTK_${ukit}_CLASSES)
APPEND_CLASSES(${var})
ENDFOREACH(kit)
CONFIGURE_FILE(${VTK_SOURCE_DIR}/Utilities/vtkTclTest2Py/vtkClassList.py.in
${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/vtkClassList.py
@ONLY)
ADD_CUSTOM_TARGET(vtktcltest2py_pyc ALL echo "..."
DEPENDS
${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/vtk_compile_complete
${VTK_BINARY_DIR}/Utilities/vtkTclTest2Py/vtkClassList.py
)
ENDIF(PYTHON_EXECUTABLE AND VTK_WRAP_PYTHON)