Skip to content

Commit 5f4f855

Browse files
committed
god what a pain
1 parent ab5f242 commit 5f4f855

File tree

3 files changed

+59
-40
lines changed

3 files changed

+59
-40
lines changed

mlir/cmake/modules/AddMLIRPython.cmake

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ endfunction()
108108
# MLIR_DEPENDS_TARGET: The dso target corresponding to the main/core extension module
109109
# (e.g., something like StandalonePythonModules.extension._mlir.dso)
110110
# OUTPUT_DIR: The root output directory to emit the type stubs into.
111+
# OUTPUTS: List of expected outputs.
111112
# Outputs:
112113
# NB_STUBGEN_CUSTOM_TARGET: The target corresponding to generation which other targets can depend on.
113114
function(generate_type_stubs FQ_MODULE_NAME DEPENDS_TARGET MLIR_DEPENDS_TARGET OUTPUT_DIR)
@@ -181,7 +182,7 @@ endfunction()
181182
function(declare_mlir_python_extension name)
182183
cmake_parse_arguments(ARG
183184
""
184-
"ROOT_DIR;MODULE_NAME;ADD_TO_PARENT;PYTHON_BINDINGS_LIBRARY"
185+
"ROOT_DIR;MODULE_NAME;ADD_TO_PARENT;PYTHON_BINDINGS_LIBRARY;PACKAGE_PREFIX"
185186
"SOURCES;PRIVATE_LINK_LIBS;EMBED_CAPI_LINK_LIBS;GENERATE_TYPE_STUBS"
186187
${ARGN})
187188

@@ -207,6 +208,19 @@ function(declare_mlir_python_extension name)
207208
mlir_python_GENERATE_TYPE_STUBS "${ARG_GENERATE_TYPE_STUBS}"
208209
)
209210

211+
if(ARG_GENERATE_TYPE_STUBS)
212+
if ((NOT ARG_PACKAGE_PREFIX) OR ("${ARG_PACKAGE_PREFIX}" STREQUAL ""))
213+
message(FATAL_ERROR "GENERATE_TYPE_STUBS requires PACKAGE_PREFIX for ${name}")
214+
endif()
215+
set(_stubgen_target "${ARG_PACKAGE_PREFIX}._mlir_libs.${name}.type_stub_gen")
216+
declare_mlir_python_sources(
217+
${_stubgen_target}
218+
ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/type_stubs"
219+
ADD_TO_PARENT "${ARG_ADD_TO_PARENT}"
220+
SOURCES "${ARG_GENERATE_TYPE_STUBS}"
221+
)
222+
endif()
223+
210224
# Set the interface source and link_libs properties of the target
211225
# These properties support generator expressions and are automatically exported
212226
list(TRANSFORM ARG_SOURCES PREPEND "${ARG_ROOT_DIR}/" OUTPUT_VARIABLE _build_sources)
@@ -317,29 +331,15 @@ function(add_mlir_python_modules name)
317331
message(FATAL_ERROR "GENERATE_TYPE_STUBS requires PACKAGE_PREFIX")
318332
endif()
319333
set(_fully_qualified_module_name "${ARG_PACKAGE_PREFIX}._mlir_libs.${_module_name}")
334+
list(TRANSFORM _generate_type_stubs REPLACE "_mlir_libs/" "")
320335
generate_type_stubs(
321336
${_fully_qualified_module_name}
322337
${_extension_target}
323338
${name}
324-
"${CMAKE_CURRENT_BINARY_DIR}/_mlir_libs"
339+
"${CMAKE_CURRENT_BINARY_DIR}/type_stubs/_mlir_libs"
325340
OUTPUTS "${_generate_type_stubs}"
326341
)
327342
add_dependencies("${modules_target}" "${NB_STUBGEN_CUSTOM_TARGET}")
328-
set(_stubgen_target "${_fully_qualified_module_name}.type_stub_gen")
329-
declare_mlir_python_sources(
330-
${_stubgen_target}
331-
ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/_mlir_libs"
332-
ADD_TO_PARENT "${sources_target}"
333-
SOURCES "${_generate_type_stubs}"
334-
)
335-
set(_pure_sources_target "${modules_target}.sources.${sources_target}.type_stub_gen")
336-
add_mlir_python_sources_target(${_pure_sources_target}
337-
INSTALL_COMPONENT ${modules_target}
338-
INSTALL_DIR "${ARG_INSTALL_PREFIX}/_mlir_libs"
339-
OUTPUT_DIRECTORY "${ARG_ROOT_PREFIX}/_mlir_libs"
340-
SOURCES_TARGETS ${_stubgen_target}
341-
)
342-
add_dependencies(${modules_target} ${_pure_sources_target})
343343
endif()
344344
else()
345345
message(SEND_ERROR "Unrecognized source type '${_source_type}' for python source target ${sources_target}")

