--- 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