summaryrefslogtreecommitdiff
path: root/infra/nnfw/cmake/packages/PeachpySourceConfig.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'infra/nnfw/cmake/packages/PeachpySourceConfig.cmake')
-rw-r--r--infra/nnfw/cmake/packages/PeachpySourceConfig.cmake31
1 files changed, 31 insertions, 0 deletions
diff --git a/infra/nnfw/cmake/packages/PeachpySourceConfig.cmake b/infra/nnfw/cmake/packages/PeachpySourceConfig.cmake
new file mode 100644
index 000000000..4cfd682c7
--- /dev/null
+++ b/infra/nnfw/cmake/packages/PeachpySourceConfig.cmake
@@ -0,0 +1,31 @@
+function(_PeachpySource_import)
+ nnfw_include(ExternalSourceTools)
+ nnfw_include(OptionTools)
+
+ envoption(EXTERNAL_DOWNLOAD_SERVER "https://github.com")
+ set(PEACHPY_URL ${EXTERNAL_DOWNLOAD_SERVER}/Maratyszcza/PeachPy/archive/01d15157a973a4ae16b8046313ddab371ea582db.tar.gz)
+
+ ExternalSource_Get("python_peachpy" ${DOWNLOAD_NNPACK} ${PEACHPY_URL})
+ FIND_PACKAGE(PythonInterp)
+
+ nnfw_find_package(SixSource REQUIRED)
+ nnfw_find_package(Enum34Source REQUIRED)
+ nnfw_find_package(OpcodesSource REQUIRED)
+
+ # Generate opcodes:
+ SET(ENV{PYTHONPATH} ${python_peachpy_SOURCE_DIR}:${PYTHON_SIX_SOURCE_DIR}:${PYTHON_ENUM_SOURCE_DIR}:${PYTHON_OPCODES_SOURCE_DIR})
+ EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ./codegen/x86_64.py
+ WORKING_DIRECTORY ${python_peachpy_SOURCE_DIR}
+ RESULT_VARIABLE BUILT_PP)
+
+ if(NOT BUILT_PP EQUAL 0)
+ # Mark PYTHON_PEACHPY_SOURCE_FOUND as FALSE if source generation fails
+ set(PYTHON_PEACHPY_SOURCE_FOUND FALSE PARENT_SCOPE)
+ return()
+ endif(NOT BUILT_PP EQUAL 0)
+
+ set(PYTHON_PEACHPY_SOURCE_DIR ${python_peachpy_SOURCE_DIR} PARENT_SCOPE)
+ set(PYTHON_PEACHPY_SOURCE_FOUND ${python_peachpy_SOURCE_GET} PARENT_SCOPE)
+endfunction(_PeachpySource_import)
+
+_PeachpySource_import()