Skip to content

Instantly share code, notes, and snippets.

@jynik
Created November 11, 2014 16:38
Show Gist options
  • Save jynik/7f95a0f5f261d7d71986 to your computer and use it in GitHub Desktop.
Save jynik/7f95a0f5f261d7d71986 to your computer and use it in GitHub Desktop.
bladeRF: Perform debug and release builds with GCC and Clang
#!/bin/bash
set -e
readonly CLANG=/usr/bin/clang
readonly SCAN_BUILD_PATH=/usr/share/clang/scan-build/
readonly SCAN_BUILD=$SCANBUILD_PATH/scan-build
readonly CCC_ANALYZER=$SCAN_BUILD_PATH/ccc-analyzer
# $1 Name
# $2 Debug/Release
perform_build() {
local build_dir
local cmake_args="-DBUILD_DOCUMENTATION=ON -DCMAKE_INSTALL_PREFIX=/usr/local"
local make_prefix
if [ $# -ne 2 ]; then
echo "Invalid params: $@" 1>&2
exit 1
fi
if [ "$1" = "clang" ]; then
cmake_args="$cmake_args -DCMAKE_C_COMPILER=$CLANG"
elif [ "$1" = "scan" ]; then
cmake_args="$cmake_args -DCMAKE_C_COMPILER=$CCC_ANALYZER"
make_prefix="scan-build -maxloop 1000 "
elif [ "$1" != "gcc" ]; then
echo "Invalid build name: $1" 1>&2
exit 1
fi
build_dir="$1"
if [ "$2" = "debug" ]; then
build_dir="$build_dir-debug"
cmake_args="$cmake_args -DCMAKE_BUILD_TYPE=Debug "
if [ "$build_dir" = "gcc" ]; then
cmake_args="$cmake_args -DENABLE_GDB_EXTENSIONS=Yes "
fi
elif [ "$2" = "release" ]; then
build_dir="$build_dir-release"
cmake_args="$cmake_args -DCMAKE_BUILD_TYPE=Release"
else
echo "Invalid build type: $2" 1>&2
exit 1
fi
rm -rf "$build_dir"
mkdir "$build_dir"
pushd "$build_dir"
cmake $cmake_args ../../
$make_prefix make -j8 2>&1 | tee build_log.txt
popd
}
perform_build gcc debug
perform_build gcc release
perform_build clang debug
perform_build clang release
perform_build scan debug
perform_build scan release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment