Skip to content

Commit 98d431e

Browse files
committed
first commit
0 parents  commit 98d431e

20 files changed

+1717
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.DS_Store
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
./flutter/tools/gn \
2+
--target-sysroot /src/sysroot \
3+
--target-toolchain /src/cross_armhf_clang_11.0.0-rc2 \
4+
--target-triple arm-linux-gnueabihf \
5+
--linux-cpu arm \
6+
--runtime-mode debug \
7+
--embedder-for-target \
8+
--no-lto \
9+
--target-os linux \
10+
--arm-float-abi hard

flutter-rpi-v2/install-cross-llvm.sh

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Home dir - /root
2+
LLVM_SRC="/src/llvm-project-llvmorg-11.0.0-rc2/"
3+
BINUTILS_SRC="/src/binutils-2.35/"
4+
LLVM_SRC_BUILD="/root/llvm_build"
5+
LLVM_LIBCXXABI_BUILD="/root/llvm_libcxxabi_build"
6+
LLVM_LIBCXX_BUILD="/root/llvm_libcxx_build"
7+
8+
INSTALL_PATH="/usr/local/cross_armhf_clang_11.0.0-rc2"
9+
10+
rm -rf $LLVM_SRC_BUILD \
11+
&& rm -rf $LLVM_LIBCXX_BUILD \
12+
&& rm -rf $LLVM_LIBCXXABI_BUILD \
13+
&& mkdir $LLVM_SRC_BUILD && cd $LLVM_SRC_BUILD && cmake -DLLVM_ENABLE_PROJECTS=clang -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_DOCS=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_CROSSCOMPILING=True -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM $LLVM_SRC/llvm \
14+
&& ninja \
15+
&& ninja install \
16+
&& cp -R $BINUTILS_SRC /root/ && cd /root/binutils-2.35/ \
17+
&& ./configure --prefix=$INSTALL_PATH --enable-gold --enable-ld --target=arm-linux-gnueabihf \
18+
&& make \
19+
&& make install \
20+
&& mkdir $LLVM_LIBCXXABI_BUILD && cd $LLVM_LIBCXXABI_BUILD \
21+
&& cmake -G Ninja \
22+
-DCMAKE_INSTALL_PREFIX=$INSTALL_PATH \
23+
-DCMAKE_C_COMPILER=$INSTALL_PATH/bin/clang \
24+
-DCMAKE_CXX_COMPILER=$INSTALL_PATH/bin/clang++ \
25+
-DCMAKE_CROSSCOMPILING=True \
26+
-DLIBCXX_ENABLE_SHARED=FALSE \
27+
-DCMAKE_BUILD_TYPE=Release \
28+
-DCMAKE_SYSTEM_NAME=Linux \
29+
-DCMAKE_SYSTEM_PROCESSOR=ARM \
30+
-DLLVM_TARGETS_TO_BUILD=ARM \
31+
-DLIBCXXABI_ENABLE_EXCEPTIONS=False \
32+
$LLVM_SRC/libcxxabi \
33+
&& ninja \
34+
&& ninja install \
35+
&& mkdir $LLVM_LIBCXX_BUILD && cd $LLVM_LIBCXX_BUILD \
36+
&& cmake -G Ninja \
37+
-DCMAKE_INSTALL_PREFIX=$INSTALL_PATH \
38+
-DCMAKE_C_COMPILER=$INSTALL_PATH/bin/clang \
39+
-DCMAKE_CXX_COMPILER=$INSTALL_PATH/bin/clang++ \
40+
-DCMAKE_CROSSCOMPILING=True \
41+
-DLIBCXX_ENABLE_SHARED=False \
42+
-DCMAKE_BUILD_TYPE=Release \
43+
-DCMAKE_SYSTEM_NAME=Linux \
44+
-DCMAKE_SYSTEM_PROCESSOR=ARM \
45+
-DLLVM_TARGETS_TO_BUILD=ARM \
46+
-DLIBCXX_ENABLE_EXCEPTIONS=False \
47+
-DLIBCXX_ENABLE_RTTI=False \
48+
-DLIBCXX_CXX_ABI=libcxxabi \
49+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$LLVM_SRC/libcxxabi/include \
50+
-DLIBCXX_CXX_ABI_LIBRARY_PATH=$INSTALL_PATH/lib \
51+
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=True \
52+
$LLVM_SRC/libcxx \
53+
&& ninja \
54+
&& ninja install
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
#!/usr/bin/env bash
2+
3+
# HOW TO START:
4+
# TMPDIR=/PATH_TO_TMP_DIR buildah unshare ./podman-rpi-flutter-engine.sh
5+
6+
set -e
7+
8+
container=$(buildah from ubuntu:bionic)
9+
10+
buildah run ${container} sh <<EOM
11+
export DEBIAN_FRONTEND=noninteractive \
12+
&& export TZ=Asia/Yekaterinburg \
13+
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
14+
&& echo $TZ > /etc/timezone \
15+
&& export TERM=dumb \
16+
&& apt-get update \
17+
&& apt-get install -yq --no-install-recommends \
18+
lsb-core lsb-release sudo nano vim wget \
19+
dialog qemu-user-static \
20+
bison cdbs curl devscripts \
21+
dpkg-dev elfutils fakeroot \
22+
flex g++ git-core git-svn \
23+
gperf libasound2 libasound2-dev libatk1.0-0 \
24+
libbrlapi-dev libbrlapi0.6 libbz2-dev libc6 \
25+
libcairo2 libcairo2-dev libcap-dev libcap2 \
26+
libcups2 libcups2-dev libcurl4-gnutls-dev \
27+
libdrm-dev libelf-dev libexif-dev libexif12 \
28+
libexpat1 libfontconfig1 libfreetype6 libgbm-dev \
29+
libgconf2-dev libgl1-mesa-dev libgles2-mesa-dev \
30+
libglib2.0-0 libglib2.0-dev libglu1-mesa-dev \
31+
libgnome-keyring-dev libgnome-keyring0 libgtk2.0-0 \
32+
libgtk2.0-dev libjpeg-dev libkrb5-dev libnspr4 \
33+
libnspr4-dev libnss3 libnss3-dev libpam0g libpam0g-dev \
34+
libpango1.0-0 libpci-dev libpci3 libpcre3 libpixman-1-0 \
35+
libpng16-16 libpulse-dev libsctp-dev libspeechd-dev \
36+
libspeechd2 libsqlite3-0 libsqlite3-dev libssl-dev \
37+
libstdc++6 libudev-dev libudev1 libwww-perl libx11-6 \
38+
libxau6 libxcb1 libxcomposite1 libxcursor1 libxdamage1 \
39+
libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxrandr2 \
40+
libxrender1 libxslt1-dev libxss-dev libxt-dev libxtst-dev \
41+
libxtst6 mesa-common-dev patch perl pkg-config python \
42+
python-cherrypy3 python-crypto python-dev python-numpy \
43+
python-opencv python-openssl python-psutil python-yaml \
44+
rpm ruby subversion wdiff zip zlib1g \
45+
build-essential cmake git python3-dev libncurses5-dev libxml2-dev \
46+
libedit-dev swig doxygen graphviz xz-utils ninja-build ssh \
47+
openjdk-8-jre openjdk-8-jdk \
48+
libgtk-3-dev \
49+
&& sudo update-java-alternatives -s java-1.8.0-openjdk-amd64 \
50+
&& apt-get install -yq --no-install-recommends ant \
51+
&& mkdir "/src"
52+
EOM
53+
54+
mntPoint=$(buildah mount ${container})
55+
echo "mounted container"
56+
cp -R $PWD/src/engine ${mntPoint}/src/
57+
cp -R $PWD/src/sysroot ${mntPoint}/src/
58+
cp -R $PWD/src/cross_armhf_clang_11.0.0-rc2 ${mntPoint}/src/
59+
cp -R $PWD/compile-flutter-engine.sh ${mntPoint}/src/engine/src
60+
61+
echo "compile engine"
62+
buildah run ${container} sh <<EOM
63+
set -eux; \
64+
cd /src/engine/src/build \
65+
&& sudo ./install-build-deps-android.sh --no-arm \
66+
&& cd /src/engine/src/flutter/build \
67+
&& sudo ./install-build-deps-linux-desktop.sh \
68+
&& export PKG_CONFIG_PATH=/src/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig/:/src/sysroot/usr/share/pkgconfig/ \
69+
&& cd /src/engine/src \
70+
&& ./compile-flutter-engine.sh \
71+
&& cd out/ \
72+
&& find . -mindepth 1 -maxdepth 1 -type d | xargs -n 1 sh -c 'ninja -C linux_debug_arm || exit 255' \
73+
&& cd linux_debug_arm/ \
74+
&& ls -la \
75+
&& cp flutter_embedder.h libflutter_engine.so icudtl.dat $PWD/compile-flutter-engine.sh
76+
EOM
77+
78+
cp ${mntPoint}/src/engine/src/out/linux_debug_arm/flutter_embedder.h $PWD/src
79+
cp ${mntPoint}/src/engine/src/out/linux_debug_arm/libflutter_engine.so $PWD/src
80+
cp ${mntPoint}/src/engine/src/out/linux_debug_arm/icudtl.dat $PWD/src
81+
buildah unmount ${container}
82+
83+
buildah rm ${container}
84+
# && ./install-build-deps.sh --no-arm \
85+
# - packages installed above or need to automatic NO for question about install debug symbols
86+
87+
# buildah commit ${container} flutter-ubuntu-dev
88+
89+
#
90+
#podman run --rm --mount type=bind,src=/$PWD/src,target=/src localhost/flutter-ubuntu-dev <<EOM
91+
# export PKG_CONFIG_PATH=/src/sysroot/usr/lib/arm-linux-gnueabihf/pkgconfig/:/src/sysroot/usr/share/pkgconfig/ \
92+
# && cd /src/engine/src \
93+
# && ./compile-flutter-engine.sh \
94+
# && cd out/ \
95+
# && find . -mindepth 1 -maxdepth 1 -type d | xargs -n 1 sh -c 'ninja -C $0 || exit 255' \
96+
# && cp flutter_embedder.h libflutter_engine.so icudtl.dat /src/
97+
#EOM

