summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh72
1 files changed, 70 insertions, 2 deletions
diff --git a/build.sh b/build.sh
index 2dbc76c..8981712 100755
--- a/build.sh
+++ b/build.sh
@@ -1,3 +1,71 @@
#! /bin/bash
-[ ! -d build ] && mkdir build
-cd build && cmake -DWANT_DEBUG=1 .. && make && cd .. && time ./libk8055/test
+
+VERBOSE=${VERBOSE:-0}
+CMAKE_OPTIONS=""
+MAKE_OPTIONS=""
+BUILD_DIR=./build
+
+[ -f cmake_opts ] && source cmake_opts
+
+function cmake_init() {
+ echo -e " * cmake init\n"
+ if [ ! -d $BUILD_DIR ]; then
+ mkdir $BUILD_DIR || exit 1
+ fi
+ cd $BUILD_DIR || exit 1
+ if [ ! -e CMakeCache.txt ]; then
+ cmake ${CMAKE_OPTIONS} .. || exit 1
+ fi
+ cd .. || exit 1
+}
+
+function cmake_clean() {
+ echo -e " * clean cmake files\n" && rm $BUILD_DIR/CMakeCache.txt 2>/dev/null
+}
+
+function cmake_rm() {
+ echo -e " * rm cmake files\n" && rm -fr $BUILD_DIR 2>/dev/null
+}
+
+function cmake_make() {
+ cmake_init
+ echo -e " * cmake make\n" && cd $BUILD_DIR || exit 1
+ if [ $VERBOSE -eq 1 ]; then
+ VERBOSE=1 make $MAKE_OPTIONS || exit 1
+ else
+ make $MAKE_OPTIONS || exit 1
+ fi
+ cd ..
+}
+
+function cmake_tests() {
+ cmake_init
+ echo -e " * execute tests\n" && time ./libk8055/test
+}
+
+if [ $# -eq 0 ]; then
+ echo "usage $0 [cmds list]"
+ echo "cmds may be"
+ echo " r[m] => all built, temp and cache files"
+ echo " c[lean] => remove cache files"
+ echo " m[ake] => launch the build process"
+ echo " t[ests] => execute tests"
+ echo "ex: $0 r m pkg x"
+ exit 1
+fi
+
+for arg in $@; do
+ case $arg in
+ c|clean)
+ cmd="cmake_clean";;
+ r|rm)
+ cmd="cmake_rm";;
+ m|make)
+ cmd="cmake_make";;
+ t|test)
+ cmd="cmake_tests";;
+ *)
+ echo "unknown command ${arg}" && exit 1
+ esac
+ $cmd
+done