42 lines
1.4 KiB
Bash
42 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Build core and run the local regression checks.
|
|
set -euo pipefail
|
|
|
|
mode=${1:-release}
|
|
source_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
build_dir=${2:-"$source_dir/build-ci/$mode"}
|
|
qmake_args=()
|
|
compiler_flags=()
|
|
|
|
case "$mode" in
|
|
release)
|
|
qmake_args+=(CONFIG+=release CONFIG-=debug)
|
|
compiler_flags+=(-O2)
|
|
;;
|
|
sanitize)
|
|
qmake_args+=(CONFIG+=debug CONFIG-=release
|
|
'QMAKE_CXXFLAGS+=-fsanitize=address,undefined -fno-omit-frame-pointer'
|
|
'QMAKE_LFLAGS+=-fsanitize=address,undefined')
|
|
compiler_flags+=(-g -fsanitize=address,undefined -fno-omit-frame-pointer)
|
|
export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1:halt_on_error=1}
|
|
export UBSAN_OPTIONS=${UBSAN_OPTIONS:-halt_on_error=1:print_stacktrace=1}
|
|
;;
|
|
*)
|
|
echo "Usage: $0 [release|sanitize] [build-directory]" >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
|
|
export QT_FATAL_WARNINGS=${QT_FATAL_WARNINGS:-1}
|
|
mkdir -p -- "$build_dir"
|
|
cd -- "$build_dir"
|
|
"${QMAKE:-qmake6}" "$source_dir/dbc.pro" "${qmake_args[@]}"
|
|
make -j"${JOBS:-4}"
|
|
make check
|
|
|
|
# Also verify that the tree and its builder compile and run without Qt.
|
|
"${CXX:-c++}" -std=c++17 "${compiler_flags[@]}" -I"$source_dir/core" \
|
|
"$source_dir/tests/tree_node_test.cpp" "$source_dir/core/tree_node.cpp" \
|
|
"$source_dir/core/dbc_tree_builder.cpp" -o dbc_tree_standalone_test
|
|
./dbc_tree_standalone_test
|