mlir/examples/standalone/python/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ declare_mlir_python_extension(StandalonePythonSources.NanobindExtension
4040
StandaloneCAPI
4141
PYTHON_BINDINGS_LIBRARY nanobind
4242
GENERATE_TYPE_STUBS
43-
"_standaloneDialectsNanobind.pyi"
43+
"_mlir_libs/_standaloneDialectsNanobind.pyi"
44+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
4445
)
4546

4647

@@ -80,4 +81,4 @@ add_mlir_python_modules(StandalonePythonModules
8081
StandalonePythonCAPI
8182
GENERATE_TYPE_STUBS
8283
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
83-
)
84+
)

mlir/python/CMakeLists.txt

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -506,10 +506,11 @@ declare_mlir_python_extension(MLIRPythonExtension.Core
506506
# Dialects
507507
MLIRCAPIFunc
508508
GENERATE_TYPE_STUBS
509-
"_mlir/__init__.pyi"
510-
"_mlir/ir.pyi"
511-
"_mlir/passmanager.pyi"
512-
"_mlir/rewrite.pyi"
509+
"_mlir_libs/_mlir/__init__.pyi"
510+
"_mlir_libs/_mlir/ir.pyi"
511+
"_mlir_libs/_mlir/passmanager.pyi"
512+
"_mlir_libs/_mlir/rewrite.pyi"
513+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
513514
)
514515

515516
# This extension exposes an API to register all dialects, extensions, and passes
@@ -532,7 +533,8 @@ declare_mlir_python_extension(MLIRPythonExtension.RegisterEverything
532533
MLIRCAPITransforms
533534
MLIRCAPIRegisterEverything
534535
GENERATE_TYPE_STUBS
535-
"_mlirRegisterEverything.pyi"
536+
"_mlir_libs/_mlirRegisterEverything.pyi"
537+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
536538
)
537539

538540
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Linalg.Pybind
@@ -548,7 +550,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.Linalg.Pybind
548550
MLIRCAPIIR
549551
MLIRCAPILinalg
550552
GENERATE_TYPE_STUBS
551-
"_mlirDialectsLinalg.pyi"
553+
"_mlir_libs/_mlirDialectsLinalg.pyi"
554+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
552555
)
553556

554557
declare_mlir_python_extension(MLIRPythonExtension.Dialects.GPU.Pybind
@@ -564,7 +567,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.GPU.Pybind
564567
MLIRCAPIIR
565568
MLIRCAPIGPU
566569
GENERATE_TYPE_STUBS
567-
"_mlirDialectsGPU.pyi"
570+
"_mlir_libs/_mlirDialectsGPU.pyi"
571+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
568572
)
569573

570574
declare_mlir_python_extension(MLIRPythonExtension.Dialects.LLVM.Pybind
@@ -580,7 +584,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.LLVM.Pybind
580584
MLIRCAPIIR
581585
MLIRCAPILLVM
582586
GENERATE_TYPE_STUBS
583-
"_mlirDialectsLLVM.pyi"
587+
"_mlir_libs/_mlirDialectsLLVM.pyi"
588+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
584589
)
585590

586591
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Quant.Pybind
@@ -596,7 +601,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.Quant.Pybind
596601
MLIRCAPIIR
597602
MLIRCAPIQuant
598603
GENERATE_TYPE_STUBS
599-
"_mlirDialectsQuant.pyi"
604+
"_mlir_libs/_mlirDialectsQuant.pyi"
605+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
600606
)
601607

602608
declare_mlir_python_extension(MLIRPythonExtension.Dialects.NVGPU.Pybind
@@ -612,7 +618,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.NVGPU.Pybind
612618
MLIRCAPIIR
613619
MLIRCAPINVGPU
614620
GENERATE_TYPE_STUBS
615-
"_mlirDialectsNVGPU.pyi"
621+
"_mlir_libs/_mlirDialectsNVGPU.pyi"
622+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
616623
)
617624

618625
declare_mlir_python_extension(MLIRPythonExtension.Dialects.PDL.Pybind
@@ -628,7 +635,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.PDL.Pybind
628635
MLIRCAPIIR
629636
MLIRCAPIPDL
630637
GENERATE_TYPE_STUBS
631-
"_mlirDialectsPDL.pyi"
638+
"_mlir_libs/_mlirDialectsPDL.pyi"
639+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
632640
)
633641

634642
declare_mlir_python_extension(MLIRPythonExtension.Dialects.SparseTensor.Pybind
@@ -644,7 +652,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.SparseTensor.Pybind
644652
MLIRCAPIIR
645653
MLIRCAPISparseTensor
646654
GENERATE_TYPE_STUBS
647-
"_mlirDialectsSparseTensor.pyi"
655+
"_mlir_libs/_mlirDialectsSparseTensor.pyi"
656+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
648657
)
649658

