From 3a6c1f049bb3643c86eb87f6c69cf7c3d3c95c86 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Fri, 24 May 2024 09:37:57 -0400 Subject: configure: Use --with/--without for libraries --- configure | 111 +++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 81 insertions(+), 30 deletions(-) (limited to 'configure') diff --git a/configure b/configure index 93254fa..60d7a92 100755 --- a/configure +++ b/configure @@ -17,13 +17,70 @@ else j="-j$({ nproc || sysctl -n hw.ncpu || getconf _NPROCESSORS_ONLN || echo 1; } 2>/dev/null)" fi +# Convert kebab-case to UPPER_CASE +toupper() { + printf '%s' "$1" | tr 'a-z-' 'A-Z_' +} + +# Report an argument parsing error +invalid() { + printf 'error: Unrecognized option "%s"\n\n' "$1" >&2 + printf 'Run %s --help for more information.\n' "$0" >&2 + exit 1 +} + for arg; do + # --[(enable|disable|with|without)-]$name[=$value] + value="${arg#*=}" + name="${arg%%=*}" + name="${name#--}" + case "$arg" in + --enable-*|--disable-*|--with-*|--without-*) + name="${name#*-}" + ;; + esac + NAME=$(printf '%s' "$name" | tr 'a-z-' 'A-Z_') + + # y/n modality + case "$arg" in + --enable-*|--with-*) + case "$arg" in + *=y|*=yes) yn=y ;; + *=n|*=no) yn=n ;; + *=*) invalid "$arg" ;; + *) yn=y ;; + esac + ;; + --disable-*|--without-*) + case "$arg" in + *=*) invalid "arg" ;; + *) yn=n ;; + esac + ;; + esac + + # Fix up --enable-lib* to --with-lib* + case "$arg" in + --enable-*|--disable-*) + case "$name" in + libacl|libcap|libselinux|liburing|oniguruma) + old="$arg" + case "$arg" in + --enable-*) arg="--with-${arg#--*-}" ;; + --disable-*) arg="--without-${arg#--*-}" ;; + esac + printf 'warning: Treating "%s" like "%s"\n' "$old" "$arg" >&2 + ;; + esac + ;; + esac + case "$arg" in -h|--help) cat <&2 - printf 'Run %s --help for more information.\n' "$0" >&2 - exit 1 + invalid "$arg" ;; esac ;; --prefix=*|--mandir=*) shift - name="${arg#--}" - name="${name%%=*}" - NAME=$(printf '%s' "$name" | tr 'a-z-' 'A-Z_') - set -- "$@" "$NAME=${arg#*=}" + set -- "$@" "$NAME=$value" ;; --infodir=*|--build=*|--host=*|--target=*) shift - printf 'warning: Ignoring option "%s"\n' "${arg%%=*}" >&2 + printf 'warning: Ignoring option "%s"\n' "$arg" >&2 ;; MAKE=*) - MAKE="${arg#*=}" shift + MAKE="$value" ;; # make flag (-j2) or variable (CC=clang) @@ -126,9 +179,7 @@ EOF ;; *) - printf 'error: Unrecognized option "%s"\n\n' "$arg" >&2 - printf 'Run %s --help for more information.\n' "$0" >&2 - exit 1 + invalid "$arg" ;; esac done -- cgit v1.2.3