mehrdadh commented on a change in pull request #9970:
URL: https://github.com/apache/tvm/pull/9970#discussion_r789138817



##########
File path: apps/hexagon_api/CMakeLists.txt
##########
@@ -0,0 +1,83 @@
+cmake_minimum_required(VERSION 3.2)
+
+project(hexagon_api)
+
+include(ExternalProject)
+
+# Required variables:
+#   ANDROID_ABI
+#   ANDROID_PLATFORM
+#   USE_ANDROID_TOOLCHAIN (Android toolchain .cmake file)
+#   USE_HEXAGON_ARCH
+#   USE_HEXAGON_SDK
+#   USE_HEXAGON_TOOLCHAIN (Path to Hexagon toolchain ending with "Tools")
+
+set(TVM_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../..")
+set(HEXAGON_API_BINARY_DIR "${CMAKE_BINARY_DIR}/hexagon_rpc")

Review comment:
       change HEXAGON_API_BINARY_DIR to this to be compatible with current 
HexagonLauncher design:
   set(HEXAGON_API_BINARY_DIR "${CMAKE_BINARY_DIR}/../../../build/hexagon_rpc")
   
   This is with the assumption of building this CmakeLists.txt under 
`apps/hexagon_api/build`. Not the best solution, but we need to make sure 
everything is copied to `build/hexagon_rpc`.
   

##########
File path: apps/hexagon_api/CMakeLists.txt
##########
@@ -0,0 +1,83 @@
+cmake_minimum_required(VERSION 3.2)
+
+project(hexagon_api)
+
+include(ExternalProject)
+
+# Required variables:
+#   ANDROID_ABI
+#   ANDROID_PLATFORM
+#   USE_ANDROID_TOOLCHAIN (Android toolchain .cmake file)
+#   USE_HEXAGON_ARCH
+#   USE_HEXAGON_SDK
+#   USE_HEXAGON_TOOLCHAIN (Path to Hexagon toolchain ending with "Tools")
+
+set(TVM_SOURCE_DIR "${CMAKE_SOURCE_DIR}/../..")
+set(HEXAGON_API_BINARY_DIR "${CMAKE_BINARY_DIR}/hexagon_rpc")
+

Review comment:
       Need to create the directory. maybe add `file(MAKE_DIRECTORY 
${HEXAGON_API_BINARY_DIR})`

##########
File path: apps/hexagon_api/README.md
##########
@@ -0,0 +1,54 @@
+<!--- Licensed to the Apache Software Foundation (ASF) under one -->
+<!--- or more contributor license agreements.  See the NOTICE file -->
+<!--- distributed with this work for additional information -->
+<!--- regarding copyright ownership.  The ASF licenses this file -->
+<!--- to you under the Apache License, Version 2.0 (the -->
+<!--- "License"); you may not use this file except in compliance -->
+<!--- with the License.  You may obtain a copy of the License at -->
+
+<!---   http://www.apache.org/licenses/LICENSE-2.0 -->
+
+<!--- Unless required by applicable law or agreed to in writing, -->
+<!--- software distributed under the License is distributed on an -->
+<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
+<!--- KIND, either express or implied.  See the License for the -->
+<!--- specific language governing permissions and limitations -->
+<!--- under the License. -->
+
+# Hexagon API app
+
+This is a meta-app that build the necessary binaries for use with
+the `HexagonLauncher` utility from `tvm.contrib.hexagon`.
+
+It will build the TVM runtime for Android, the RPC server application
+for Android, and the RPC library for Hexagon with the TVM runtime for
+Hexagon built into it.
+
+## Configuration
+
+There is a set of configuration variables that are required for cmake:
+- `ANDROID_ABI`: Set this to `arm64-v8a`.
+- `ANDROID_PLATFORM`: This can be `android-28`.
+- `USE_ANDROID_TOOLCHAIN`: The path to the Android toolchain file, i.e.
+`android.toolchain.cmake`. This file is a part of the Android NDK.
+- `USE_HEXAGON_ARCH`: The version string of the Hexagon architecture
+to use, i.e. vNN. The typical setting would be `v68` or later.
+- `USE_HEXAGON_SDK`: The path to the Hexagon SDK. Set this path in such
+a way that `${USE_HEXAGON_SDK}/setup_sdk_env.source` exists.
+- `USE_HEXAGON_TOOLCHAIN`: Path to Hexagon toolchain. It can be the
+Hexagon toolchain included in the SDK, for example
+`${USE_HEXAGON_TOOLCHAIN}/tools/HEXAGON_Tools/x.y.z/Tools`.  The `x.y.z`
+in the path is the toolchain version number, which is specific to the
+version of the SDK.
+
+## Build
+
+The build will create a subdirectory `hexagon_rpc` with the following
+binaries
+- `tvm_runtime.so`: TVM runtime for Android (shared library).
+- `tvm_rpc_android`: RPC server for Android.
+- `libhexagon_rpc_skel.so`: RPC library for Hexagon.
+- `libtvm_runtime.a`: TVM runtime for Hexagon (static library).
+
+The RPC library for Hexagon contains the TVM runtime, so the static
+TVM runtime for Hexagon is not strictly necessary.

Review comment:
       I suggest to add an instruction like this to make sure we keeps the 
relative directory to output of binary files.
   
   ```
   ## Instruction
   
   cd apps/hexagon_api
   mkdir build
   cd build
   cmake -DConfig1 -DConfig2 ..
   ```
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to