77 lines
2.3 KiB
Bash
Executable File
77 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
CROSS=arm-linux-gnueabihf
|
|
CFLAGS_CROSS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
|
|
CFLAGS_CROSS="-O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard"
|
|
# Debian armhf packages use these paths
|
|
ARM_INCLUDE="-I/usr/include/arm-linux-gnueabihf -I/usr/include"
|
|
ARM_LIBDIR="/usr/lib/arm-linux-gnueabihf"
|
|
SYSROOT=/home/user/Public/Projects/OpenWRT/flint1-armv7/src/mosh-sysroot
|
|
BUILDDIR=/tmp/mosh-arm-build
|
|
SRCDIR=/home/user/Public/Projects/OpenWRT/flint1-armv7/src/mosh
|
|
BINDIR=/home/user/Public/Projects/OpenWRT/flint1-armv7/binaries
|
|
|
|
mkdir -p "$SYSROOT" "$BUILDDIR" "$BINDIR"
|
|
|
|
echo "=== [1/3] Building protobuf host tools + ARM library ==="
|
|
PROTO_VER=3.21.12
|
|
cd "$BUILDDIR"
|
|
rm -rf protobuf-"${PROTO_VER}"
|
|
tar -xzf /tmp/protobuf-"${PROTO_VER}".tar.gz
|
|
cd protobuf-"${PROTO_VER}"
|
|
|
|
# Build host protoc
|
|
./configure --prefix=/tmp/host-protoc
|
|
make -j$(nproc)
|
|
make install
|
|
HOST_PROTOC=/tmp/host-protoc/bin/protoc
|
|
echo " host protoc: $($HOST_PROTOC --version)"
|
|
|
|
# Cross-compile protobuf library
|
|
make distclean
|
|
./configure \
|
|
--host=${CROSS} \
|
|
--prefix="$SYSROOT" \
|
|
--with-protoc="$HOST_PROTOC" \
|
|
CC=${CROSS}-gcc \
|
|
CXX=${CROSS}-g++ \
|
|
CFLAGS="-static ${CFLAGS_CROSS}" \
|
|
CXXFLAGS="-static ${CFLAGS_CROSS} -std=c++14" \
|
|
LDFLAGS="-static"
|
|
make -j$(nproc)
|
|
make install
|
|
echo " protobuf ARM OK: $SYSROOT/lib/libprotobuf.a"
|
|
|
|
echo "=== [2/3] Configuring mosh ==="
|
|
cd "$SRCDIR"
|
|
[ -f configure ] || ./autogen.sh
|
|
|
|
./configure \
|
|
--host=${CROSS} \
|
|
--prefix="$SYSROOT" \
|
|
CC=${CROSS}-gcc \
|
|
CXX=${CROSS}-g++ \
|
|
CFLAGS="-static ${CFLAGS_CROSS}" \
|
|
CXXFLAGS="-static ${CFLAGS_CROSS}" \
|
|
LDFLAGS="-static -L${SYSROOT}/lib -L${ARM_LIBDIR}" \
|
|
LIBS="-lz -lzstd -ldl" \
|
|
CPPFLAGS="-I${SYSROOT}/include ${ARM_INCLUDE}" \
|
|
PKG_CONFIG="pkg-config" \
|
|
PKG_CONFIG_PATH="${SYSROOT}/lib/pkgconfig:${ARM_LIBDIR}/pkgconfig" \
|
|
PKG_CONFIG_LIBDIR="${SYSROOT}/lib/pkgconfig:${ARM_LIBDIR}/pkgconfig"
|
|
|
|
echo "=== [3/3] Compiling mosh ==="
|
|
make -j$(nproc)
|
|
|
|
cp src/frontend/mosh-server "$BINDIR/mosh-server-static-armv7" 2>/dev/null || \
|
|
cp src/frontend/mosh-server "$BINDIR/mosh-server-static-armv7"
|
|
cp src/frontend/mosh-client "$BINDIR/mosh-client-static-armv7" 2>/dev/null || \
|
|
cp src/frontend/mosh-client "$BINDIR/mosh-client-static-armv7"
|
|
|
|
echo ""
|
|
echo "=== Build Complete ==="
|
|
file "$BINDIR/mosh-server-static-armv7"
|
|
file "$BINDIR/mosh-client-static-armv7"
|
|
ls -lh "$BINDIR/"
|