flutter-rpi-v2/podman-rpi-llvm.sh

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env bash
2+
3+
# HOW TO START:
4+
# buildah unshare ./podman-rpi-llvm.sh
5+
#
6+
# https://solarianprogrammer.com/2019/05/04/clang-cross-compiler-for-raspberry-pi/
7+
8+
set -e
9+
10+
wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.gz
11+
tar -zxf binutils-2.35.tar.gz
12+
rm binutils-2.35.tar.gz
13+
mv binutils-2.35 $PWD/src/
14+
15+
wget https://github.com/llvm/llvm-project/archive/llvmorg-11.0.0-rc2.tar.gz
16+
tar -zxf llvmorg-11.0.0-rc2.tar.gz
17+
rm llvmorg-11.0.0-rc2.tar.gz
18+
mv llvm-project-llvmorg-11.0.0-rc2 $PWD/src/
19+
20+
container=$(buildah from debian:stretch-slim)
21+
buildah run ${container} sh <<EOM
22+
export DEBIAN_FRONTEND=noninteractive \
23+
&& export TZ=Asia/Yekaterinburg \
24+
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
25+
&& echo $TZ > /etc/timezone \
26+
&& export TERM=dumb \
27+
&& apt-get update \
28+
&& apt-get install -yq --no-install-recommends \
29+
dialog qemu-user-static \
30+
flex bison texinfo \
31+
build-essential cmake git python3-dev libncurses5-dev libxml2-dev \
32+
vim libedit-dev swig doxygen graphviz xz-utils ninja-build ssh \
33+
&& dpkg --add-architecture armhf \
34+
&& apt-get update \
35+
&& apt-get install -yq --no-install-recommends crossbuild-essential-armhf libpython3-dev:armhf \
36+
libncurses5-dev:armhf libxml2-dev:armhf libedit-dev:armhf \
37+
&& rm -rf /var/lib/apt/lists/* \
38+
&& mkdir "/src"
39+
EOM
40+
41+
mntPoint=$(buildah mount ${container})
42+
echo "container mounted"
43+
cp -R $PWD/src/binutils-2.35 ${mntPoint}/src/
44+
cp -R $PWD/src/llvm-project-llvmorg-11.0.0-rc2 ${mntPoint}/src/
45+
cp $PWD/install-cross-llvm.sh ${mntPoint}/root
46+
47+
echo "start compilation"
48+
buildah run ${container} sh <<EOM
49+
set -eux; \
50+
cd /root && ./install-cross-llvm.sh \
51+
&& cp /src/llvm-project-llvmorg-11.0.0-rc2/libcxxabi/include/cxxabi.h /usr/local/cross_armhf_clang_11.0.0-rc2/include/c++/v1/ \
52+
&& cp /src/llvm-project-llvmorg-11.0.0-rc2/libcxxabi/include/__cxxabi_config.h /usr/local/cross_armhf_clang_11.0.0-rc2/include/c++/v1/
53+
EOM
54+
55+
cp -R ${mntPoint}/usr/local/cross_armhf_clang_11.0.0-rc2 $PWD/src
56+
buildah unmount ${container}
57+
58+
rm -rf .$PWD/src/binutils-2.35
59+
rm -rf .$PWD/src/llvm-project-llvmorg-11.0.0-rc2
60+
61+
buildah rm ${container}

flutter-rpi-v2/rpi-sysroot-config.txt

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# https://github.com/ardera/flutter-pi/tree/master
2+
# I use raspberry Raspberry Pi OS (32-bit) with desktop
3+
4+
wget https://downloads.raspberrypi.org/raspios_armhf_latest
5+
and install on rpi
6+
7+
>>>>>>>>>>>>>>>>>>>>>>>>
8+
ON RASPBERRY PI 4
9+
raspi-config -> Boot Options -> Desktop / CLI
10+
- select Console (Autologin)
11+
12+
raspi-config -> Advanced Options -> GL Driver
13+
- select GL Fake-KMS
14+
15+
raspi-config -> Advanced Options -> Memory Split
16+
- set 16MB
17+
18+
sudo usermod -a -G render pi
19+
20+
sudo apt install libgl1-mesa-dev libgles2-mesa-dev libegl-mesa0 libdrm-dev libgbm-dev
21+
22+
sudo apt install x11proto-dev
23+
24+
sudo apt install ttf-mscorefonts-installer fontconfig
25+
sudo fc-cache
26+
27+
sudo apt-get install gpiod libgpiod-dev libsystemd-dev libinput-dev libudev-dev
28+
29+
>>>>>>>>>>>>>>>>>>>>>>>>
30+
ON HOST
31+
rsync -a --info=progress2 pi@RASPBERRY:/usr
32+
rsync -a --info=progress2 pi@RASPBERRY:/lib $PWD/src/sysroot/
33+
rsync -a --info=progress2 pi@RASPBERRY:/usr/include $PWD/src/sysroot/usr/
34+
rsync -a --info=progress2 pi@RASPBERRY:/usr/lib $PWD/src/sysroot/usr/
35+
rsync -a --info=progress2 pi@RASPBERRY:/usr/share $PWD/src/sysroot/usr/
36+
rsync -a --info=progress2 pi@RASPBERRY:/opt/vc $PWD/src/sysroot/opt/
37+
38+
wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py
39+
sudo chmod +x sysroot-relativelinks.py
40+
./sysroot-relativelinks.py src/sysroot

flutter-rpi-v3/install-cross-llvm.sh

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Home dir - /root
2+
LLVM_SRC="/sdk/llvm-project-llvmorg-11.0.0-rc2/"
3+
BINUTILS_SRC="/sdk/binutils-2.35/"
4+
LLVM_SRC_BUILD="/root/llvm_build"
5+
LLVM_LIBCXXABI_BUILD="/root/llvm_libcxxabi_build"
6+
LLVM_LIBCXX_BUILD="/root/llvm_libcxx_build"
7+
8+
INSTALL_PATH="/usr/local/cross_armhf_clang_11.0.0-rc2"
9+
10+
rm -rf $LLVM_SRC_BUILD \
11+
&& rm -rf $LLVM_LIBCXX_BUILD \
12+
&& rm -rf $LLVM_LIBCXXABI_BUILD \
13+
&& mkdir $LLVM_SRC_BUILD && cd $LLVM_SRC_BUILD && cmake -DLLVM_ENABLE_PROJECTS=clang -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_DOCS=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_CROSSCOMPILING=True -DLLVM_DEFAULT_TARGET_TRIPLE=arm-linux-gnueabihf -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=ARM $LLVM_SRC/llvm \
14+
&& ninja \
15+
&& ninja install \
16+
&& cp -R $BINUTILS_SRC /root/ && cd /root/binutils-2.35/ \
17+
&& ./configure --prefix=$INSTALL_PATH --enable-gold --enable-ld --target=arm-linux-gnueabihf \
18+
&& make \
19+
&& make install \
20+
&& mkdir $LLVM_LIBCXXABI_BUILD && cd $LLVM_LIBCXXABI_BUILD \
21+
&& cmake -G Ninja \
22+
-DCMAKE_INSTALL_PREFIX=$INSTALL_PATH \
23+
-DCMAKE_C_COMPILER=$INSTALL_PATH/bin/clang \
24+
-DCMAKE_CXX_COMPILER=$INSTALL_PATH/bin/clang++ \
25+
-DCMAKE_CROSSCOMPILING=True \
26+
-DLIBCXX_ENABLE_SHARED=FALSE \
27+
-DCMAKE_BUILD_TYPE=Release \
28+
-DCMAKE_SYSTEM_NAME=Linux \
29+
-DCMAKE_SYSTEM_PROCESSOR=ARM \
30+
-DLLVM_TARGETS_TO_BUILD=ARM \
31+
-DLIBCXXABI_ENABLE_EXCEPTIONS=False \
32+
$LLVM_SRC/libcxxabi \
33+
&& ninja \
34+
&& ninja install \
35+
&& mkdir $LLVM_LIBCXX_BUILD && cd $LLVM_LIBCXX_BUILD \
36+
&& cmake -G Ninja \
37+
-DCMAKE_INSTALL_PREFIX=$INSTALL_PATH \
38+
-DCMAKE_C_COMPILER=$INSTALL_PATH/bin/clang \
39+
-DCMAKE_CXX_COMPILER=$INSTALL_PATH/bin/clang++ \
40+
-DCMAKE_CROSSCOMPILING=True \
41+
-DLIBCXX_ENABLE_SHARED=False \
42+
-DCMAKE_BUILD_TYPE=Release \
43+
-DCMAKE_SYSTEM_NAME=Linux \
44+
-DCMAKE_SYSTEM_PROCESSOR=ARM \
45+
-DLLVM_TARGETS_TO_BUILD=ARM \
46+
-DLIBCXX_ENABLE_EXCEPTIONS=False \
47+
-DLIBCXX_ENABLE_RTTI=False \
48+
-DLIBCXX_CXX_ABI=libcxxabi \
49+
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=$LLVM_SRC/libcxxabi/include \
50+
-DLIBCXX_CXX_ABI_LIBRARY_PATH=$INSTALL_PATH/lib \
51+
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=True \
52+
$LLVM_SRC/libcxx \
53+
&& ninja \
54+
&& ninja install

0 commit comments

Comments
 (0)