1 # NOTE find_package try to use at least python3.8 as follows depending on platform version
2 # Ubuntu18.04; explictly installed python3.8 (default is python3.6)
3 # Ubuntu20.04; default python3.8
4 # Ubuntu22.04; default python3.10
5 # refer https://github.com/Samsung/ONE/issues/9962
6 find_package(PythonInterp 3.8 QUIET)
7 find_package(PythonLibs 3.8 QUIET)
9 if(NOT ${PYTHONINTERP_FOUND})
10 message(STATUS "Build one-cmds: FALSE (Python3 is missing)")
14 if(${PYTHON_VERSION_MINOR} LESS 8)
15 message(STATUS "Build one-cmds: FALSE (You need to install Python version higher than 3.8)")
19 # NOTE these files should not have extensions.
20 # below code will remove extension when copy and install.
38 # TODO find better way for per-platform files
39 if(ONE_UBUNTU_CODENAME_JAMMY)
40 # NOTE copy one-prepare-venv.u2204 as build/../one-prepare-venv
41 # and install build/../one-prepare-venv file
42 list(APPEND ONE_COMMAND_FILES one-prepare-venv.u2204)
44 list(APPEND ONE_COMMAND_FILES one-prepare-venv)
47 # pytorch importer is an experimental feature, it is not used in default configuration
48 if(ENABLE_ONE_IMPORT_PYTORCH)
49 list(APPEND ONE_COMMAND_FILES one-import-pytorch)
50 endif(ENABLE_ONE_IMPORT_PYTORCH)
52 foreach(ONE_COMMAND IN ITEMS ${ONE_COMMAND_FILES})
54 set(ONE_COMMAND_FILE ${ONE_COMMAND})
55 set(ONE_COMMAND_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${ONE_COMMAND_FILE}")
56 # strip extension from the name
57 get_filename_component(ONE_COMMNAD_FILE_NAME ${ONE_COMMAND} NAME_WE)
58 set(ONE_COMMAND_BIN "${CMAKE_CURRENT_BINARY_DIR}/${ONE_COMMNAD_FILE_NAME}")
59 set(ONE_COMMAND_TARGET "${ONE_COMMAND}_target")
61 add_custom_command(OUTPUT ${ONE_COMMAND_BIN}
62 COMMAND ${CMAKE_COMMAND} -E copy "${ONE_COMMAND_SRC}" "${ONE_COMMAND_BIN}"
63 DEPENDS ${ONE_COMMAND_SRC}
64 COMMENT "Generate ${ONE_COMMAND_BIN}"
67 add_custom_target(${ONE_COMMAND_TARGET} ALL DEPENDS ${ONE_COMMAND_BIN})
69 install(FILES ${ONE_COMMAND_BIN}
70 PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE
71 GROUP_READ GROUP_EXECUTE
72 WORLD_READ WORLD_EXECUTE
75 endforeach(ONE_COMMAND)
78 one-build.template.cfg
83 foreach(ONE_UTILITY IN ITEMS ${ONE_UTILITY_FILES})
85 set(ONE_UTILITY_FILE ${ONE_UTILITY})
86 set(ONE_UTILITY_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${ONE_UTILITY_FILE}")
87 set(ONE_UTILITY_BIN "${CMAKE_CURRENT_BINARY_DIR}/${ONE_UTILITY_FILE}")
88 set(ONE_UTILITY_TARGET "${ONE_UTILITY}_target")
90 add_custom_command(OUTPUT ${ONE_UTILITY_BIN}
91 COMMAND ${CMAKE_COMMAND} -E copy "${ONE_UTILITY_SRC}" "${ONE_UTILITY_BIN}"
92 DEPENDS ${ONE_UTILITY_SRC}
93 COMMENT "Generate ${ONE_UTILITY_BIN}"
96 add_custom_target(${ONE_UTILITY_TARGET} ALL DEPENDS ${ONE_UTILITY_BIN})
98 install(FILES ${ONE_UTILITY}
99 PERMISSIONS OWNER_WRITE OWNER_READ
104 endforeach(ONE_UTILITY)
106 # one-pack internally uses model2nnpkg tool
107 set(MODEL2NNPKG "${NNAS_PROJECT_SOURCE_DIR}/tools/nnpackage_tool/model2nnpkg/model2nnpkg.py")
108 install(FILES ${MODEL2NNPKG}
109 PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE
110 GROUP_READ GROUP_EXECUTE
111 WORLD_READ WORLD_EXECUTE
113 RENAME "model2nnpkg")
115 # make python directory
116 set(ONE_PYTHON_FILES constant.py
121 TopologicalSortHelper.py
125 foreach(ONE_PYTHON_FILE IN ITEMS ${ONE_PYTHON_FILES})
127 set(ONE_PYTHON_DIR "onelib")
128 set(ONE_PYTHON_DIR_BIN "${CMAKE_CURRENT_BINARY_DIR}/${ONE_PYTHON_DIR}")
129 set(ONE_PYTHON_FILE_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${ONE_PYTHON_DIR}/${ONE_PYTHON_FILE}")
130 set(ONE_PYTHON_FILE_BIN "${CMAKE_CURRENT_BINARY_DIR}/${ONE_PYTHON_DIR}/${ONE_PYTHON_FILE}")
131 set(ONE_PYTHON_TARGET "${ONE_PYTHON_FILE}_target")
133 add_custom_command(OUTPUT ${ONE_PYTHON_DIR_BIN}
134 COMMAND ${CMAKE_COMMAND} -E make_directory "${ONE_PYTHON_DIR_BIN}"
135 COMMENT "Generate ${ONE_PYTHON_DIR_BIN}"
138 add_custom_command(OUTPUT ${ONE_PYTHON_FILE_BIN}
139 COMMAND ${CMAKE_COMMAND} -E copy "${ONE_PYTHON_FILE_SRC}" "${ONE_PYTHON_FILE_BIN}"
140 DEPENDS ${ONE_PYTHON_SRC}
141 COMMENT "Generate ${ONE_PYTHON_FILE_BIN}"
144 add_custom_target(${ONE_PYTHON_TARGET} ALL DEPENDS ${ONE_PYTHON_DIR_BIN} ${ONE_PYTHON_FILE_BIN})
146 install(DIRECTORY ${ONE_PYTHON_DIR}
147 FILE_PERMISSIONS OWNER_WRITE OWNER_READ
152 endforeach(ONE_PYTHON_FILE)
154 set(CONSTANT_EXPORTING_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/${ONE_PYTHON_DIR}/export_constant.py")
156 set(O1_CFG_FILE "${O1_OPTION}.cfg")
157 set(O1_CFG_FILE_BIN "${CMAKE_CURRENT_BINARY_DIR}/${ONE_PYTHON_DIR}/${O1_CFG_FILE}")
159 add_custom_command(OUTPUT ${O1_CFG_FILE_BIN}
160 COMMAND ${PYTHON_EXECUTABLE} ${CONSTANT_EXPORTING_SCRIPT}
161 --constant ${O1_OPTION}
163 --output_path ${O1_CFG_FILE_BIN}
164 DEPENDS ${CONSTANT_EXPORTING_SCRIPT}
165 COMMENT "Generate ${O1_CFG_FILE}"
168 add_custom_target("O1_cfg_target" ALL DEPENDS ${O1_CFG_FILE_BIN})
170 install(FILES ${O1_CFG_FILE_BIN}
171 PERMISSIONS OWNER_WRITE OWNER_READ
174 DESTINATION optimization)
176 set(ONE_DOCUMENT_FILES
177 how-to-use-one-commands.txt
178 how-to-prepare-virtualenv.txt
179 how-to-create-hdf5-dataset.txt
182 foreach(ONE_DOCUMENT IN ITEMS ${ONE_DOCUMENT_FILES})
184 install(FILES ${ONE_DOCUMENT} DESTINATION doc)
186 endforeach(ONE_DOCUMENT)
190 endif(NOT ENABLE_TEST)
192 add_subdirectory(dummy-driver)
193 add_subdirectory(tests)
194 add_subdirectory(validate-onnx2circle)