xref: /aosp_15_r20/external/pytorch/scripts/build_tizen.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker#!/usr/bin/env bash
2*da0073e9SAndroid Build Coastguard Worker##############################################################################
3*da0073e9SAndroid Build Coastguard Worker#  Example command to build the Tizen target (RPi3).
4*da0073e9SAndroid Build Coastguard Worker##############################################################################
5*da0073e9SAndroid Build Coastguard Worker#
6*da0073e9SAndroid Build Coastguard Worker# This script shows how one can build a Caffe2 binary for a Tizen device (RPi3).
7*da0073e9SAndroid Build Coastguard Worker# The build is essentially much similar to a host build, with one additional change
8*da0073e9SAndroid Build Coastguard Worker# which is to specify -mfpu=neon for optimized speed.
9*da0073e9SAndroid Build Coastguard Worker
10*da0073e9SAndroid Build Coastguard Workersetup_environment(){
11*da0073e9SAndroid Build Coastguard Worker# The rootfs image for a Tizen target (RPi3)is located at the below webpage:
12*da0073e9SAndroid Build Coastguard Worker# http://download.tizen.org/releases/milestone/tizen/4.0.m1/tizen-unified_20170529.1/images/
13*da0073e9SAndroid Build Coastguard Worker# If you do not have a Tizen device, Please, run qemu-arm-static and chroot command.
14*da0073e9SAndroid Build Coastguard Worker# $ sudo chroot ~/tizen-rootfs qemu-arm-static /usr/bin/bash
15*da0073e9SAndroid Build Coastguard Worker
16*da0073e9SAndroid Build Coastguard WorkerCAFFE2_ROOT="$( cd "$(dirname -- "$0")"/.. ; pwd -P)"
17*da0073e9SAndroid Build Coastguard Workerecho "Caffe2 codebase root is: $CAFFE2_ROOT"
18*da0073e9SAndroid Build Coastguard WorkerBUILD_ROOT=${BUILD_ROOT:-"$CAFFE2_ROOT/build"}
19*da0073e9SAndroid Build Coastguard Workermkdir -p $BUILD_ROOT
20*da0073e9SAndroid Build Coastguard Workerecho "Build Caffe2 Tizen into: $BUILD_ROOT"
21*da0073e9SAndroid Build Coastguard Worker}
22*da0073e9SAndroid Build Coastguard Worker
23*da0073e9SAndroid Build Coastguard Workercaffe2_lite_dep_packages(){
24*da0073e9SAndroid Build Coastguard Worker# Obtain necessary dependencies
25*da0073e9SAndroid Build Coastguard Worker# You can set-up a rpm repository with zypper, yum, and dnf because Tizen
26*da0073e9SAndroid Build Coastguard Worker# software platform officially support rpm format such as Fedora, OpenSUSE.
27*da0073e9SAndroid Build Coastguard Worker# The official Tizen repository is as following:
28*da0073e9SAndroid Build Coastguard Worker# http://download.tizen.org/releases/milestone/tizen/4.0.m1/
29*da0073e9SAndroid Build Coastguard Workerecho "Installing dependencies."
30*da0073e9SAndroid Build Coastguard Workersudo zypper install \
31*da0073e9SAndroid Build Coastguard Worker  make \
32*da0073e9SAndroid Build Coastguard Worker  strace \
33*da0073e9SAndroid Build Coastguard Worker  cmake \
34*da0073e9SAndroid Build Coastguard Worker  gcc* \
35*da0073e9SAndroid Build Coastguard Worker  binutils \
36*da0073e9SAndroid Build Coastguard Worker  glibc* \
37*da0073e9SAndroid Build Coastguard Worker  cpp \
38*da0073e9SAndroid Build Coastguard Worker  protobuf-devel \
39*da0073e9SAndroid Build Coastguard Worker  libstdc++*
40*da0073e9SAndroid Build Coastguard Worker}
41*da0073e9SAndroid Build Coastguard Worker
42*da0073e9SAndroid Build Coastguard Workercaffe2_lite_build(){
43*da0073e9SAndroid Build Coastguard Worker# Now, actually build the android target.
44*da0073e9SAndroid Build Coastguard Workerecho "Building caffe2"
45*da0073e9SAndroid Build Coastguard Workercd $BUILD_ROOT
46*da0073e9SAndroid Build Coastguard Worker
47*da0073e9SAndroid Build Coastguard Worker# Note: add more dependencies above if you need libraries such as leveldb, lmdb, etc.
48*da0073e9SAndroid Build Coastguard Worker# If you have to disable a specific package due to a package absence
49*da0073e9SAndroid Build Coastguard Worker# from https://git.tizen.org/cgit/, append -Dxxx_xxx=OFF option before executing cmake.
50*da0073e9SAndroid Build Coastguard Workercmake .. \
51*da0073e9SAndroid Build Coastguard Worker    -DCMAKE_VERBOSE_MAKEFILE=1 \
52*da0073e9SAndroid Build Coastguard Worker    -DUSE_GFLAGS=OFF  \
53*da0073e9SAndroid Build Coastguard Worker    -DUSE_GLOG=OFF -DUSE_NNPACK=OFF \
54*da0073e9SAndroid Build Coastguard Worker    -DRUN_HAVE_STD_REGEX=0 \
55*da0073e9SAndroid Build Coastguard Worker    -DRUN_HAVE_POSIX_REGEX=0 \
56*da0073e9SAndroid Build Coastguard Worker    -DHAVE_GNU_POSIX_REGEX=0 \
57*da0073e9SAndroid Build Coastguard Worker    -DUSE_MPI=OFF -DUSE_OPENMP=OFF \
58*da0073e9SAndroid Build Coastguard Worker    -DBUILD_PYTHON=OFF \
59*da0073e9SAndroid Build Coastguard Worker    -DUSE_GLOO=OFF \
60*da0073e9SAndroid Build Coastguard Worker    -DUSE_OPENCV=OFF \
61*da0073e9SAndroid Build Coastguard Worker    -DCAFFE2_CPU_FLAGS="-mfpu=neon -mfloat-abi=soft" \
62*da0073e9SAndroid Build Coastguard Worker    || exit 1
63*da0073e9SAndroid Build Coastguard Worker
64*da0073e9SAndroid Build Coastguard Workermake -j`nproc` || exit 1
65*da0073e9SAndroid Build Coastguard Worker}
66*da0073e9SAndroid Build Coastguard Worker
67*da0073e9SAndroid Build Coastguard Workercaffe2_full_dep_packages(){
68*da0073e9SAndroid Build Coastguard Worker# Obtain necessary dependencies
69*da0073e9SAndroid Build Coastguard Worker# You can set-up a rpm repository with zypper, yum, and dnf because Tizen
70*da0073e9SAndroid Build Coastguard Worker# software platform officially support rpm format such as Fedora, OpenSUSE.
71*da0073e9SAndroid Build Coastguard Worker# The official Tizen repository is as following:
72*da0073e9SAndroid Build Coastguard Worker# http://download.tizen.org/releases/milestone/tizen/4.0.m1/
73*da0073e9SAndroid Build Coastguard Workerecho "Installing dependencies."
74*da0073e9SAndroid Build Coastguard Workersudo zypper install \
75*da0073e9SAndroid Build Coastguard Worker  cmake \
76*da0073e9SAndroid Build Coastguard Worker  libgflags-dev \
77*da0073e9SAndroid Build Coastguard Worker  libgoogle-glog-dev \
78*da0073e9SAndroid Build Coastguard Worker  libprotobuf-dev \
79*da0073e9SAndroid Build Coastguard Worker  protobuf-compiler
80*da0073e9SAndroid Build Coastguard Worker
81*da0073e9SAndroid Build Coastguard Worker# Obtain optional dependencies that are usually useful to have.
82*da0073e9SAndroid Build Coastguard Workerecho "Installing optional dependencies."
83*da0073e9SAndroid Build Coastguard Workersudo zypper install \
84*da0073e9SAndroid Build Coastguard Worker  libpython-dev \
85*da0073e9SAndroid Build Coastguard Worker  python-numpy \
86*da0073e9SAndroid Build Coastguard Worker  python-pip \
87*da0073e9SAndroid Build Coastguard Worker  python-protobuf
88*da0073e9SAndroid Build Coastguard Worker
89*da0073e9SAndroid Build Coastguard Worker# Obtain python hypothesis, which Caffe2 uses for unit testing. Note that
90*da0073e9SAndroid Build Coastguard Worker# the one provided by zypper is quite old so we install it via pip
91*da0073e9SAndroid Build Coastguard Workersudo pip install hypothesis
92*da0073e9SAndroid Build Coastguard Worker}
93*da0073e9SAndroid Build Coastguard Worker
94*da0073e9SAndroid Build Coastguard Workercaffe2_full_build(){
95*da0073e9SAndroid Build Coastguard Worker# Now, actually build the android target.
96*da0073e9SAndroid Build Coastguard Workerecho "Building caffe2"
97*da0073e9SAndroid Build Coastguard Workercd $BUILD_ROOT
98*da0073e9SAndroid Build Coastguard Worker
99*da0073e9SAndroid Build Coastguard Worker# Note: add more dependencies above if you need libraries such as leveldb, lmdb, etc.
100*da0073e9SAndroid Build Coastguard Worker# If you have to disable a specific package due to a package absence
101*da0073e9SAndroid Build Coastguard Worker# from https://git.tizen.org/cgit/, append -Dxxx_xxx=OFF option before executing cmake.
102*da0073e9SAndroid Build Coastguard Workercmake "$CAFFE2_ROOT" \
103*da0073e9SAndroid Build Coastguard Worker    -DCMAKE_VERBOSE_MAKEFILE=1 \
104*da0073e9SAndroid Build Coastguard Worker    -DUSE_CUDA=OFF \
105*da0073e9SAndroid Build Coastguard Worker    -DUSE_ITT=OFF \
106*da0073e9SAndroid Build Coastguard Worker    -DUSE_OPENCV=OFF \
107*da0073e9SAndroid Build Coastguard Worker    -DCAFFE2_CPU_FLAGS="-mfpu=neon -mfloat-abi=soft" \
108*da0073e9SAndroid Build Coastguard Worker    || exit 1
109*da0073e9SAndroid Build Coastguard Worker
110*da0073e9SAndroid Build Coastguard Workermake -j`nproc` || exit 1
111*da0073e9SAndroid Build Coastguard Worker}
112*da0073e9SAndroid Build Coastguard Worker
113*da0073e9SAndroid Build Coastguard Worker#### Main
114*da0073e9SAndroid Build Coastguard Worker# Setup a build environment to compile Caffe2 deeplearning framework in Tizen platform.
115*da0073e9SAndroid Build Coastguard Workersetup_environment
116*da0073e9SAndroid Build Coastguard Worker# There are two build options to support 'full' version and 'lite' version (by default).
117*da0073e9SAndroid Build Coastguard Workercaffe2_lite_dep_packages
118*da0073e9SAndroid Build Coastguard Workercaffe2_lite_build
119