From 1e8bb18992c33db648b8c1c9faf72b88515a4134 Mon Sep 17 00:00:00 2001
From: Tomas Pecka <peckato1@fit.cvut.cz>
Date: Sun, 11 Nov 2018 14:46:33 +0100
Subject: [PATCH] Build: Adapt and simplify all- scripts

---
 all-cmake-debug.sh    | 48 ++++---------------------------------
 all-cmake-release.sh  | 48 ++++---------------------------------
 all-cmake-template.sh | 55 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 65 insertions(+), 86 deletions(-)
 create mode 100755 all-cmake-template.sh

diff --git a/all-cmake-debug.sh b/all-cmake-debug.sh
index c8c12e3ffe..49df2732b4 100755
--- a/all-cmake-debug.sh
+++ b/all-cmake-debug.sh
@@ -1,46 +1,8 @@
-THREADS=${1:-5}
-DIRECTORY=$(pwd)
-
-cd CMake
-./alib_cmake.py -w -m
-cd ..
-
-if [ ! -d debug ] && [ ! -L debug ]; then
-  mkdir debug
-fi
-
-if [ -L debug ]; then
-  LINK=$(readlink debug)
-  if [ ! -d ${LINK} ]; then
-    mkdir ${LINK}
-  fi
-  cd ${LINK}
-  cmake ${DIRECTORY}
-  cd ${DIRECTORY}/debug
-else
-  cd debug
-  cmake ..
-fi
-
-CXX=clang++ make -j${THREADS} || exit 1
+#!/usr/bin/env bash
 
-for test in $(ls */test-alib2*); do \
-  if [ -f ${test} ]; then ./${test} || exit 1; fi \
-done
-
-if [ ! -d bin ]; then
-  mkdir bin
-fi
-
-rm bin/*
-cd bin
-find .. -executable -type f | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
-
-cp ${DIRECTORY}/translateAddresses .
-cp ${DIRECTORY}/xmlFormat .
+THREADS=${1:-5}
+BUILD_DIR=${2:-"debug"}
 
-cd ${DIRECTORY}
+source $(dirname $0)/all-cmake-template.sh
 
-for test in $(ls tests.*.sh); do \
-  ./${test} debug/bin ${THREADS}; \
-done
+build "$BUILD_DIR" "Debug" "$THREADS" "$(dirname $0)"
diff --git a/all-cmake-release.sh b/all-cmake-release.sh
index aae48c033c..27945d38d4 100755
--- a/all-cmake-release.sh
+++ b/all-cmake-release.sh
@@ -1,46 +1,8 @@
-THREADS=${1:-5}
-DIRECTORY=$(pwd)
-
-cd CMake
-./alib_cmake.py -w -m
-cd ..
-
-if [ ! -d release ] && [ ! -L release ]; then
-  mkdir release
-fi
-
-if [ -L release ]; then
-  LINK=$(readlink release)
-  if [ ! -d ${LINK} ]; then
-    mkdir ${LINK}
-  fi
-  cd ${LINK}
-  cmake -DCMAKE_BUILD_TYPE=Release ${DIRECTORY}
-  cd ${DIRECTORY}/release
-else
-  cd release
-  cmake -DCMAKE_BUILD_TYPE=Release ..
-fi
-
-CXX=clang++ make -j${THREADS} || exit 1
+#!/usr/bin/env bash
 
-for test in $(ls */test-alib2*); do \
-  if [ -f ${test} ]; then ./${test} || exit 1; fi \
-done
-
-if [ ! -d bin ]; then
-  mkdir bin
-fi
-
-rm bin/*
-cd bin
-find .. -executable -type f | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
-
-cp ${DIRECTORY}/translateAddresses .
-cp ${DIRECTORY}/xmlFormat .
+THREADS=${1:-5}
+BUILD_DIR=${2:-"release"}
 
-cd ${DIRECTORY}
+source $(dirname $0)/all-cmake-template.sh
 
-for test in $(ls tests.*.sh); do \
-  ./${test} release/bin ${THREADS}; \
-done
+build "$BUILD_DIR" "Release" "$THREADS" "$(dirname $0)"
diff --git a/all-cmake-template.sh b/all-cmake-template.sh
new file mode 100755
index 0000000000..09c06a4616
--- /dev/null
+++ b/all-cmake-template.sh
@@ -0,0 +1,55 @@
+THREADS=${1:-5}
+
+# $1 - release/build
+# $2 - cmake build-type
+# $3 - $THREADS
+# $4 - root directory
+function build () {
+	BUILD_DIR="$1"
+	THREADS="$3"
+	DIRECTORY=$(realpath "$4")
+
+	echo "------------------------------------------------------------------------------" 1>&2
+	echo "Building '$DIRECTORY' in $2 mode: Build dir is '$BUILD_DIR', threads: $THREADS" 1>&2
+	echo "------------------------------------------------------------------------------" 1>&2
+
+	./CMake/generate.py -wm
+
+	if [ ! -d "$BUILD_DIR" ] && [ ! -L "$BUILD_DIR" ]; then
+		mkdir "$BUILD_DIR"
+	fi
+
+	if [ -L "${BUILD_DIR}" ]; then
+		LINK=$(readlink "${BUILD_DIR}")
+		if [ ! -d ${LINK} ]; then
+			mkdir ${LINK}
+		fi
+		cd ${LINK}
+		cmake -DCMAKE_BUILD_TYPE=$2 ${DIRECTORY}
+		cd ${DIRECTORY}/${BUILD_DIR}
+	else
+		cd "${BUILD_DIR}"
+		cmake -DCMAKE_BUILD_TYPE=$2 ..
+	fi
+
+	make -j${THREADS} || exit 1
+	make test || exit 1
+
+	# todo: everything below should be handled by cmake's make test and make install
+	if [ ! -d bin ]; then
+		mkdir bin
+	fi
+
+	rm bin/*
+	cd bin
+	find .. -executable -type f | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
+
+	cp ${DIRECTORY}/translateAddresses .
+	cp ${DIRECTORY}/xmlFormat .
+
+	cd ${DIRECTORY}
+
+	for test in $(ls tests.*.sh); do \
+		./${test} ${BUILD_DIR}/bin ${THREADS}; \
+	done
+}
-- 
GitLab