configure

changeset 1620
bf5d647f939d
parent 1619
0db02ab1457c
--- a/configure	Wed Dec 17 20:13:08 2025 +0100
+++ b/configure	Thu Dec 18 12:11:30 2025 +0100
@@ -156,9 +156,10 @@
   --enable-api-docs       run Doxygen during build
   --enable-coverage       test coverage with gcov
   --enable-asan           address sanitizer
-  --disable-memrchr
   --disable-cxx-tests     the check-cxx makefile target
   --disable-szmul-builtin use custom implementation, instead
+  --disable-memrchr
+  --disable-qsort_r
 
 __EOF__
     abort_configure
@@ -278,9 +279,10 @@
 fi
 
 # features
-FEATURE_MEMRCHR=auto
 FEATURE_CXX_TESTS=auto
 FEATURE_SZMUL_BUILTIN=auto
+FEATURE_MEMRCHR=auto
+FEATURE_QSORT_R=auto
 
 #
 # parse arguments
@@ -304,12 +306,14 @@
         "--disable-coverage") unset FEATURE_COVERAGE ;;
         "--enable-asan") FEATURE_ASAN=on ;;
         "--disable-asan") unset FEATURE_ASAN ;;
-        "--enable-memrchr") FEATURE_MEMRCHR=on ;;
-        "--disable-memrchr") unset FEATURE_MEMRCHR ;;
         "--enable-cxx-tests") FEATURE_CXX_TESTS=on ;;
         "--disable-cxx-tests") unset FEATURE_CXX_TESTS ;;
         "--enable-szmul-builtin") FEATURE_SZMUL_BUILTIN=on ;;
         "--disable-szmul-builtin") unset FEATURE_SZMUL_BUILTIN ;;
+        "--enable-memrchr") FEATURE_MEMRCHR=on ;;
+        "--disable-memrchr") unset FEATURE_MEMRCHR ;;
+        "--enable-qsort_r") FEATURE_QSORT_R=on ;;
+        "--disable-qsort_r") unset FEATURE_QSORT_R ;;
         "-"*) echo "unknown option: $ARG"; abort_configure ;;
     esac
 done
@@ -535,7 +539,7 @@
     # dependency memrchr
     while true
     do
-        if $TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null -D_GNU_SOURCE make/test_memrchr.c > /dev/null 2>&1 ; then
+        if $TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null make/test_memrchr.c > /dev/null 2>&1 ; then
             :
         else
             break
@@ -590,6 +594,27 @@
     dep_checked_no_coverage=1
     return 0
 }
+dependency_error_qsort_r()
+{
+    print_check_msg "$dep_checked_qsort_r" "checking for qsort_r... "
+    # dependency qsort_r
+    while true
+    do
+        if $TOOLCHAIN_CC $CFLAGS $LDFLAGS -o /dev/null make/test_qsort_r.c > /dev/null 2>&1 ; then
+            :
+        else
+            break
+        fi
+        TEMP_CFLAGS="$TEMP_CFLAGS -DWITH_QSORT_R"
+        print_check_msg "$dep_checked_qsort_r" "yes\n"
+        dep_checked_qsort_r=1
+        return 1
+    done
+
+    print_check_msg "$dep_checked_qsort_r" "no\n"
+    dep_checked_qsort_r=1
+    return 0
+}
 
 # start collecting dependency information
 echo > "$TEMP_DIR/flags.mk"
@@ -801,26 +826,6 @@
 else
     :
 fi
-if [ -n "$FEATURE_MEMRCHR" ]; then
-    # check dependency
-    if dependency_error_memrchr ; then
-        # "auto" features can fail and are just disabled in this case
-        if [ "$FEATURE_MEMRCHR" = "auto" ]; then
-            DISABLE_FEATURE_MEMRCHR=1
-        else
-            DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED memrchr "
-            ERROR=1
-        fi
-    fi
-    if [ -n "$DISABLE_FEATURE_MEMRCHR" ]; then
-        unset FEATURE_MEMRCHR
-    fi
-fi
-if [ -n "$FEATURE_MEMRCHR" ]; then
-    :
-else
-    :
-fi
 if [ -n "$FEATURE_CXX_TESTS" ]; then
     # check dependency
     if dependency_error_cxx ; then
@@ -867,6 +872,46 @@
     TEMP_CFLAGS="$TEMP_CFLAGS -DCX_NO_SZMUL_BUILTIN"
     TEMP_CXXFLAGS="$TEMP_CXXFLAGS -DCX_NO_SZMUL_BUILTIN"
 fi
+if [ -n "$FEATURE_MEMRCHR" ]; then
+    # check dependency
+    if dependency_error_memrchr ; then
+        # "auto" features can fail and are just disabled in this case
+        if [ "$FEATURE_MEMRCHR" = "auto" ]; then
+            DISABLE_FEATURE_MEMRCHR=1
+        else
+            DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED memrchr "
+            ERROR=1
+        fi
+    fi
+    if [ -n "$DISABLE_FEATURE_MEMRCHR" ]; then
+        unset FEATURE_MEMRCHR
+    fi
+fi
+if [ -n "$FEATURE_MEMRCHR" ]; then
+    :
+else
+    :
+fi
+if [ -n "$FEATURE_QSORT_R" ]; then
+    # check dependency
+    if dependency_error_qsort_r ; then
+        # "auto" features can fail and are just disabled in this case
+        if [ "$FEATURE_QSORT_R" = "auto" ]; then
+            DISABLE_FEATURE_QSORT_R=1
+        else
+            DEPENDENCIES_FAILED="$DEPENDENCIES_FAILED qsort_r "
+            ERROR=1
+        fi
+    fi
+    if [ -n "$DISABLE_FEATURE_QSORT_R" ]; then
+        unset FEATURE_QSORT_R
+    fi
+fi
+if [ -n "$FEATURE_QSORT_R" ]; then
+    :
+else
+    :
+fi
 
 
 if [ -n "${TEMP_CFLAGS}" ] && [ -n "$lang_c" ]; then
@@ -938,12 +983,6 @@
 else
     echo 'off'
 fi
-printf '  %-16s' 'memrchr:'
-if [ -n "$FEATURE_MEMRCHR" ]; then
-    echo 'on'
-else
-    echo 'off'
-fi
 printf '  %-16s' 'cxx-tests:'
 if [ -n "$FEATURE_CXX_TESTS" ]; then
     echo 'on'
@@ -956,6 +995,18 @@
 else
     echo 'off'
 fi
+printf '  %-16s' 'memrchr:'
+if [ -n "$FEATURE_MEMRCHR" ]; then
+    echo 'on'
+else
+    echo 'off'
+fi
+printf '  %-16s' 'qsort_r:'
+if [ -n "$FEATURE_QSORT_R" ]; then
+    echo 'on'
+else
+    echo 'off'
+fi
 echo
 
 # generate the config.mk file

mercurial