mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-05-30 17:53:35 -07:00
ac33ebaf53
See #1016
93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Cross-compile wpa_supplicant, wpa_cli, and iw for ARMv7 (musl static).
|
|
# Output: tools/build-wpa-supplicant/out/{wpa_supplicant,wpa_cli,iw}
|
|
#
|
|
# Requires: arm-linux-musleabihf-gcc (brew install FiloSottile/musl-cross/musl-cross)
|
|
set -e
|
|
|
|
WPA_VERSION="2.11"
|
|
WPA_URL="https://w1.fi/releases/wpa_supplicant-${WPA_VERSION}.tar.gz"
|
|
LIBNL_VERSION="3.11.0"
|
|
LIBNL_URL="https://github.com/thom311/libnl/releases/download/libnl${LIBNL_VERSION//\./_}/libnl-${LIBNL_VERSION}.tar.gz"
|
|
IW_VERSION="6.9"
|
|
IW_URL="https://www.kernel.org/pub/software/network/iw/iw-${IW_VERSION}.tar.xz"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
OUT_DIR="$SCRIPT_DIR/../tools/build-wpa-supplicant/out"
|
|
BUILD_DIR="/tmp/wpa-supplicant-build-$$"
|
|
|
|
CC="${CC:-arm-linux-musleabihf-gcc}"
|
|
STRIP="${STRIP:-arm-linux-musleabihf-strip}"
|
|
HOST="${HOST:-arm-linux-musleabihf}"
|
|
|
|
if ! command -v "$CC" >/dev/null 2>&1; then
|
|
echo "Error: $CC not found. Install with: brew install FiloSottile/musl-cross/musl-cross"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$BUILD_DIR" "$OUT_DIR"
|
|
SYSROOT="$BUILD_DIR/sysroot"
|
|
mkdir -p "$SYSROOT"
|
|
|
|
echo "Building libnl ${LIBNL_VERSION}..."
|
|
curl -Lf "$LIBNL_URL" | tar xz -C "$BUILD_DIR"
|
|
cd "$BUILD_DIR/libnl-${LIBNL_VERSION}"
|
|
./configure \
|
|
--host="$HOST" \
|
|
CC="$CC" \
|
|
--prefix="$SYSROOT" \
|
|
--enable-static \
|
|
--disable-shared \
|
|
--disable-cli \
|
|
--disable-debug
|
|
make -j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
|
make install
|
|
|
|
echo "Building wpa_supplicant ${WPA_VERSION}..."
|
|
cd "$BUILD_DIR"
|
|
curl -Lf "$WPA_URL" | tar xz
|
|
cd "wpa_supplicant-${WPA_VERSION}/wpa_supplicant"
|
|
|
|
cat > .config <<'WPACONF'
|
|
CONFIG_DRIVER_NL80211=y
|
|
CONFIG_LIBNL32=y
|
|
CONFIG_CRYPTO=internal
|
|
CONFIG_TLS=internal
|
|
CONFIG_INTERNAL_LIBTOMMATH=y
|
|
CONFIG_INTERNAL_LIBTOMMATH_FAST=y
|
|
CONFIG_CTRL_IFACE=y
|
|
CONFIG_BACKEND=file
|
|
CONFIG_NO_CONFIG_WRITE=y
|
|
CONFIG_NO_RANDOM_POOL=y
|
|
CONFIG_GETRANDOM=y
|
|
WPACONF
|
|
|
|
NL_CFLAGS="-I${SYSROOT}/include/libnl3"
|
|
NL_LIBS="-L${SYSROOT}/lib -lnl-genl-3 -lnl-3 -lpthread -lm"
|
|
|
|
make CC="$CC" \
|
|
EXTRA_CFLAGS="$NL_CFLAGS" \
|
|
LDFLAGS="-static" \
|
|
LIBS="$NL_LIBS" \
|
|
-j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
|
|
|
echo "Stripping..."
|
|
$STRIP wpa_supplicant wpa_cli
|
|
cp wpa_supplicant wpa_cli "$OUT_DIR/"
|
|
|
|
echo "Building iw ${IW_VERSION}..."
|
|
cd "$BUILD_DIR"
|
|
curl -Lf "$IW_URL" | tar xJ
|
|
cd "iw-${IW_VERSION}"
|
|
PKG_CONFIG_LIBDIR="$SYSROOT/lib/pkgconfig" \
|
|
make CC="$CC" \
|
|
LDFLAGS="-static" \
|
|
-j"$(nproc 2>/dev/null || sysctl -n hw.ncpu)"
|
|
$STRIP iw
|
|
cp iw "$OUT_DIR/"
|
|
|
|
rm -rf "$BUILD_DIR"
|
|
|
|
echo "Done. Binaries in $OUT_DIR:"
|
|
ls -lh "$OUT_DIR"/{wpa_supplicant,wpa_cli,iw}
|