Last active
August 29, 2015 14:23
-
-
Save jettero/6c651f6d406dc723bbfc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# AUTHOR: Paul Miller <[email protected]> | |
# 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 "[1;36m---- $*[m"; } | |
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