diff -r 168a38ae1b2d -r 9cbd4f09a22f configure --- a/configure Tue Aug 25 22:25:33 2026 +0200 +++ b/configure Mon Aug 31 15:49:31 2026 +0200 @@ -99,6 +99,10 @@ --debug add extra compile flags for debug builds --release add extra compile flags for release builds +Options: + --curses=(ncursesw|cursesw|ncurses|curses) + The curses implementation to use. + Optional Features: --enable-asan address sanitizer --enable-strict-errors treat compiler warnings as errors @@ -175,6 +179,8 @@ "--help"*) printhelp ;; "--debug") BUILD_TYPE="debug" ;; "--release") BUILD_TYPE="release" ;; + "--curses="*) OPT_CURSES=${ARG#--curses=} ;; + "--curses") echo "option '$ARG' needs a value:"; echo " $ARG=(ncursesw|cursesw|ncurses|curses)"; abort_configure ;; "--enable-asan") FEATURE_ASAN=on ;; "--disable-asan") unset FEATURE_ASAN ;; "--enable-strict-errors") FEATURE_STRICT_ERRORS=on ;; @@ -339,10 +345,10 @@ dep_checked_asan=1 return 0 } -dependency_error_ncurses() +dependency_error_ncursesw() { - print_check_msg "$dep_checked_ncurses" "checking for ncurses... " - # dependency ncurses + print_check_msg "$dep_checked_ncursesw" "checking for ncursesw... " + # dependency ncursesw while true do if [ -z "$PKG_CONFIG" ]; then @@ -354,6 +360,172 @@ else break fi + print_check_msg "$dep_checked_ncursesw" "yes\n" + dep_checked_ncursesw=1 + return 1 + done + + # dependency ncursesw + while true + do + if ./make/chklib.sh ncursesw > /dev/null 2>&1 ; then + : + else + break + fi + if ./make/chklib.sh tinfo > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lncursesw -ltinfo" + print_check_msg "$dep_checked_ncursesw" "yes\n" + dep_checked_ncursesw=1 + return 1 + done + + # dependency ncursesw + while true + do + if ./make/chklib.sh ncursesw > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lncursesw" + print_check_msg "$dep_checked_ncursesw" "yes\n" + dep_checked_ncursesw=1 + return 1 + done + + print_check_msg "$dep_checked_ncursesw" "no\n" + dep_checked_ncursesw=1 + return 0 +} +dependency_error_curses() +{ + print_check_msg "$dep_checked_curses" "checking for curses... " + # dependency curses + while true + do + if [ -z "$PKG_CONFIG" ]; then + break + fi + if test_pkg_config "curses" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags curses`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs curses`" + else + break + fi + print_check_msg "$dep_checked_curses" "yes\n" + dep_checked_curses=1 + return 1 + done + + # dependency curses + while true + do + if ./make/chklib.sh curses > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lcurses" + print_check_msg "$dep_checked_curses" "yes\n" + dep_checked_curses=1 + return 1 + done + + print_check_msg "$dep_checked_curses" "no\n" + dep_checked_curses=1 + return 0 +} +dependency_error_cursesw() +{ + print_check_msg "$dep_checked_cursesw" "checking for cursesw... " + # dependency cursesw + while true + do + if [ -z "$PKG_CONFIG" ]; then + break + fi + if test_pkg_config "cursesw" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags cursesw`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs cursesw`" + else + break + fi + print_check_msg "$dep_checked_cursesw" "yes\n" + dep_checked_cursesw=1 + return 1 + done + + # dependency cursesw + while true + do + if ./make/chklib.sh cursesw > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lcursesw" + print_check_msg "$dep_checked_cursesw" "yes\n" + dep_checked_cursesw=1 + return 1 + done + + print_check_msg "$dep_checked_cursesw" "no\n" + dep_checked_cursesw=1 + return 0 +} +dependency_error_ncurses() +{ + print_check_msg "$dep_checked_ncurses" "checking for ncurses... " + # dependency ncurses + while true + do + if [ -z "$PKG_CONFIG" ]; then + break + fi + if test_pkg_config "ncurses" "" "" "" ; then + TEMP_CFLAGS="$TEMP_CFLAGS `"$PKG_CONFIG" --cflags ncurses`" + TEMP_LDFLAGS="$TEMP_LDFLAGS `"$PKG_CONFIG" --libs ncurses`" + else + break + fi + print_check_msg "$dep_checked_ncurses" "yes\n" + dep_checked_ncurses=1 + return 1 + done + + # dependency ncurses + while true + do + if ./make/chklib.sh ncurses > /dev/null 2>&1 ; then + : + else + break + fi + if ./make/chklib.sh tinfo > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lncurses -ltinfo" + print_check_msg "$dep_checked_ncurses" "yes\n" + dep_checked_ncurses=1 + return 1 + done + + # dependency ncurses + while true + do + if ./make/chklib.sh ncurses > /dev/null 2>&1 ; then + : + else + break + fi + TEMP_LDFLAGS="$TEMP_LDFLAGS -lncurses" print_check_msg "$dep_checked_ncurses" "yes\n" dep_checked_ncurses=1 return 1 @@ -412,6 +584,54 @@ # # OPTION VALUES # +checkopt_curses_ncursesw() +{ + VERR=0 + if dependency_error_ncursesw ; then + VERR=1 + fi + if [ $VERR -ne 0 ]; then + return 1 + fi + return 0 +} +checkopt_curses_cursesw() +{ + VERR=0 + if dependency_error_cursesw ; then + VERR=1 + fi + if [ $VERR -ne 0 ]; then + return 1 + fi + return 0 +} +checkopt_curses_ncurses() +{ + VERR=0 + if dependency_error_ncurses ; then + VERR=1 + fi + if [ $VERR -ne 0 ]; then + return 1 + fi + TEMP_CFLAGS="$TEMP_CFLAGS -DDISABLE_UNICODE" + TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DDISABLE_UNICODE" + return 0 +} +checkopt_curses_curses() +{ + VERR=0 + if dependency_error_curses ; then + VERR=1 + fi + if [ $VERR -ne 0 ]; then + return 1 + fi + TEMP_CFLAGS="$TEMP_CFLAGS -DDISABLE_UNICODE" + TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DDISABLE_UNICODE" + return 0 +} # # TARGETS @@ -424,10 +644,6 @@ TEMP_CXXFLAGS= TEMP_LDFLAGS= -if dependency_error_ncurses; then - DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED ncurses " - ERROR=1 -fi # Features if [ -n "$FEATURE_ASAN" ]; then @@ -464,6 +680,85 @@ : fi +# Option: --curses +if [ -z "$OPT_CURSES" ]; then + echo "auto-detecting option 'curses'" + SAVED_ERROR="$ERROR" + SAVED_DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED" + ERROR=1 + while true + do + if checkopt_curses_ncursesw ; then + echo " curses: ncursesw" >> "$TEMP_DIR/options" + ERROR=0 + break + fi + if checkopt_curses_cursesw ; then + echo " curses: cursesw" >> "$TEMP_DIR/options" + ERROR=0 + break + fi + if checkopt_curses_ncurses ; then + echo " curses: ncurses" >> "$TEMP_DIR/options" + ERROR=0 + break + fi + if checkopt_curses_curses ; then + echo " curses: curses" >> "$TEMP_DIR/options" + ERROR=0 + break + fi + break + done + if [ $ERROR -ne 0 ]; then + SAVED_ERROR=1 + SAVED_DEPENDENCIES_FAILED="option 'curses' $SAVED_DEPENDENCIES_FAILED" + fi + ERROR="$SAVED_ERROR" + DEPENDENCIES_FAILED="$SAVED_DEPENDENCIES_FAILED" +else + echo "checking option curses = $OPT_CURSES" + if false; then + false + elif [ "$OPT_CURSES" = "ncursesw" ]; then + echo " curses: $OPT_CURSES" >> $TEMP_DIR/options + if checkopt_curses_ncursesw ; then + : + else + ERROR=1 + DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED" + fi + elif [ "$OPT_CURSES" = "cursesw" ]; then + echo " curses: $OPT_CURSES" >> $TEMP_DIR/options + if checkopt_curses_cursesw ; then + : + else + ERROR=1 + DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED" + fi + elif [ "$OPT_CURSES" = "ncurses" ]; then + echo " curses: $OPT_CURSES" >> $TEMP_DIR/options + if checkopt_curses_ncurses ; then + : + else + ERROR=1 + DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED" + fi + elif [ "$OPT_CURSES" = "curses" ]; then + echo " curses: $OPT_CURSES" >> $TEMP_DIR/options + if checkopt_curses_curses ; then + : + else + ERROR=1 + DEPENDENCIES_FAILED="option 'curses' $DEPENDENCIES_FAILED" + fi + else + echo + echo "Invalid option value - usage:" + echo " --curses=(ncursesw|cursesw|ncurses|curses)" + abort_configure + fi +fi if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then echo "CFLAGS += $TEMP_CFLAGS" >> "$TEMP_DIR/flags.mk" @@ -505,6 +800,9 @@ echo "Config:" fi echo +echo "Options:" +cat "$TEMP_DIR/options" +echo echo "Features:" printf ' %-16s' 'asan:' if [ -n "$FEATURE_ASAN" ]; then