1#!/bin/bash 2# Copyright (c) Huawei Technologies Co., Ltd. 2020-2030. All rights reserved. 3set -e 4 5while getopts "o:i:l:t:p:h" arg 6do 7 case "${arg}" in 8 "o") 9 OUT_DIR=${OPTARG} 10 ;; 11 "i") 12 SOURCE_DIR=${OPTARG} 13 ;; 14 "l") 15 TOOL_DIR=${OPTARG} 16 ;; 17 "p") 18 PYTHON_DIR=${OPTARG} 19 ;; 20 "h") 21 echo "help" 22 ;; 23 ?) 24 echo "unkonw argument" 25 exit 1 26 ;; 27 esac 28done 29 30 31ndk_dir=$(ls ${SOURCE_DIR}/lib/|more |grep ohos |grep -v mipsel |grep -v riscv |awk '{print $NF}') 32 33for i in $ndk_dir 34do 35 find ${OUT_DIR}/lib/$i -name 'libc++.a' -type f -exec bash -c 'echo "INPUT(-lc++_static -lc++abi)" > $1' _ {} \; 36 find ${OUT_DIR}/lib/$i -name 'libc++.so' -type f -exec bash -c 'echo "INPUT(-lc++_shared)" > $1' _ {} \; 37done 38 39cp -rfp ${SOURCE_DIR}/lib ${OUT_DIR} 40cp -rfp ${SOURCE_DIR}/include ${OUT_DIR} 41 42if [ -n "${PYTHON_DIR+x}" ]; then 43 if [ -e "${OUT_DIR}/python3" ]; then 44 rm -rf ${OUT_DIR}/python3 45 fi 46 VERSION_NAME=$(ls -1 "${PYTHON_DIR}" | head -n 1) 47 cp -rfp ${PYTHON_DIR}/${VERSION_NAME} ${OUT_DIR}/python3 48 if [ -e "${OUT_DIR}/bin/libpython3.11.dll" ]; then 49 cp -rfp ${PYTHON_DIR}/3.11.4/bin/libpython3.11.dll ${OUT_DIR}/bin/libpython3.11.dll 50 fi 51fi 52 53function strip_dir() { 54 for file in `ls $1` 55 do 56 if [ -f $1"/"$file ] && [[ $(file -b $1"/"$file) =~ "shared object" ]] 57 then 58 echo $1"/"$file 59 ${TOOL_DIR}/llvm-strip $1"/"$file 60 elif [ -d $1"/"$file ] 61 then 62 strip_dir $1"/"$file 63 fi 64 done 65} 66function remove_unnecessary_file() { 67 file_list=("bin/llvm-ifs" "bin/llvm-ifs.exe" "lib/clang/current" "lib/arm-liteos-ohos" "lib/loongarch64-linux-ohos" "lib/mipsel-linux-ohos" "lib/riscv64-linux-ohos" "lib/clang/15.0.4/bin/loongarch64-linux-ohos" "lib/clang/15.0.4/lib/arm-liteos-ohos" "lib/clang/15.0.4/lib/i386-unknown-linux-gnu" "lib/clang/15.0.4/lib/loongarch64-linux-ohos" "lib/clang/15.0.4/lib/mipsel-linux-ohos" "lib/clang/15.0.4/lib/riscv64-linux-ohos" "lib/clang/15.0.4/lib/windows") 68 69 for i in "${file_list[@]}"; do 70 if [ -e "${OUT_DIR}/${i}" ]; then 71 rm -rf "${OUT_DIR}/${i}" 72 fi 73 done 74} 75remove_unnecessary_file 76strip_dir ${OUT_DIR}/lib 77