650659
declare_mlir_python_extension(MLIRPythonExtension.Dialects.Transform.Pybind
@@ -660,7 +669,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.Transform.Pybind
660669
MLIRCAPIIR
661670
MLIRCAPITransformDialect
662671
GENERATE_TYPE_STUBS
663-
"_mlirDialectsTransform.pyi"
672+
"_mlir_libs/_mlirDialectsTransform.pyi"
673+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
664674
)
665675

666676
declare_mlir_python_extension(MLIRPythonExtension.AsyncDialectPasses
@@ -675,7 +685,8 @@ declare_mlir_python_extension(MLIRPythonExtension.AsyncDialectPasses
675685
EMBED_CAPI_LINK_LIBS
676686
MLIRCAPIAsync
677687
GENERATE_TYPE_STUBS
678-
"_mlirAsyncPasses.pyi"
688+
"_mlir_libs/_mlirAsyncPasses.pyi"
689+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
679690
)
680691

681692
if(MLIR_ENABLE_EXECUTION_ENGINE)
@@ -691,7 +702,8 @@ if(MLIR_ENABLE_EXECUTION_ENGINE)
691702
EMBED_CAPI_LINK_LIBS
692703
MLIRCAPIExecutionEngine
693704
GENERATE_TYPE_STUBS
694-
"_mlirExecutionEngine.pyi"
705+
"_mlir_libs/_mlirExecutionEngine.pyi"
706+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
695707
)
696708
endif()
697709

@@ -707,7 +719,8 @@ declare_mlir_python_extension(MLIRPythonExtension.GPUDialectPasses
707719
EMBED_CAPI_LINK_LIBS
708720
MLIRCAPIGPU
709721
GENERATE_TYPE_STUBS
710-
"_mlirGPUPasses.pyi"
722+
"_mlir_libs/_mlirGPUPasses.pyi"
723+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
711724
)
712725

713726
declare_mlir_python_extension(MLIRPythonExtension.LinalgPasses
@@ -722,7 +735,8 @@ declare_mlir_python_extension(MLIRPythonExtension.LinalgPasses
722735
EMBED_CAPI_LINK_LIBS
723736
MLIRCAPILinalg
724737
GENERATE_TYPE_STUBS
725-
"_mlirLinalgPasses.pyi"
738+
"_mlir_libs/_mlirLinalgPasses.pyi"
739+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
726740
)
727741

728742
declare_mlir_python_extension(MLIRPythonExtension.Dialects.SMT.Pybind
@@ -741,7 +755,8 @@ declare_mlir_python_extension(MLIRPythonExtension.Dialects.SMT.Pybind
741755
MLIRCAPISMT
742756
MLIRCAPIExportSMTLIB
743757
GENERATE_TYPE_STUBS
744-
"_mlirDialectsSMT.pyi"
758+
"_mlir_libs/_mlirDialectsSMT.pyi"
759+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
745760
)
746761

747762
declare_mlir_python_extension(MLIRPythonExtension.SparseTensorDialectPasses
@@ -756,7 +771,8 @@ declare_mlir_python_extension(MLIRPythonExtension.SparseTensorDialectPasses
756771
EMBED_CAPI_LINK_LIBS
757772
MLIRCAPISparseTensor
758773
GENERATE_TYPE_STUBS
759-
"_mlirSparseTensorPasses.pyi"
774+
"_mlir_libs/_mlirSparseTensorPasses.pyi"
775+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
760776
)
761777

762778
declare_mlir_python_extension(MLIRPythonExtension.TransformInterpreter
@@ -771,7 +787,8 @@ declare_mlir_python_extension(MLIRPythonExtension.TransformInterpreter
771787
EMBED_CAPI_LINK_LIBS
772788
MLIRCAPITransformDialectTransforms
773789
GENERATE_TYPE_STUBS
774-
"_mlirTransformInterpreter.pyi"
790+
"_mlir_libs/_mlirTransformInterpreter.pyi"
791+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
775792
)
776793

777794
# TODO: Figure out how to put this in the test tree.
@@ -831,7 +848,8 @@ if(MLIR_INCLUDE_TESTS)
831848
EMBED_CAPI_LINK_LIBS
832849
MLIRCAPIPythonTestDialect
833850
GENERATE_TYPE_STUBS
834-
"_mlirPythonTestNanobind.pyi"
851+
"_mlir_libs/_mlirPythonTestNanobind.pyi"
852+
PACKAGE_PREFIX "${MLIR_PYTHON_PACKAGE_PREFIX}"
835853
)
836854
endif()
837855

0 commit comments

Comments
 (0)