"git@developer.sourcefind.cn:chenpangpang/vllm-omni-das.git" did not exist on "23cdd9a4d16aa583a79d0af59e6f4f5b46f1aae1"
ubuntu_cross_build_aarch64.sh 2.48 KB
Newer Older
limm's avatar
limm committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash
# set -ex
# get appropriate proc number: max(1, nproc-3)
good_nproc() {
  num=`nproc`
  num=`expr $num - 3`
  if [ $num -lt 1 ];then
    return 1
  fi
  return ${num}
}

install_tools() {
  sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  aarch64-linux-gnu-g++ --version
  aarch64-linux-gnu-gcc --version
  aarch64-linux-gnu-ld --version

  sudo apt install wget git git-lfs

  python3 -m pip install cmake==3.22.0

  echo 'export PATH=~/.local/bin:${PATH}' >> ~/mmdeploy.env
  export PATH=~/.local/bin:${PATH}
}

build_ocv() {
  if [ ! -e "opencv" ];then
    git clone https://github.com/opencv/opencv --depth=1 --branch=4.6.0 --recursive
  fi
  if [ ! -e "opencv/platforms/linux/cross_build_aarch64" ];then
    mkdir opencv/platforms/linux/cross_build_aarch64
  fi
  cd opencv/platforms/linux/cross_build_aarch64
  rm -rf CMakeCache.txt
  cmake ../../.. -DBUILD_TIFF=ON -DCMAKE_INSTALL_PREFIX=/tmp/ocv-aarch64 -DCMAKE_TOOLCHAIN_FILE=../aarch64-gnu.toolchain.cmake
  # good_nproc
  jobs=`nproc`
  make -j${jobs}
  make install
  cd -
}

build_ncnn() {
  if [ ! -e "ncnn" ];then
    git clone https://github.com/tencent/ncnn --branch 20221128 --depth=1
  fi
  if [ ! -e "ncnn/build_aarch64" ];then
    mkdir -p ncnn/build_aarch64
  fi
  cd ncnn/build_aarch64
  rm -rf CMakeCache.txt
  cmake .. \
    -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake \
    -DCMAKE_INSTALL_PREFIX=/tmp/ncnn-aarch64
  # good_nproc
  jobs=`nproc`
  make -j${jobs}
  make install
  cd -
}

build_mmdeploy() {
  git submodule init
  git submodule update

  if [ ! -e "build_aarch64" ];then
    mkdir build_aarch64
  fi
  cd build_aarch64

  rm -rf CMakeCache.txt
  cmake .. \
    -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/aarch64-linux-gnu.cmake \
    -DMMDEPLOY_TARGET_DEVICES="cpu" \
    -DMMDEPLOY_TARGET_BACKENDS="ncnn" \
    -Dncnn_DIR=/tmp/ncnn-aarch64/lib/cmake/ncnn \
    -DOpenCV_DIR=/tmp/ocv-aarch64/lib/cmake/opencv4 \
    -DMMDEPLOY_BUILD_EXAMPLES=ON \
    -DMMDEPLOY_BUILD_SDK=ON

  # good_nproc
  jobs=`nproc`
  make -j${jobs}
  make install

  ls -lah install/bin/*
}

print_success() {
  echo "----------------------------------------------------------------------"
  echo "Cross build finished, PLS copy bin/model/test_data to the device.. QVQ"
  echo "----------------------------------------------------------------------"
}

if [ ! -e "../mmdeploy-dep" ];then
  mkdir ../mmdeploy-dep
fi
cd ../mmdeploy-dep

install_tools
build_ocv
build_ncnn

cd ../mmdeploy
build_mmdeploy
print_success