summaryrefslogtreecommitdiff
path: root/infra/nnfw/cmake/packages/PeachpySourceConfig.cmake
blob: 4cfd682c713acde34d3a7bd7a57e100c7078aead (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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()