From c85c51c0772e630615462349b2c252abd2462152 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Fri, 14 Aug 2020 22:39:23 +0100 Subject: [PATCH] tools/build: add some options --- tools/asan_suppressions.txt | 2 +- tools/build | 60 ++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/tools/asan_suppressions.txt b/tools/asan_suppressions.txt index 8ed61702..0e14a205 100644 --- a/tools/asan_suppressions.txt +++ b/tools/asan_suppressions.txt @@ -1,3 +1,3 @@ leak:libfontconfig leak:libglib-2.0 - +leak:libxcb* diff --git a/tools/build b/tools/build index 0a23dc90..97c081f0 100755 --- a/tools/build +++ b/tools/build @@ -3,17 +3,57 @@ # Automatically build labwc # -builddir=build-clang +builddir=build +g_asan= +g_wlroots= -if ! [ -e subprojects/wlroots ]; then - git clone https://github.com/swaywm/wlroots subprojects/wlroots -fi +die () { printf '\033[31mfatal:\033[m %b\n' "$@" >&2 ; exit 1 ; } +warn () { printf '\033[31mwarn:\033[m %b\n' "$@" >&2 ; } +say () { printf '\033[32m%s\033[m' "$@" ; } +usage () { + printf "%s\n" \ +"Usage: ./tools/build [] +Options: +-w install wlroots as subproject +--asan run with ASAN and UBSAN +--clang run with clang +-h, --help show help" + exit 0 +} -if ! [ -e ${builddir} ]; then - CC=clang meson -Dwlroots:default_library=static ${builddir} - # To enable ASAN and UBSAN, run meson with - # `-Db_sanitize=address,undefined` -fi +wlroots_subproject () { + if ! [ -e subprojects/wlroots ]; then + git clone https://github.com/swaywm/wlroots subprojects/wlroots + fi +} -ninja -C ${builddir} +main () { + [[ -e src/main.c ]] || die "must be run from top-level directory" + + for arg + do + opt=${arg%%=*} + var=${arg#*=} + case "$opt" in + -w) + wlroots_subproject + g_wlroots="-Dwlroots:default_library=static" + ;; + --asan) + g_asan="-Db_sanitize=address,undefined" ;; + --clang) + export CC=clang + ;; + -h|--help) + usage ;; + esac + done + + [ -e ${builddir} ] && die "build directory already exists - delete and run again" + meson ${g_asan} ${g_wlroots} ${builddir} + ninja -C ${builddir} + LSAN_OPTIONS=suppressions=../tools/asan_suppressions.txt ninja -C ${builddir} test +} + +main "$@"