# HG changeset patch # User Mike Becker # Date 1778746643 -7200 # Node ID 333a16b76adf08a536eca828915dc7f26cb3b8d6 # Parent 0f2ffbc408ce8dca0d2129646333e736d2791e2c add build option to enable ASan diff -r 0f2ffbc408ce -r 333a16b76adf configure --- a/configure Wed Apr 29 17:41:00 2026 +0200 +++ b/configure Thu May 14 10:17:23 2026 +0200 @@ -99,6 +99,9 @@ --debug add extra compile flags for debug builds --release add extra compile flags for release builds +Optional Features: + --enable-asan address sanitizer + __EOF__ abort_configure } @@ -171,6 +174,8 @@ "--help"*) printhelp ;; "--debug") BUILD_TYPE="debug" ;; "--release") BUILD_TYPE="release" ;; + "--enable-asan") FEATURE_ASAN=on ;; + "--disable-asan") unset FEATURE_ASAN ;; "-"*) echo "unknown option: $ARG"; abort_configure ;; esac done @@ -311,6 +316,26 @@ fi } +dependency_error_asan() +{ + print_check_msg "$dep_checked_asan" "checking for asan... " + # dependency asan toolchain="gnuc" + while true + do + if notistoolchain "gnuc"; then + break + fi + TEMP_CFLAGS="$TEMP_CFLAGS -fsanitize=address" + TEMP_LDFLAGS="$TEMP_LDFLAGS -fsanitize=address" + print_check_msg "$dep_checked_asan" "yes\n" + dep_checked_asan=1 + return 1 + done + + print_check_msg "$dep_checked_asan" "no\n" + dep_checked_asan=1 + return 0 +} dependency_error_ncurses() { print_check_msg "$dep_checked_ncurses" "checking for ncurses... " @@ -390,8 +415,8 @@ # echo >> "$TEMP_DIR/flags.mk" -echo "configuring target: default" -echo "# flags for target default" >> "$TEMP_DIR/flags.mk" +echo "configuring global target" +echo "# flags for unnamed target" >> "$TEMP_DIR/flags.mk" TEMP_CFLAGS= TEMP_CXXFLAGS= TEMP_LDFLAGS= @@ -402,6 +427,26 @@ fi # Features +if [ -n "$FEATURE_ASAN" ]; then + # check dependency + if dependency_error_asan ; then + # "auto" features can fail and are just disabled in this case + if [ "$FEATURE_ASAN" = "auto" ]; then + DISABLE_FEATURE_ASAN=1 + else + DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED asan " + ERROR=1 + fi + fi + if [ -n "$DISABLE_FEATURE_ASAN" ]; then + unset FEATURE_ASAN + fi +fi +if [ -n "$FEATURE_ASAN" ]; then + : +else + : +fi if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then @@ -444,6 +489,14 @@ echo "Config:" fi echo +echo "Features:" +printf ' %-16s' 'asan:' +if [ -n "$FEATURE_ASAN" ]; then + echo 'on' +else + echo 'off' +fi +echo # generate the config.mk file pwd=`pwd` diff -r 0f2ffbc408ce -r 333a16b76adf make/project.xml --- a/make/project.xml Wed Apr 29 17:41:00 2026 +0200 +++ b/make/project.xml Thu May 14 10:17:23 2026 +0200 @@ -17,4 +17,15 @@ ncursesw + + -fsanitize=address + -fsanitize=address + + + ncurses + + address sanitizer + asan + +