3 SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5 if [[ -z "${NNAS_PROJECT_PATH}" ]]; then
6 echo "ERROR: NNAS_PROJECT_PATH is not specified"
11 while [ "$#" -ne 0 ]; do
16 NNAS_INSTALL_PREFIX="$2"
21 while [ "$#" -ne 0 ]; do
27 echo "ERROR: '${CUR}' is invalid"
33 # Q. Is it better to have the default value for NNAS_INSTALL_PREFIX?
35 if [[ -z "${NNAS_INSTALL_PREFIX}" ]]; then
36 echo "ERROR: --prefix is not specified"
40 # Normalize to absolute path
41 if [[ "${NNAS_INSTALL_PREFIX}" != /* ]]; then
42 NNAS_INSTALL_PREFIX=${PWD}/${NNAS_INSTALL_PREFIX}
45 if [[ -z "${NNAS_BUILD_PREFIX}" ]]; then
46 # Create a temporary directory and use it!
47 NNAS_BUILD_PREFIX=$(mktemp -d)
48 trap "{ rm -rf $NNAS_BUILD_PREFIX; }" EXIT
51 # Create a release directory
52 mkdir -p "${NNAS_INSTALL_PREFIX}"
54 # Build and Install NNCC
55 NNCC_BUILD_PREFIX="${NNAS_BUILD_PREFIX}/nncc"
56 NNCC_INSTALL_PREFIX="${NNAS_INSTALL_PREFIX}"
58 mkdir -p "${NNCC_BUILD_PREFIX}"
59 cd "${NNCC_BUILD_PREFIX}"
63 local IFS="$1"; shift; echo "$*"
68 REQUIRED_UNITS+=("angkor" "bino" "cwrap" "fipe" "pepper-str" "pepper-strcast" "pp" "stdex")
69 REQUIRED_UNITS+=("oops" "pepper-assert")
70 # Hermes Logging Framework
71 REQUIRED_UNITS+=("hermes" "hermes-std")
72 # loco IR and related utilities
73 REQUIRED_UNITS+=("loco" "locop" "locomotiv" "logo-core" "logo")
74 # loco IR extension: Custom Op Support
75 REQUIRED_UNITS+=("locoex-customop")
76 # TensorFlow Libraries
77 REQUIRED_UNITS+=("tfinfo" "plier-tf")
78 # TensorFlow GraphDef I/O
79 REQUIRED_UNITS+=("mio-tf")
80 # TensorFlow Frontend (.pb/.pbtxt -> loco.caninical)
81 REQUIRED_UNITS+=("moco-log" "moco" "moco-tf")
82 # TensorFlow Lite/Circle Backend (loco.canonical -> .tflite, loco.circle -> .circle)
83 REQUIRED_UNITS+=("exo")
85 REQUIRED_UNITS+=("tf2tflite" "tf2circle")
87 # TODO Use "nncc configure" and "nncc build"
89 -DCMAKE_INSTALL_PREFIX="${NNCC_INSTALL_PREFIX}" \
90 -DCMAKE_BUILD_TYPE=release \
91 -DBUILD_WHITELIST=$(join_by ";" "${REQUIRED_UNITS[@]}") \
93 "${NNAS_PROJECT_PATH}/infra/nncc"
95 cmake --build . -- all
96 cmake --build . -- install
98 # Install NN Package tools
99 NNPKG_INSTALL_PREFIX="${NNAS_INSTALL_PREFIX}"
101 install -t "${NNPKG_INSTALL_PREFIX}/bin" -D \
102 "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/model2nnpkg/model2nnpkg.sh" \
103 "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflite2circle.sh" \
104 "${NNAS_PROJECT_PATH}/tools/nnpackage_tool/tflite2circle/tflitejson2circlejson.py"
106 install -T -m 644 -D \
107 "${SCRIPT_PATH}/res/tflite_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/tflite_schema.fbs"
108 install -T -m 644 -D \
109 "${NNAS_PROJECT_PATH}/nnpackage/schema/circle_schema.fbs" "${NNPKG_INSTALL_PREFIX}/res/circle_schema.fbs"
112 install -T -m 755 -D "${SCRIPT_PATH}/res/tf2nnpkg" "${NNAS_INSTALL_PREFIX}/bin/tf2nnpkg"