diff --git a/src/dev-run.sh b/src/dev-run.sh index 2c50dc58e2f9a865509dfecd0ce159e81eede5a2..8589f62d47ec2eb2313627a285950006dc1b277e 100755 --- a/src/dev-run.sh +++ b/src/dev-run.sh @@ -1,22 +1,38 @@ #!/bin/bash - -for cmd in cmake ninja entr; do - command -v $cmd >/dev/null 2>&1 || { echo >&2 "This script needs $cmd be installed"; exit 1; } -done +# Suggested setup to use the script: +# (on the root of the project) +# $ NOCONFIGURE=1 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo +# $ mkdir build && cd build && ../configure && make -j5 && cd .. +# $ src/dev-run.sh [FONT-FILE] [TEXT] +# +# Or, using cmake: +# $ cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild +# $ src/dev-run.sh [FONT-FILE] [TEXT] +# [ $# = 0 ] && echo Usage: "src/dev-run.sh [FONT-FILE] [TEXT]" && exit +command -v entr >/dev/null 2>&1 || { echo >&2 "This script needs `entr` be installed"; exit 1; } -cmake -DHB_CHECK=ON -DHB_DISABLE_TEST_PROGS=ON -Bbuild -H. -GNinja -ninja -Cbuild - +[ -f 'build/build.ninja' ] && CMAKENINJA=TRUE # or "fswatch -0 . -e build/ -e .git" -find src/ | entr printf '\0' | while read -d "" event; do - clear - ninja -Cbuild - build/hb-shape $@ - build/hb-view $@ +find src/ | entr printf '\0' | while read -d ""; do + clear + if [[ $CMAKENINJA ]]; then + ninja -Cbuild hb-shape hb-view + build/hb-shape $@ + build/hb-view $@ + else + make -Cbuild/src -j5 -s lib + build/util/hb-shape $@ + build/util/hb-view $@ + fi done -cmake -DHB_CHECK=ON -DHB_DISABLE_TEST_PROGS=OFF -Bbuild -H. -GNinja -ninja -Cbuild -CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=8 ninja -Cbuild test +read -n 1 -p "Run the tests (y/n)? " answer +if [[ "$answer" = "y" ]]; then + if [[ $CMAKENINJA ]]; then + CTEST_OUTPUT_ON_FAILURE=1 CTEST_PARALLEL_LEVEL=5 ninja -Cbuild test + else + make -j5 check && .ci/fail.sh + fi +fi