configure

changeset 1413
c5a225d7228c
parent 1335
158eb29f0b27
child 1414
597cf869e8bc
--- a/configure	Thu Oct 02 17:58:43 2025 +0200
+++ b/configure	Thu Oct 02 21:21:45 2025 +0200
@@ -115,6 +115,7 @@
   --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
 
@@ -161,6 +162,7 @@
 fi
 
 # features
+FEATURE_MEMRCHR=auto
 FEATURE_CXX_TESTS=auto
 FEATURE_SZMUL_BUILTIN=auto
 
@@ -195,6 +197,8 @@
         "--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 ;;
@@ -349,7 +353,7 @@
         if notistoolchain "gcc"; then
             break
         fi
-        if command -v gcovr > /dev/null ; then
+        if command -v gcovr > /dev/null 2>&1 ; then
             :
         else
             break
@@ -497,13 +501,48 @@
     dep_checked_file_tools=1
     return 0
 }
+dependency_error_memrchr()
+{
+    print_check_msg "$dep_checked_memrchr" "checking for memrchr... "
+    # dependency memrchr
+    while true
+    do
+        if $TOOLCHAIN_CC -o /dev/null make/test_memrchr.c > /dev/null 2>&1 ; then
+            :
+        else
+            break
+        fi
+        TEMP_CFLAGS="$TEMP_CFLAGS -DWITH_MEMRCHR"
+        print_check_msg "$dep_checked_memrchr" "yes\n"
+        dep_checked_memrchr=1
+        return 1
+    done
+
+    # dependency memrchr
+    while true
+    do
+        if $TOOLCHAIN_CC -o /dev/null -D_GNU_SOURCE make/test_memrchr.c > /dev/null 2>&1 ; then
+            :
+        else
+            break
+        fi
+        TEMP_CFLAGS="$TEMP_CFLAGS -DWITH_MEMRCHR -DMEMRCHR_NEED_GNU"
+        print_check_msg "$dep_checked_memrchr" "yes\n"
+        dep_checked_memrchr=1
+        return 1
+    done
+
+    print_check_msg "$dep_checked_memrchr" "no\n"
+    dep_checked_memrchr=1
+    return 0
+}
 dependency_error_doxygen()
 {
     print_check_msg "$dep_checked_doxygen" "checking for doxygen... "
     # dependency doxygen
     while true
     do
-        if test -n "$DOXYGEN" > /dev/null ; then
+        if test -n "$DOXYGEN" > /dev/null 2>&1 ; then
             :
         else
             break
@@ -527,7 +566,7 @@
     # dependency no_coverage
     while true
     do
-        if test -z "$FEATURE_COVERAGE" > /dev/null ; then
+        if test -z "$FEATURE_COVERAGE" > /dev/null 2>&1 ; then
             :
         else
             break
@@ -697,6 +736,26 @@
 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
@@ -843,6 +902,11 @@
 else
 echo "  asan: off"
 fi
+if [ -n "$FEATURE_MEMRCHR" ]; then
+echo "  memrchr: on"
+else
+echo "  memrchr: off"
+fi
 if [ -n "$FEATURE_CXX_TESTS" ]; then
 echo "  cxx-tests: on"
 else

mercurial