Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
}