149 lines
5.6 KiB
Bash
149 lines
5.6 KiB
Bash
|
#!/bin/bash
|
||
|
#set -e
|
||
|
set -o pipefail
|
||
|
set -x
|
||
|
NMAP_COMMIT=
|
||
|
|
||
|
fetch(){
|
||
|
if [ ! -d "/build/musl" ];then
|
||
|
#git clone https://github.com/GregorR/musl-cross.git /build/musl
|
||
|
git clone https://github.com/takeshixx/musl-cross.git /build/musl
|
||
|
fi
|
||
|
if [ ! -d "/build/binutils-gdb" ];then
|
||
|
git clone https://github.com/bminor/binutils-gdb.git /build/binutils-gdb
|
||
|
fi
|
||
|
cd /build/binutils-gdb
|
||
|
git checkout binutils-2_30
|
||
|
cd -
|
||
|
}
|
||
|
|
||
|
build_musl_armhf() {
|
||
|
cd /build/musl
|
||
|
git clean -fdx
|
||
|
echo "ARCH=arm" >> config.sh
|
||
|
echo "GCC_BUILTIN_PREREQS=yes" >> config.sh
|
||
|
echo "TRIPLE=arm-linux-musleabihf" >> config.sh
|
||
|
echo "GCC_BOOTSTRAP_CONFFLAGS='--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16'" >> config.sh
|
||
|
echo "GCC_CONFFLAGS='--with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16'" >> config.sh
|
||
|
./build.sh
|
||
|
echo "[+] Finished building musl-cross armhf"
|
||
|
}
|
||
|
|
||
|
build_gdb_armhf() {
|
||
|
cd /build/binutils-gdb
|
||
|
git clean -fdx
|
||
|
make clean || true
|
||
|
|
||
|
cd /build/binutils-gdb/bfd
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/readline
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--disable-shared \
|
||
|
--enable-static
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/opcodes
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--disable-shared \
|
||
|
--enable-static
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/libiberty
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--disable-shared \
|
||
|
--enable-static
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/libdecnumber
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--disable-shared \
|
||
|
--enable-static
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/zlib
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_LINKER=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld .
|
||
|
make zlibstatic
|
||
|
|
||
|
cd /build/binutils-gdb/gdb
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
LDFLAGS='-static' \
|
||
|
./configure \
|
||
|
--enable-static=yes \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--disable-interprocess-agent
|
||
|
make -j4
|
||
|
|
||
|
cd /build/binutils-gdb/gdb/gdbserver/
|
||
|
CC='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-gcc -static -fPIC' \
|
||
|
CXX='/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -static -static-libstdc++ -fPIC' \
|
||
|
LD=/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-ld \
|
||
|
LDFLAGS='-static' \
|
||
|
./configure \
|
||
|
--host=x86_64-linux-gnu \
|
||
|
--target=arm-none-linux-gnueabi \
|
||
|
--enable-static=yes \
|
||
|
--disable-interprocess-agent
|
||
|
make -j4
|
||
|
|
||
|
/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-strip /build/binutils-gdb/gdb/gdb /build/binutils-gdb/gdb/gdbserver/gdbserver
|
||
|
}
|
||
|
|
||
|
build_armhf(){
|
||
|
OUT_DIR=/output/`uname | tr 'A-Z' 'a-z'`/armhf
|
||
|
mkdir -p $OUT_DIR
|
||
|
build_musl_armhf
|
||
|
build_gdb_armhf
|
||
|
GDB_VERSION=
|
||
|
GDBSERVER_VERSION=
|
||
|
if which qemu-arm >/dev/null;then
|
||
|
GDB_VERSION="-$(qemu-arm /build/binutils-gdb/gdb/gdb --version |head -n1 |awk '{print $4}')"
|
||
|
GDBSERVER_VERSION="-$(qemu-arm /build/binutils-gdb/gdb/gdbserver/gdbserver --version |head -n1 |awk '{print $4}')"
|
||
|
fi
|
||
|
cp /build/binutils-gdb/gdb/gdb "${OUT_DIR}/gdb-armhf${GDB_VERSION}"
|
||
|
cp /build/binutils-gdb/gdb/gdbserver/gdbserver "${OUT_DIR}/gdbserver-armhf${GDBSERVER_VERSION}"
|
||
|
echo "[+] Finished building armhf"
|
||
|
}
|
||
|
|
||
|
main() {
|
||
|
if [ ! -d "/output" ];then
|
||
|
echo "[-] /output does not exist, creating it"
|
||
|
mkdir /output
|
||
|
fi
|
||
|
fetch
|
||
|
build_armhf
|
||
|
}
|
||
|
|
||
|
main
|