forked from OSchip/llvm-project
117 lines
3.6 KiB
CMake
117 lines
3.6 KiB
CMake
include(AddMLIRPythonExtension)
|
|
add_custom_target(MLIRBindingsPythonExtension)
|
|
|
|
################################################################################
|
|
# Copy python source tree.
|
|
################################################################################
|
|
|
|
set(PY_SRC_FILES
|
|
mlir/__init__.py
|
|
mlir/_dlloader.py
|
|
mlir/ir.py
|
|
mlir/dialects/__init__.py
|
|
mlir/dialects/_linalg.py
|
|
mlir/dialects/_builtin.py
|
|
mlir/ir.py
|
|
mlir/passmanager.py
|
|
mlir/transforms/__init__.py
|
|
)
|
|
|
|
add_custom_target(MLIRBindingsPythonSources ALL
|
|
DEPENDS ${PY_SRC_FILES}
|
|
)
|
|
add_dependencies(MLIRBindingsPythonExtension MLIRBindingsPythonSources)
|
|
|
|
foreach(PY_SRC_FILE ${PY_SRC_FILES})
|
|
set(PY_DEST_FILE "${PROJECT_BINARY_DIR}/python/${PY_SRC_FILE}")
|
|
add_custom_command(
|
|
TARGET MLIRBindingsPythonSources PRE_BUILD
|
|
COMMENT "Copying python source ${PY_SRC_FILE} -> ${PY_DEST_FILE}"
|
|
DEPENDS "${PY_SRC_FILE}"
|
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${PY_SRC_FILE}" "${PY_DEST_FILE}"
|
|
)
|
|
endforeach()
|
|
|
|
################################################################################
|
|
# Generate dialect-specific bindings.
|
|
################################################################################
|
|
|
|
add_mlir_dialect_python_bindings(MLIRBindingsPythonBuiltinOps
|
|
TD_FILE BuiltinOps.td
|
|
DIALECT_NAME builtin)
|
|
add_dependencies(MLIRBindingsPythonSources MLIRBindingsPythonBuiltinOps)
|
|
|
|
add_mlir_dialect_python_bindings(MLIRBindingsPythonLinalgOps
|
|
TD_FILE LinalgOps.td
|
|
DIALECT_NAME linalg
|
|
DEPENDS LinalgOdsGen)
|
|
add_dependencies(MLIRBindingsPythonSources MLIRBindingsPythonLinalgOps)
|
|
|
|
add_mlir_dialect_python_bindings(MLIRBindingsPythonShapeOps
|
|
TD_FILE ShapeOps.td
|
|
DIALECT_NAME shape)
|
|
add_dependencies(MLIRBindingsPythonSources MLIRBindingsPythonShapeOps)
|
|
|
|
add_mlir_dialect_python_bindings(MLIRBindingsPythonStandardOps
|
|
TD_FILE StandardOps.td
|
|
DIALECT_NAME std)
|
|
add_dependencies(MLIRBindingsPythonSources MLIRBindingsPythonStandardOps)
|
|
|
|
add_mlir_dialect_python_bindings(MLIRBindingsPythonTensorOps
|
|
TD_FILE TensorOps.td
|
|
DIALECT_NAME tensor)
|
|
add_dependencies(MLIRBindingsPythonSources MLIRBindingsPythonTensorOps)
|
|
|
|
################################################################################
|
|
# Build core python extension
|
|
################################################################################
|
|
add_mlir_python_extension(MLIRCoreBindingsPythonExtension _mlir
|
|
INSTALL_DIR
|
|
python
|
|
SOURCES
|
|
MainModule.cpp
|
|
IRModules.cpp
|
|
PybindUtils.cpp
|
|
Pass.cpp
|
|
)
|
|
add_dependencies(MLIRBindingsPythonExtension MLIRCoreBindingsPythonExtension)
|
|
|
|
# Note that we copy from the source tree just like for headers because
|
|
# it will not be polluted with py_cache runtime artifacts (from testing and
|
|
# such).
|
|
install(
|
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mlir
|
|
DESTINATION python
|
|
COMPONENT MLIRBindingsPythonSources
|
|
FILES_MATCHING PATTERN "*.py"
|
|
)
|
|
|
|
if (NOT LLVM_ENABLE_IDE)
|
|
add_llvm_install_targets(
|
|
install-MLIRBindingsPythonSources
|
|
DEPENDS MLIRBindingsPythonSources
|
|
COMPONENT MLIRBindingsPythonSources)
|
|
endif()
|
|
|
|
# Dialect sources are generated. Install separately.
|
|
# Note that __pycache__ directories may have been left by tests and other
|
|
# executions. And __init__.py is handled as a regular source file.
|
|
install(
|
|
DIRECTORY ${PROJECT_BINARY_DIR}/python/mlir/dialects
|
|
DESTINATION python/mlir
|
|
COMPONENT MLIRBindingsPythonDialects
|
|
FILES_MATCHING PATTERN "*.py"
|
|
PATTERN "__pycache__" EXCLUDE
|
|
PATTERN "__init__.py" EXCLUDE
|
|
)
|
|
|
|
if (NOT LLVM_ENABLE_IDE)
|
|
add_llvm_install_targets(
|
|
install-MLIRBindingsPythonDialects
|
|
DEPENDS MLIRBindingsPythonSources
|
|
COMPONENT MLIRBindingsPythonDialects)
|
|
endif()
|
|
|
|
add_subdirectory(Transforms)
|