From 92d37c6bba3f7b4c51871af1783ea13d65a3dfed Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 19 Jul 2022 19:33:58 +0000 Subject: [PATCH 1/8] Move python binding sources to src/halide/halide_ --- python_bindings/CMakeLists.txt | 2 +- python_bindings/src/{ => halide}/CMakeLists.txt | 1 + python_bindings/src/halide/__init__.py | 0 python_bindings/src/{ => halide/halide_}/PyArgument.cpp | 0 python_bindings/src/{ => halide/halide_}/PyArgument.h | 0 python_bindings/src/{ => halide/halide_}/PyBinaryOperators.h | 0 .../src/{ => halide/halide_}/PyBoundaryConditions.cpp | 0 python_bindings/src/{ => halide/halide_}/PyBoundaryConditions.h | 0 python_bindings/src/{ => halide/halide_}/PyBuffer.cpp | 0 python_bindings/src/{ => halide/halide_}/PyBuffer.h | 0 python_bindings/src/{ => halide/halide_}/PyCallable.cpp | 0 python_bindings/src/{ => halide/halide_}/PyCallable.h | 0 python_bindings/src/{ => halide/halide_}/PyConciseCasts.cpp | 0 python_bindings/src/{ => halide/halide_}/PyConciseCasts.h | 0 python_bindings/src/{ => halide/halide_}/PyDerivative.cpp | 0 python_bindings/src/{ => halide/halide_}/PyDerivative.h | 0 python_bindings/src/{ => halide/halide_}/PyEnums.cpp | 0 python_bindings/src/{ => halide/halide_}/PyEnums.h | 0 python_bindings/src/{ => halide/halide_}/PyError.cpp | 0 python_bindings/src/{ => halide/halide_}/PyError.h | 0 python_bindings/src/{ => halide/halide_}/PyExpr.cpp | 0 python_bindings/src/{ => halide/halide_}/PyExpr.h | 0 .../src/{ => halide/halide_}/PyExternFuncArgument.cpp | 0 python_bindings/src/{ => halide/halide_}/PyExternFuncArgument.h | 0 python_bindings/src/{ => halide/halide_}/PyFunc.cpp | 0 python_bindings/src/{ => halide/halide_}/PyFunc.h | 0 python_bindings/src/{ => halide/halide_}/PyFuncRef.cpp | 0 python_bindings/src/{ => halide/halide_}/PyFuncRef.h | 0 python_bindings/src/{ => halide/halide_}/PyHalide.cpp | 0 python_bindings/src/{ => halide/halide_}/PyHalide.h | 0 python_bindings/src/{ => halide/halide_}/PyIROperator.cpp | 0 python_bindings/src/{ => halide/halide_}/PyIROperator.h | 0 python_bindings/src/{ => halide/halide_}/PyImageParam.cpp | 0 python_bindings/src/{ => halide/halide_}/PyImageParam.h | 0 python_bindings/src/{ => halide/halide_}/PyInlineReductions.cpp | 0 python_bindings/src/{ => halide/halide_}/PyInlineReductions.h | 0 python_bindings/src/{ => halide/halide_}/PyLambda.cpp | 0 python_bindings/src/{ => halide/halide_}/PyLambda.h | 0 python_bindings/src/{ => halide/halide_}/PyLoopLevel.cpp | 0 python_bindings/src/{ => halide/halide_}/PyLoopLevel.h | 0 python_bindings/src/{ => halide/halide_}/PyMachineParams.cpp | 0 python_bindings/src/{ => halide/halide_}/PyMachineParams.h | 0 python_bindings/src/{ => halide/halide_}/PyModule.cpp | 0 python_bindings/src/{ => halide/halide_}/PyModule.h | 0 python_bindings/src/{ => halide/halide_}/PyParam.cpp | 0 python_bindings/src/{ => halide/halide_}/PyParam.h | 0 python_bindings/src/{ => halide/halide_}/PyPipeline.cpp | 0 python_bindings/src/{ => halide/halide_}/PyPipeline.h | 0 python_bindings/src/{ => halide/halide_}/PyRDom.cpp | 0 python_bindings/src/{ => halide/halide_}/PyRDom.h | 0 python_bindings/src/{ => halide/halide_}/PyScheduleMethods.h | 0 python_bindings/src/{ => halide/halide_}/PyStage.cpp | 0 python_bindings/src/{ => halide/halide_}/PyStage.h | 0 python_bindings/src/{ => halide/halide_}/PyTarget.cpp | 0 python_bindings/src/{ => halide/halide_}/PyTarget.h | 0 python_bindings/src/{ => halide/halide_}/PyTuple.cpp | 0 python_bindings/src/{ => halide/halide_}/PyTuple.h | 0 python_bindings/src/{ => halide/halide_}/PyType.cpp | 0 python_bindings/src/{ => halide/halide_}/PyType.h | 0 python_bindings/src/{ => halide/halide_}/PyVar.cpp | 0 python_bindings/src/{ => halide/halide_}/PyVar.h | 0 python_bindings/src/{ => halide/halide_}/PyVarOrRVar.cpp | 0 python_bindings/src/{ => halide/halide_}/PyVarOrRVar.h | 0 63 files changed, 2 insertions(+), 1 deletion(-) rename python_bindings/src/{ => halide}/CMakeLists.txt (97%) create mode 100644 python_bindings/src/halide/__init__.py rename python_bindings/src/{ => halide/halide_}/PyArgument.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyArgument.h (100%) rename python_bindings/src/{ => halide/halide_}/PyBinaryOperators.h (100%) rename python_bindings/src/{ => halide/halide_}/PyBoundaryConditions.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyBoundaryConditions.h (100%) rename python_bindings/src/{ => halide/halide_}/PyBuffer.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyBuffer.h (100%) rename python_bindings/src/{ => halide/halide_}/PyCallable.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyCallable.h (100%) rename python_bindings/src/{ => halide/halide_}/PyConciseCasts.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyConciseCasts.h (100%) rename python_bindings/src/{ => halide/halide_}/PyDerivative.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyDerivative.h (100%) rename python_bindings/src/{ => halide/halide_}/PyEnums.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyEnums.h (100%) rename python_bindings/src/{ => halide/halide_}/PyError.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyError.h (100%) rename python_bindings/src/{ => halide/halide_}/PyExpr.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyExpr.h (100%) rename python_bindings/src/{ => halide/halide_}/PyExternFuncArgument.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyExternFuncArgument.h (100%) rename python_bindings/src/{ => halide/halide_}/PyFunc.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyFunc.h (100%) rename python_bindings/src/{ => halide/halide_}/PyFuncRef.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyFuncRef.h (100%) rename python_bindings/src/{ => halide/halide_}/PyHalide.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyHalide.h (100%) rename python_bindings/src/{ => halide/halide_}/PyIROperator.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyIROperator.h (100%) rename python_bindings/src/{ => halide/halide_}/PyImageParam.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyImageParam.h (100%) rename python_bindings/src/{ => halide/halide_}/PyInlineReductions.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyInlineReductions.h (100%) rename python_bindings/src/{ => halide/halide_}/PyLambda.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyLambda.h (100%) rename python_bindings/src/{ => halide/halide_}/PyLoopLevel.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyLoopLevel.h (100%) rename python_bindings/src/{ => halide/halide_}/PyMachineParams.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyMachineParams.h (100%) rename python_bindings/src/{ => halide/halide_}/PyModule.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyModule.h (100%) rename python_bindings/src/{ => halide/halide_}/PyParam.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyParam.h (100%) rename python_bindings/src/{ => halide/halide_}/PyPipeline.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyPipeline.h (100%) rename python_bindings/src/{ => halide/halide_}/PyRDom.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyRDom.h (100%) rename python_bindings/src/{ => halide/halide_}/PyScheduleMethods.h (100%) rename python_bindings/src/{ => halide/halide_}/PyStage.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyStage.h (100%) rename python_bindings/src/{ => halide/halide_}/PyTarget.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyTarget.h (100%) rename python_bindings/src/{ => halide/halide_}/PyTuple.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyTuple.h (100%) rename python_bindings/src/{ => halide/halide_}/PyType.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyType.h (100%) rename python_bindings/src/{ => halide/halide_}/PyVar.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyVar.h (100%) rename python_bindings/src/{ => halide/halide_}/PyVarOrRVar.cpp (100%) rename python_bindings/src/{ => halide/halide_}/PyVarOrRVar.h (100%) diff --git a/python_bindings/CMakeLists.txt b/python_bindings/CMakeLists.txt index 2a359d619ad0..abaa220639da 100644 --- a/python_bindings/CMakeLists.txt +++ b/python_bindings/CMakeLists.txt @@ -18,7 +18,7 @@ endif () # Add our sources to this sub-tree. ## -add_subdirectory(src) +add_subdirectory(src/halide) add_subdirectory(stub) option(WITH_TEST_PYTHON "Build Python tests" ON) diff --git a/python_bindings/src/CMakeLists.txt b/python_bindings/src/halide/CMakeLists.txt similarity index 97% rename from python_bindings/src/CMakeLists.txt rename to python_bindings/src/halide/CMakeLists.txt index cd07c86df60c..e45a83ff7adf 100644 --- a/python_bindings/src/CMakeLists.txt +++ b/python_bindings/src/halide/CMakeLists.txt @@ -29,6 +29,7 @@ set(SOURCES PyVar.cpp PyVarOrRVar.cpp ) +list(TRANSFORM SOURCES PREPEND "halide_/") pybind11_add_module(Halide_Python MODULE ${SOURCES}) add_library(Halide::Python ALIAS Halide_Python) diff --git a/python_bindings/src/halide/__init__.py b/python_bindings/src/halide/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/python_bindings/src/PyArgument.cpp b/python_bindings/src/halide/halide_/PyArgument.cpp similarity index 100% rename from python_bindings/src/PyArgument.cpp rename to python_bindings/src/halide/halide_/PyArgument.cpp diff --git a/python_bindings/src/PyArgument.h b/python_bindings/src/halide/halide_/PyArgument.h similarity index 100% rename from python_bindings/src/PyArgument.h rename to python_bindings/src/halide/halide_/PyArgument.h diff --git a/python_bindings/src/PyBinaryOperators.h b/python_bindings/src/halide/halide_/PyBinaryOperators.h similarity index 100% rename from python_bindings/src/PyBinaryOperators.h rename to python_bindings/src/halide/halide_/PyBinaryOperators.h diff --git a/python_bindings/src/PyBoundaryConditions.cpp b/python_bindings/src/halide/halide_/PyBoundaryConditions.cpp similarity index 100% rename from python_bindings/src/PyBoundaryConditions.cpp rename to python_bindings/src/halide/halide_/PyBoundaryConditions.cpp diff --git a/python_bindings/src/PyBoundaryConditions.h b/python_bindings/src/halide/halide_/PyBoundaryConditions.h similarity index 100% rename from python_bindings/src/PyBoundaryConditions.h rename to python_bindings/src/halide/halide_/PyBoundaryConditions.h diff --git a/python_bindings/src/PyBuffer.cpp b/python_bindings/src/halide/halide_/PyBuffer.cpp similarity index 100% rename from python_bindings/src/PyBuffer.cpp rename to python_bindings/src/halide/halide_/PyBuffer.cpp diff --git a/python_bindings/src/PyBuffer.h b/python_bindings/src/halide/halide_/PyBuffer.h similarity index 100% rename from python_bindings/src/PyBuffer.h rename to python_bindings/src/halide/halide_/PyBuffer.h diff --git a/python_bindings/src/PyCallable.cpp b/python_bindings/src/halide/halide_/PyCallable.cpp similarity index 100% rename from python_bindings/src/PyCallable.cpp rename to python_bindings/src/halide/halide_/PyCallable.cpp diff --git a/python_bindings/src/PyCallable.h b/python_bindings/src/halide/halide_/PyCallable.h similarity index 100% rename from python_bindings/src/PyCallable.h rename to python_bindings/src/halide/halide_/PyCallable.h diff --git a/python_bindings/src/PyConciseCasts.cpp b/python_bindings/src/halide/halide_/PyConciseCasts.cpp similarity index 100% rename from python_bindings/src/PyConciseCasts.cpp rename to python_bindings/src/halide/halide_/PyConciseCasts.cpp diff --git a/python_bindings/src/PyConciseCasts.h b/python_bindings/src/halide/halide_/PyConciseCasts.h similarity index 100% rename from python_bindings/src/PyConciseCasts.h rename to python_bindings/src/halide/halide_/PyConciseCasts.h diff --git a/python_bindings/src/PyDerivative.cpp b/python_bindings/src/halide/halide_/PyDerivative.cpp similarity index 100% rename from python_bindings/src/PyDerivative.cpp rename to python_bindings/src/halide/halide_/PyDerivative.cpp diff --git a/python_bindings/src/PyDerivative.h b/python_bindings/src/halide/halide_/PyDerivative.h similarity index 100% rename from python_bindings/src/PyDerivative.h rename to python_bindings/src/halide/halide_/PyDerivative.h diff --git a/python_bindings/src/PyEnums.cpp b/python_bindings/src/halide/halide_/PyEnums.cpp similarity index 100% rename from python_bindings/src/PyEnums.cpp rename to python_bindings/src/halide/halide_/PyEnums.cpp diff --git a/python_bindings/src/PyEnums.h b/python_bindings/src/halide/halide_/PyEnums.h similarity index 100% rename from python_bindings/src/PyEnums.h rename to python_bindings/src/halide/halide_/PyEnums.h diff --git a/python_bindings/src/PyError.cpp b/python_bindings/src/halide/halide_/PyError.cpp similarity index 100% rename from python_bindings/src/PyError.cpp rename to python_bindings/src/halide/halide_/PyError.cpp diff --git a/python_bindings/src/PyError.h b/python_bindings/src/halide/halide_/PyError.h similarity index 100% rename from python_bindings/src/PyError.h rename to python_bindings/src/halide/halide_/PyError.h diff --git a/python_bindings/src/PyExpr.cpp b/python_bindings/src/halide/halide_/PyExpr.cpp similarity index 100% rename from python_bindings/src/PyExpr.cpp rename to python_bindings/src/halide/halide_/PyExpr.cpp diff --git a/python_bindings/src/PyExpr.h b/python_bindings/src/halide/halide_/PyExpr.h similarity index 100% rename from python_bindings/src/PyExpr.h rename to python_bindings/src/halide/halide_/PyExpr.h diff --git a/python_bindings/src/PyExternFuncArgument.cpp b/python_bindings/src/halide/halide_/PyExternFuncArgument.cpp similarity index 100% rename from python_bindings/src/PyExternFuncArgument.cpp rename to python_bindings/src/halide/halide_/PyExternFuncArgument.cpp diff --git a/python_bindings/src/PyExternFuncArgument.h b/python_bindings/src/halide/halide_/PyExternFuncArgument.h similarity index 100% rename from python_bindings/src/PyExternFuncArgument.h rename to python_bindings/src/halide/halide_/PyExternFuncArgument.h diff --git a/python_bindings/src/PyFunc.cpp b/python_bindings/src/halide/halide_/PyFunc.cpp similarity index 100% rename from python_bindings/src/PyFunc.cpp rename to python_bindings/src/halide/halide_/PyFunc.cpp diff --git a/python_bindings/src/PyFunc.h b/python_bindings/src/halide/halide_/PyFunc.h similarity index 100% rename from python_bindings/src/PyFunc.h rename to python_bindings/src/halide/halide_/PyFunc.h diff --git a/python_bindings/src/PyFuncRef.cpp b/python_bindings/src/halide/halide_/PyFuncRef.cpp similarity index 100% rename from python_bindings/src/PyFuncRef.cpp rename to python_bindings/src/halide/halide_/PyFuncRef.cpp diff --git a/python_bindings/src/PyFuncRef.h b/python_bindings/src/halide/halide_/PyFuncRef.h similarity index 100% rename from python_bindings/src/PyFuncRef.h rename to python_bindings/src/halide/halide_/PyFuncRef.h diff --git a/python_bindings/src/PyHalide.cpp b/python_bindings/src/halide/halide_/PyHalide.cpp similarity index 100% rename from python_bindings/src/PyHalide.cpp rename to python_bindings/src/halide/halide_/PyHalide.cpp diff --git a/python_bindings/src/PyHalide.h b/python_bindings/src/halide/halide_/PyHalide.h similarity index 100% rename from python_bindings/src/PyHalide.h rename to python_bindings/src/halide/halide_/PyHalide.h diff --git a/python_bindings/src/PyIROperator.cpp b/python_bindings/src/halide/halide_/PyIROperator.cpp similarity index 100% rename from python_bindings/src/PyIROperator.cpp rename to python_bindings/src/halide/halide_/PyIROperator.cpp diff --git a/python_bindings/src/PyIROperator.h b/python_bindings/src/halide/halide_/PyIROperator.h similarity index 100% rename from python_bindings/src/PyIROperator.h rename to python_bindings/src/halide/halide_/PyIROperator.h diff --git a/python_bindings/src/PyImageParam.cpp b/python_bindings/src/halide/halide_/PyImageParam.cpp similarity index 100% rename from python_bindings/src/PyImageParam.cpp rename to python_bindings/src/halide/halide_/PyImageParam.cpp diff --git a/python_bindings/src/PyImageParam.h b/python_bindings/src/halide/halide_/PyImageParam.h similarity index 100% rename from python_bindings/src/PyImageParam.h rename to python_bindings/src/halide/halide_/PyImageParam.h diff --git a/python_bindings/src/PyInlineReductions.cpp b/python_bindings/src/halide/halide_/PyInlineReductions.cpp similarity index 100% rename from python_bindings/src/PyInlineReductions.cpp rename to python_bindings/src/halide/halide_/PyInlineReductions.cpp diff --git a/python_bindings/src/PyInlineReductions.h b/python_bindings/src/halide/halide_/PyInlineReductions.h similarity index 100% rename from python_bindings/src/PyInlineReductions.h rename to python_bindings/src/halide/halide_/PyInlineReductions.h diff --git a/python_bindings/src/PyLambda.cpp b/python_bindings/src/halide/halide_/PyLambda.cpp similarity index 100% rename from python_bindings/src/PyLambda.cpp rename to python_bindings/src/halide/halide_/PyLambda.cpp diff --git a/python_bindings/src/PyLambda.h b/python_bindings/src/halide/halide_/PyLambda.h similarity index 100% rename from python_bindings/src/PyLambda.h rename to python_bindings/src/halide/halide_/PyLambda.h diff --git a/python_bindings/src/PyLoopLevel.cpp b/python_bindings/src/halide/halide_/PyLoopLevel.cpp similarity index 100% rename from python_bindings/src/PyLoopLevel.cpp rename to python_bindings/src/halide/halide_/PyLoopLevel.cpp diff --git a/python_bindings/src/PyLoopLevel.h b/python_bindings/src/halide/halide_/PyLoopLevel.h similarity index 100% rename from python_bindings/src/PyLoopLevel.h rename to python_bindings/src/halide/halide_/PyLoopLevel.h diff --git a/python_bindings/src/PyMachineParams.cpp b/python_bindings/src/halide/halide_/PyMachineParams.cpp similarity index 100% rename from python_bindings/src/PyMachineParams.cpp rename to python_bindings/src/halide/halide_/PyMachineParams.cpp diff --git a/python_bindings/src/PyMachineParams.h b/python_bindings/src/halide/halide_/PyMachineParams.h similarity index 100% rename from python_bindings/src/PyMachineParams.h rename to python_bindings/src/halide/halide_/PyMachineParams.h diff --git a/python_bindings/src/PyModule.cpp b/python_bindings/src/halide/halide_/PyModule.cpp similarity index 100% rename from python_bindings/src/PyModule.cpp rename to python_bindings/src/halide/halide_/PyModule.cpp diff --git a/python_bindings/src/PyModule.h b/python_bindings/src/halide/halide_/PyModule.h similarity index 100% rename from python_bindings/src/PyModule.h rename to python_bindings/src/halide/halide_/PyModule.h diff --git a/python_bindings/src/PyParam.cpp b/python_bindings/src/halide/halide_/PyParam.cpp similarity index 100% rename from python_bindings/src/PyParam.cpp rename to python_bindings/src/halide/halide_/PyParam.cpp diff --git a/python_bindings/src/PyParam.h b/python_bindings/src/halide/halide_/PyParam.h similarity index 100% rename from python_bindings/src/PyParam.h rename to python_bindings/src/halide/halide_/PyParam.h diff --git a/python_bindings/src/PyPipeline.cpp b/python_bindings/src/halide/halide_/PyPipeline.cpp similarity index 100% rename from python_bindings/src/PyPipeline.cpp rename to python_bindings/src/halide/halide_/PyPipeline.cpp diff --git a/python_bindings/src/PyPipeline.h b/python_bindings/src/halide/halide_/PyPipeline.h similarity index 100% rename from python_bindings/src/PyPipeline.h rename to python_bindings/src/halide/halide_/PyPipeline.h diff --git a/python_bindings/src/PyRDom.cpp b/python_bindings/src/halide/halide_/PyRDom.cpp similarity index 100% rename from python_bindings/src/PyRDom.cpp rename to python_bindings/src/halide/halide_/PyRDom.cpp diff --git a/python_bindings/src/PyRDom.h b/python_bindings/src/halide/halide_/PyRDom.h similarity index 100% rename from python_bindings/src/PyRDom.h rename to python_bindings/src/halide/halide_/PyRDom.h diff --git a/python_bindings/src/PyScheduleMethods.h b/python_bindings/src/halide/halide_/PyScheduleMethods.h similarity index 100% rename from python_bindings/src/PyScheduleMethods.h rename to python_bindings/src/halide/halide_/PyScheduleMethods.h diff --git a/python_bindings/src/PyStage.cpp b/python_bindings/src/halide/halide_/PyStage.cpp similarity index 100% rename from python_bindings/src/PyStage.cpp rename to python_bindings/src/halide/halide_/PyStage.cpp diff --git a/python_bindings/src/PyStage.h b/python_bindings/src/halide/halide_/PyStage.h similarity index 100% rename from python_bindings/src/PyStage.h rename to python_bindings/src/halide/halide_/PyStage.h diff --git a/python_bindings/src/PyTarget.cpp b/python_bindings/src/halide/halide_/PyTarget.cpp similarity index 100% rename from python_bindings/src/PyTarget.cpp rename to python_bindings/src/halide/halide_/PyTarget.cpp diff --git a/python_bindings/src/PyTarget.h b/python_bindings/src/halide/halide_/PyTarget.h similarity index 100% rename from python_bindings/src/PyTarget.h rename to python_bindings/src/halide/halide_/PyTarget.h diff --git a/python_bindings/src/PyTuple.cpp b/python_bindings/src/halide/halide_/PyTuple.cpp similarity index 100% rename from python_bindings/src/PyTuple.cpp rename to python_bindings/src/halide/halide_/PyTuple.cpp diff --git a/python_bindings/src/PyTuple.h b/python_bindings/src/halide/halide_/PyTuple.h similarity index 100% rename from python_bindings/src/PyTuple.h rename to python_bindings/src/halide/halide_/PyTuple.h diff --git a/python_bindings/src/PyType.cpp b/python_bindings/src/halide/halide_/PyType.cpp similarity index 100% rename from python_bindings/src/PyType.cpp rename to python_bindings/src/halide/halide_/PyType.cpp diff --git a/python_bindings/src/PyType.h b/python_bindings/src/halide/halide_/PyType.h similarity index 100% rename from python_bindings/src/PyType.h rename to python_bindings/src/halide/halide_/PyType.h diff --git a/python_bindings/src/PyVar.cpp b/python_bindings/src/halide/halide_/PyVar.cpp similarity index 100% rename from python_bindings/src/PyVar.cpp rename to python_bindings/src/halide/halide_/PyVar.cpp diff --git a/python_bindings/src/PyVar.h b/python_bindings/src/halide/halide_/PyVar.h similarity index 100% rename from python_bindings/src/PyVar.h rename to python_bindings/src/halide/halide_/PyVar.h diff --git a/python_bindings/src/PyVarOrRVar.cpp b/python_bindings/src/halide/halide_/PyVarOrRVar.cpp similarity index 100% rename from python_bindings/src/PyVarOrRVar.cpp rename to python_bindings/src/halide/halide_/PyVarOrRVar.cpp diff --git a/python_bindings/src/PyVarOrRVar.h b/python_bindings/src/halide/halide_/PyVarOrRVar.h similarity index 100% rename from python_bindings/src/PyVarOrRVar.h rename to python_bindings/src/halide/halide_/PyVarOrRVar.h From 678e79852ce19ec35b4a940b4ece09fdd644a075 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 19 Jul 2022 19:37:06 +0000 Subject: [PATCH 2/8] Rename native module to halide_ --- python_bindings/src/halide/CMakeLists.txt | 17 +++++++++++++---- python_bindings/src/halide/__init__.py | 1 + python_bindings/src/halide/halide_/PyHalide.cpp | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/python_bindings/src/halide/CMakeLists.txt b/python_bindings/src/halide/CMakeLists.txt index e45a83ff7adf..673541547c47 100644 --- a/python_bindings/src/halide/CMakeLists.txt +++ b/python_bindings/src/halide/CMakeLists.txt @@ -1,4 +1,4 @@ -set(SOURCES +set(native_sources PyArgument.cpp PyBoundaryConditions.cpp PyBuffer.cpp @@ -29,13 +29,22 @@ set(SOURCES PyVar.cpp PyVarOrRVar.cpp ) -list(TRANSFORM SOURCES PREPEND "halide_/") +list(TRANSFORM native_sources PREPEND "halide_/") -pybind11_add_module(Halide_Python MODULE ${SOURCES}) +set(python_sources + __init__.py + ) + +foreach(source IN LISTS python_sources) + configure_file("${source}" "${source}" COPYONLY) +endforeach() + + +pybind11_add_module(Halide_Python MODULE ${native_sources}) add_library(Halide::Python ALIAS Halide_Python) set_target_properties(Halide_Python PROPERTIES - LIBRARY_OUTPUT_NAME halide + LIBRARY_OUTPUT_NAME halide_ EXPORT_NAME Python) target_link_libraries(Halide_Python PRIVATE Halide::Halide) diff --git a/python_bindings/src/halide/__init__.py b/python_bindings/src/halide/__init__.py index e69de29bb2d1..08863f14b44d 100644 --- a/python_bindings/src/halide/__init__.py +++ b/python_bindings/src/halide/__init__.py @@ -0,0 +1 @@ +from .halide_ import * diff --git a/python_bindings/src/halide/halide_/PyHalide.cpp b/python_bindings/src/halide/halide_/PyHalide.cpp index a7348dcffc67..d64ca3f9876b 100644 --- a/python_bindings/src/halide/halide_/PyHalide.cpp +++ b/python_bindings/src/halide/halide_/PyHalide.cpp @@ -34,7 +34,7 @@ static_assert(PY_VERSION_HEX >= 0x03000000, "We appear to be compiling against Python 2.x rather than 3.x, which is not supported."); #ifndef HALIDE_PYBIND_MODULE_NAME -#define HALIDE_PYBIND_MODULE_NAME halide +#define HALIDE_PYBIND_MODULE_NAME halide_ #endif PYBIND11_MODULE(HALIDE_PYBIND_MODULE_NAME, m) { From 2bddcd30789e355f78c7145c254d75fa5d57d538 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Tue, 19 Jul 2022 19:47:23 +0000 Subject: [PATCH 3/8] Fix tests --- python_bindings/src/halide/__init__.py | 1 + python_bindings/test/apps/CMakeLists.txt | 2 +- python_bindings/test/correctness/CMakeLists.txt | 2 +- python_bindings/tutorial/CMakeLists.txt | 2 +- src/autoschedulers/li2018/CMakeLists.txt | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/python_bindings/src/halide/__init__.py b/python_bindings/src/halide/__init__.py index 08863f14b44d..20c9f793e327 100644 --- a/python_bindings/src/halide/__init__.py +++ b/python_bindings/src/halide/__init__.py @@ -1 +1,2 @@ from .halide_ import * +from .halide_ import _, _1, _2, _3, _4, _5, _6, _7, _8, _9 diff --git a/python_bindings/test/apps/CMakeLists.txt b/python_bindings/test/apps/CMakeLists.txt index bae37c348e2e..622c82b8990e 100644 --- a/python_bindings/test/apps/CMakeLists.txt +++ b/python_bindings/test/apps/CMakeLists.txt @@ -6,7 +6,7 @@ set(SCRIPTS local_laplacian.py) set(TEST_ENV - "PYTHONPATH=$>" + "PYTHONPATH=$/..>" "HL_TARGET=${Halide_TARGET}" "TEST_TMPDIR=$" "TEST_IMAGES_DIR=$" diff --git a/python_bindings/test/correctness/CMakeLists.txt b/python_bindings/test/correctness/CMakeLists.txt index 239c0612159d..bcc189d4963b 100644 --- a/python_bindings/test/correctness/CMakeLists.txt +++ b/python_bindings/test/correctness/CMakeLists.txt @@ -30,7 +30,7 @@ set(TESTS make_shell_path(PYTHONPATH "$" "$" - "$" + "$/.." ) foreach (TEST IN LISTS TESTS) diff --git a/python_bindings/tutorial/CMakeLists.txt b/python_bindings/tutorial/CMakeLists.txt index 98967af578a1..2f99a3048678 100644 --- a/python_bindings/tutorial/CMakeLists.txt +++ b/python_bindings/tutorial/CMakeLists.txt @@ -16,7 +16,7 @@ set(TESTS lesson_14_types.py ) -make_shell_path(PYTHONPATH "$" "$") +make_shell_path(PYTHONPATH "$" "$/..") foreach (TEST IN LISTS TESTS) get_filename_component(TEST_NAME ${TEST} NAME_WE) diff --git a/src/autoschedulers/li2018/CMakeLists.txt b/src/autoschedulers/li2018/CMakeLists.txt index c767ddf3b78b..0c05b3f913aa 100644 --- a/src/autoschedulers/li2018/CMakeLists.txt +++ b/src/autoschedulers/li2018/CMakeLists.txt @@ -44,7 +44,7 @@ if (WITH_PYTHON_BINDINGS) add_test(NAME gradient_autoscheduler_test_py COMMAND Python3::Interpreter "${CMAKE_CURRENT_SOURCE_DIR}/test.py") - set(PYTHONPATH "$>") + set(PYTHONPATH "$/..>") if (WIN32) set(SEP "\\$") From b10859914dd97cc48d9882306e8daeb80b09935e Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Wed, 20 Jul 2022 15:28:54 +0000 Subject: [PATCH 4/8] Avoid copying Python sources --- python_bindings/src/halide/CMakeLists.txt | 9 --------- python_bindings/src/halide/__init__.py | 9 +++++++-- python_bindings/test/apps/CMakeLists.txt | 8 +++++++- python_bindings/test/correctness/CMakeLists.txt | 12 +++++++----- python_bindings/tutorial/CMakeLists.txt | 7 ++++++- src/autoschedulers/li2018/CMakeLists.txt | 6 +++++- 6 files changed, 32 insertions(+), 19 deletions(-) diff --git a/python_bindings/src/halide/CMakeLists.txt b/python_bindings/src/halide/CMakeLists.txt index 673541547c47..942c72d99a49 100644 --- a/python_bindings/src/halide/CMakeLists.txt +++ b/python_bindings/src/halide/CMakeLists.txt @@ -31,15 +31,6 @@ set(native_sources ) list(TRANSFORM native_sources PREPEND "halide_/") -set(python_sources - __init__.py - ) - -foreach(source IN LISTS python_sources) - configure_file("${source}" "${source}" COPYONLY) -endforeach() - - pybind11_add_module(Halide_Python MODULE ${native_sources}) add_library(Halide::Python ALIAS Halide_Python) set_target_properties(Halide_Python diff --git a/python_bindings/src/halide/__init__.py b/python_bindings/src/halide/__init__.py index 20c9f793e327..022b1a8441ed 100644 --- a/python_bindings/src/halide/__init__.py +++ b/python_bindings/src/halide/__init__.py @@ -1,2 +1,7 @@ -from .halide_ import * -from .halide_ import _, _1, _2, _3, _4, _5, _6, _7, _8, _9 +import sys +from pathlib import Path + +sys.path.append(str(Path(__file__).parent.resolve(strict=True))) + +from halide_ import * +from halide_ import _, _1, _2, _3, _4, _5, _6, _7, _8, _9 diff --git a/python_bindings/test/apps/CMakeLists.txt b/python_bindings/test/apps/CMakeLists.txt index 622c82b8990e..90e8de28eadd 100644 --- a/python_bindings/test/apps/CMakeLists.txt +++ b/python_bindings/test/apps/CMakeLists.txt @@ -5,8 +5,14 @@ set(SCRIPTS interpolate.py local_laplacian.py) +make_shell_path( + PYTHONPATH + "$" + "${Halide_SOURCE_DIR}/python_bindings/src" +) + set(TEST_ENV - "PYTHONPATH=$/..>" + "PYTHONPATH=${PYTHONPATH}" "HL_TARGET=${Halide_TARGET}" "TEST_TMPDIR=$" "TEST_IMAGES_DIR=$" diff --git a/python_bindings/test/correctness/CMakeLists.txt b/python_bindings/test/correctness/CMakeLists.txt index bcc189d4963b..205256e4d2f7 100644 --- a/python_bindings/test/correctness/CMakeLists.txt +++ b/python_bindings/test/correctness/CMakeLists.txt @@ -27,11 +27,13 @@ set(TESTS ) # Use generator expressions to get the true output paths of these files. -make_shell_path(PYTHONPATH - "$" - "$" - "$/.." - ) +make_shell_path( + PYTHONPATH + "$" + "$" + "$" + "${Halide_SOURCE_DIR}/python_bindings/src" +) foreach (TEST IN LISTS TESTS) get_filename_component(TEST_NAME ${TEST} NAME_WE) diff --git a/python_bindings/tutorial/CMakeLists.txt b/python_bindings/tutorial/CMakeLists.txt index 2f99a3048678..eb3512990f9d 100644 --- a/python_bindings/tutorial/CMakeLists.txt +++ b/python_bindings/tutorial/CMakeLists.txt @@ -16,7 +16,12 @@ set(TESTS lesson_14_types.py ) -make_shell_path(PYTHONPATH "$" "$/..") +make_shell_path( + PYTHONPATH + "$" + "$" + "${Halide_SOURCE_DIR}/python_bindings/src" +) foreach (TEST IN LISTS TESTS) get_filename_component(TEST_NAME ${TEST} NAME_WE) diff --git a/src/autoschedulers/li2018/CMakeLists.txt b/src/autoschedulers/li2018/CMakeLists.txt index 0c05b3f913aa..1c13ee8336b8 100644 --- a/src/autoschedulers/li2018/CMakeLists.txt +++ b/src/autoschedulers/li2018/CMakeLists.txt @@ -44,7 +44,11 @@ if (WITH_PYTHON_BINDINGS) add_test(NAME gradient_autoscheduler_test_py COMMAND Python3::Interpreter "${CMAKE_CURRENT_SOURCE_DIR}/test.py") - set(PYTHONPATH "$/..>") + make_shell_path( + PYTHONPATH + "$" + "${Halide_SOURCE_DIR}/python_bindings/src" + ) if (WIN32) set(SEP "\\$") From bc986220e830394d17dbf0f62e38acb0bc98738f Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Wed, 20 Jul 2022 15:45:04 +0000 Subject: [PATCH 5/8] Fix installation rules --- packaging/CMakeLists.txt | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt index 21ddd9affd96..27988cb70a18 100644 --- a/packaging/CMakeLists.txt +++ b/packaging/CMakeLists.txt @@ -52,8 +52,18 @@ endforeach () if (WITH_PYTHON_BINDINGS) set(Halide_INSTALL_PYTHONDIR "${CMAKE_INSTALL_LIBDIR}/python3/site-packages" CACHE STRING "Path to Halide Python bindings folder") + + install(DIRECTORY "${Halide_SOURCE_DIR}/python_bindings/src/halide" + DESTINATION "${Halide_INSTALL_PYTHONDIR}" + COMPONENT Halide_Python + FILES_MATCHING + PATTERN "*.py" + PATTERN "*/halide_" EXCLUDE + PATTERN "*/__pycache__" EXCLUDE) + install(TARGETS Halide_Python - LIBRARY DESTINATION ${Halide_INSTALL_PYTHONDIR} COMPONENT Halide_Python + LIBRARY DESTINATION "${Halide_INSTALL_PYTHONDIR}/halide" + COMPONENT Halide_Python NAMELINK_COMPONENT Halide_Python) endif () @@ -101,6 +111,13 @@ if (TARGET Halide_Adams2019) COMPONENT Halide_Development) endif () +if (TARGET Halide_Python AND NOT CMAKE_INSTALL_RPATH) + file(RELATIVE_PATH lib_dir + "${CMAKE_CURRENT_BINARY_DIR}/${Halide_INSTALL_PYTHONDIR}/halide" + "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") + set_target_properties(Halide_Python PROPERTIES INSTALL_RPATH "${rbase}/${lib_dir}") +endif () + ## # READMEs and other top-level documentation ## @@ -268,6 +285,11 @@ cpack_add_component(Halide_Development DESCRIPTION "Static Halide libraries and CMake development files" DEPENDS Halide_Runtime) +cpack_add_component(Halide_Python + DISPLAY_NAME "Python bindings" + DESCRIPTION "Python package providing bindings to Halide" + DEPENDS Halide_Runtime) + cpack_add_component(Halide_Documentation DISPLAY_NAME "Halide documentation" DESCRIPTION "Documentation for Halide") From 1c58151ada2e1d526776a87b97c30dde190d797a Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Wed, 20 Jul 2022 15:47:09 +0000 Subject: [PATCH 6/8] Make diff smaller --- python_bindings/src/halide/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/python_bindings/src/halide/CMakeLists.txt b/python_bindings/src/halide/CMakeLists.txt index 942c72d99a49..ed33ee6ceaf8 100644 --- a/python_bindings/src/halide/CMakeLists.txt +++ b/python_bindings/src/halide/CMakeLists.txt @@ -1,4 +1,4 @@ -set(native_sources +set(SOURCES PyArgument.cpp PyBoundaryConditions.cpp PyBuffer.cpp @@ -29,9 +29,9 @@ set(native_sources PyVar.cpp PyVarOrRVar.cpp ) -list(TRANSFORM native_sources PREPEND "halide_/") +list(TRANSFORM SOURCES PREPEND "halide_/") -pybind11_add_module(Halide_Python MODULE ${native_sources}) +pybind11_add_module(Halide_Python MODULE ${SOURCES}) add_library(Halide::Python ALIAS Halide_Python) set_target_properties(Halide_Python PROPERTIES From 8a911641fe7fbfa559e0be313d967cc0096016d8 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 20 Jul 2022 10:20:05 -0700 Subject: [PATCH 7/8] trigger buildbots From 0e7d1fb9ac8945f16981f32587669f536325d0a8 Mon Sep 17 00:00:00 2001 From: Alex Reinking Date: Wed, 20 Jul 2022 20:02:31 +0000 Subject: [PATCH 8/8] Add issue todo --- python_bindings/src/halide/__init__.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/python_bindings/src/halide/__init__.py b/python_bindings/src/halide/__init__.py index 022b1a8441ed..88f00caab722 100644 --- a/python_bindings/src/halide/__init__.py +++ b/python_bindings/src/halide/__init__.py @@ -1,6 +1,23 @@ +# TODO(#6870): The following three lines are a stop-gap. This file should just +# contain the last two imports, at least until the pure-Python part of the +# library grows. +# +# There are three main reasons why this exists: +# +# 1. relative imports cannot be overloaded with sys.path +# 2. for a variety of reasons, copying the python sources next to the +# halide_.*.so module is difficult to make work in 100% of cases in CMake +# 3. even if we could copy them reliably, copying these files into the build +# folder seems inelegant +# +# Fortunately, there are apparently other hooks besides sys.path that we could +# use to redirect a failing relative import. +# +# https://docs.python.org/3/reference/import.html#finders-and-loaders +# https://github.com/halide/Halide/issues/6870 + import sys from pathlib import Path - sys.path.append(str(Path(__file__).parent.resolve(strict=True))) from halide_ import *