forked from openkylin/kylin-music
92 lines
2.2 KiB
Plaintext
92 lines
2.2 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
#
|
||
|
# © 2018-2019 Konstantin Gredeskoul, All Rights Reserved.
|
||
|
# MIT License
|
||
|
#
|
||
|
# WARNING: This BASH script is completely optional. You don't need it to build this project.
|
||
|
#
|
||
|
# If you choose to run this script to build the project, run:
|
||
|
#
|
||
|
# $ ./build-and-run
|
||
|
#
|
||
|
# It will clean, build and run the tests.
|
||
|
#
|
||
|
|
||
|
[[ -z $(which git) ]] && {
|
||
|
echo "You need git installed. Please run 'xcode-select --install' first."
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
export BashMatic="${HOME}/.bashmatic"
|
||
|
[[ ! -f "${BashMatic}/init.sh" ]] && {
|
||
|
bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install -l"
|
||
|
}
|
||
|
source "${BashMatic}/init.sh"
|
||
|
|
||
|
export ProjectRoot=$(pwd)
|
||
|
export BuildDir="${ProjectRoot}/build/run"
|
||
|
export BashLibRoot="${ProjectRoot}/bin/lib-bash"
|
||
|
export LibBashRepo="https://github.com/kigster/lib-bash"
|
||
|
|
||
|
simple.header() {
|
||
|
h1.purple "Simple Tokenizer"
|
||
|
local OIFC=${IFC}
|
||
|
IFS="|" read -r -a gcc_info <<< "$(gcc --version 2>&1 | tr '\n' '|')"
|
||
|
export IFC=${OIFC}
|
||
|
h1 "${bldylw}GCC" "${gcc_info[1]}" "${gcc_info[2]}" "${gcc_info[3]}" "${gcc_info[4]}"
|
||
|
h1 "${bldylw}GIT: ${bldblu}$(git --version)"
|
||
|
h1 "${bldylw}CMAKE: ${bldblu}$(cmake --version | tr '\n' ' ')"
|
||
|
}
|
||
|
|
||
|
simple.setup() {
|
||
|
hl.subtle "Creating Build Folder..."
|
||
|
run "mkdir -p build/run"
|
||
|
}
|
||
|
|
||
|
simple.clean() {
|
||
|
hl.subtle "Cleaning output folders..."
|
||
|
run 'rm -rf bin/* include/* lib/* build/*'
|
||
|
}
|
||
|
|
||
|
simple.build() {
|
||
|
hl.subtle "build..."
|
||
|
run "cd build/run"
|
||
|
find . -name "*.gcda" -print0 | xargs -0 rm
|
||
|
run "cmake -DCODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=${ProjectRoot}/output ../.."
|
||
|
run.set-next show-output-on
|
||
|
run "make -j 12"
|
||
|
run "make install | egrep -v 'gmock|gtest'"
|
||
|
run "cd ${ProjectRoot}"
|
||
|
}
|
||
|
|
||
|
simple.tests() {
|
||
|
hl.subtle "testing..."
|
||
|
run.set-all show-output-on
|
||
|
run "cd build/run"
|
||
|
run "ctest . -V"
|
||
|
run "cd ${ProjectRoot}"
|
||
|
}
|
||
|
|
||
|
simple.example() {
|
||
|
[[ ! -f ./output/bin/sqlite3 ]] && {
|
||
|
error "You don't have the cmpiled sqlite3 binary yet".
|
||
|
exit 3
|
||
|
}
|
||
|
hl.subtle "run example..."
|
||
|
run "cd output/bin/"
|
||
|
run "cat ${ProjectRoot}/example.sql ${ProjectRoot}/example-jieba.sql | ./sqlite3"
|
||
|
run "./simple_cpp_example"
|
||
|
run "cd ${ProjectRoot}"
|
||
|
|
||
|
}
|
||
|
|
||
|
main() {
|
||
|
simple.header
|
||
|
simple.setup
|
||
|
simple.build
|
||
|
simple.tests
|
||
|
simple.example
|
||
|
}
|
||
|
|
||
|
(( $_s_ )) || main
|