Skip to content

Instantly share code, notes, and snippets.

@jettero
Last active August 29, 2015 14:23
Show Gist options
  • Save jettero/6c651f6d406dc723bbfc to your computer and use it in GitHub Desktop.
Save jettero/6c651f6d406dc723bbfc to your computer and use it in GitHub Desktop.
#!/bin/bash
#
# AUTHOR: Paul Miller <jettero@cpan.org>
# RE: This relates to a quest: https://github.com/Nuand/bladeRF/issues/386
# PREREQ:
# http://gnuradio.org/redmine/projects/gnuradio/wiki/GRAndDeps
# http://gnuradio.org/redmine/projects/gnuradio/wiki/GRAndBuild
#
ARGS=()
if [[ "$*" =~ -[a-z]*h ]]; then
echo "-h this help"
echo "-b don't build, just do the cmake"
echo "-c clean before build (or cmake)"
echo "-i install after build (probably builds more than the initial target)"
echo "-s TARGET=bladeRF-cli (also builds libbladerf_shared)"
echo " by default, builds only libbladerf_shared"
exit 0
fi
if [[ "$*" =~ -[a-z]*v ]]; then
ARGS[${#ARGS[1]}]=VERBOSE=1
fi
function myevent() { echo "---- $*"; }
export ANDROID_BASE=/usr/local/android
export ANDROID_SDK=$ANDROID_BASE/android-sdk-linux/
export PATH=$PATH:$ANDROID_SDK/tools
export ANDROID_NDK=/usr/local/android/android-ndk-r10e/
# /opt/ndk/build/tools/make-standalone-toolchain.sh --stl=gnustl --arch=arm \
# --platform=android-21 --abis=armeabi-v7a --install-dir=$ANDROID_BASE/standalone-v10-ndk
export ANDROID_STANDALONE_TOOLCHAIN=$ANDROID_BASE/standalone-v10-ndk
export PREFIX=/opt/grandroid
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
export TOOLCHAIN=~/code/android/grandroid/gnuradio/cmake/Toolchains/AndroidToolchain.cmake
export SYS_ROOT="$ANDROID_STANDALONE_TOOLCHAIN/sysroot/"
# this does no good:
#xport LIBUSB_PATH=/opt/grandroid/lib/libusb1.0
# it guesses the name badly... the only solution I could find is this:
myevent "considering libusb filenames"
[ -f $PREFIX/lib/libusb1.0.so -a ! -f $PREFIX/lib/libusb-1.0.so ] \
&& (cd $PREFIX/lib && ln -svf libusb1.0.so libusb-1.0.so)
if [[ "$*" =~ -[a-z]s ]]; then
TARGET=bladeRF-cli
else
TARGET=libbladerf_shared
fi
[ -d bladeRF ] || git clone https://github.com/Nuand/bladeRF.git
if [ -d bladeRF ]; then
export ENOTSUP=95 # <-- cheap! I don't know how to inject include "errno.h" so I used ENOTSUP=95. :-(
#export CMAKE_C_FLAGS='"-Dpthread_cancel(x)=error(95, 95, \"pthread_cancel(x)\")"'
export CMAKE_C_FLAGS='-Dpthread_cancel=exit'
if [[ "$*" =~ -[a-z]*c && -d bladeRF/build ]]; then
myevent "make clean"
(cd bladeRF/build && make clean) || exit 1
fi
PROCS=$(grep bogo /proc/cpuinfo | wc -l)
[ "0$(PROCS)" -gt 0 ] || PROCS=2
(
cd bladeRF && [ -d build ] || mkdir build
myevent "cmake"
cd build && cmake \
-DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DUDEV_RULES_PATH=$PREFIX/etc/udev/rules.d \
-DCMAKE_INSTALL_BINDIR=$PREFIX/bin \
-DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \
-DENABLE_BACKEND_LIBUSB=True \
-DENABLE_USB_DEV_RESET_ON_OPEN=True \
-DCMAKE_INCLUDE_PATH=$PREFIX/include \
-DCMAKE_LIBRARY_PATH=$PREFIX/lib \
../
if [[ ! "$?" -gt 0 && ! "$*" =~ -[a-z]*b ]]; then
myevent "make $TARGET"
make -j$PROCS $TARGET "${ARGS[@]}"
if [[ ! "$?" -gt 0 && "$*" =~ -[a-z]i ]]; then
myevent "make install"
make -j$PROCS install
fi
fi
)
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment