| 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) |