configure

changeset 197
9cbd4f09a22f
parent 193
d1420f5c5704
child 204
86c09da7a6ae
--- 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

mercurial