返回 CodeWhale
ohos-env.sh
根目录 / scripts / ohos-env.sh
1 #!/usr/bin/env sh
2
3 if [ -z "${OHOS_NATIVE_SDK:-}" ]; then
4 echo "error: set OHOS_NATIVE_SDK to the OpenHarmony native SDK directory." >&2
5 return 1 2>/dev/null || exit 1
6 fi
7
8 if [ ! -d "$OHOS_NATIVE_SDK" ]; then
9 echo "error: OHOS_NATIVE_SDK does not exist: $OHOS_NATIVE_SDK" >&2
10 return 1 2>/dev/null || exit 1
11 fi
12
13 sdk=$(cd "$OHOS_NATIVE_SDK" && pwd)
14 clang=$sdk/llvm/bin/clang
15 clangxx=$sdk/llvm/bin/clang++
16 ar=$sdk/llvm/bin/llvm-ar
17 sysroot=$sdk/sysroot
18 cmake_toolchain=$sdk/build/cmake/ohos.toolchain.cmake
19
20 for file in "$clang" "$clangxx" "$ar" "$cmake_toolchain"; do
21 if [ ! -f "$file" ]; then
22 echo "error: required OpenHarmony SDK file is missing: $file" >&2
23 return 1 2>/dev/null || exit 1
24 fi
25 done
26
27 if [ ! -d "$sysroot" ]; then
28 echo "error: required OpenHarmony SDK sysroot is missing: $sysroot" >&2
29 return 1 2>/dev/null || exit 1
30 fi
31
32 libclang_path=
33 for directory in "$sdk/llvm/lib" "$sdk/llvm/lib64" "$sdk/llvm/bin"; do
34 if [ -f "$directory/libclang.so" ] || [ -f "$directory/libclang.dylib" ]; then
35 libclang_path=$directory
36 break
37 fi
38 done
39
40 if [ -z "$libclang_path" ]; then
41 echo "error: required OpenHarmony SDK libclang shared library is missing under: $sdk/llvm" >&2
42 return 1 2>/dev/null || exit 1
43 fi
44
45 export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_OHOS_LINKER=$clang
46 export AR_aarch64_unknown_linux_ohos=$ar
47 export CC_aarch64_unknown_linux_ohos=$clang
48 export CXX_aarch64_unknown_linux_ohos=$clangxx
49 export CC_SHELL_ESCAPED_FLAGS=1
50 export CFLAGS_aarch64_unknown_linux_ohos="-target aarch64-linux-ohos --sysroot=\"$sysroot\" -D__MUSL__"
51 export CXXFLAGS_aarch64_unknown_linux_ohos="-target aarch64-linux-ohos --sysroot=\"$sysroot\" -D__MUSL__"
52 export CMAKE_TOOLCHAIN_FILE_aarch64_unknown_linux_ohos=$cmake_toolchain
53 export LIBCLANG_PATH=$libclang_path
54 export BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_ohos="-target aarch64-linux-ohos --sysroot=\"$sysroot\" -D__MUSL__"
55
56 sep=$(printf '\037')
57 export CARGO_ENCODED_RUSTFLAGS="-Clink-arg=-target${sep}-Clink-arg=aarch64-linux-ohos${sep}-Clink-arg=--sysroot=$sysroot${sep}-Clink-arg=-D__MUSL__"
58
59 echo "Configured OpenHarmony Cargo environment for AARCH64_UNKNOWN_LINUX_OHOS from $sdk"
60
60 lines BASH