diff --git a/configure b/configure index fc67ace5..6e10d5c9 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #!/bin/sh # -# configuation script for the CHICKEN build process +# configuration script for the CHICKEN build process # # Copyright (c) 2024, The CHICKEN Team # All rights reserved. @@ -28,7 +28,6 @@ prefix=/usr/local debug= static= -shared=1 host= target= tprefix= @@ -40,13 +39,13 @@ linker= platform= chicken= pobjs= -mkcmd=make +mkcmd="make" usage () { - echo "usage: configure [--help] [--prefix DIRECTORY] [--platform PLATFORM] [--chicken PROGRAMNAME] [--debugbuild] [--staticbuild] [--disable-shared] [--host HOSTSYSTEM] [--target TARGETSYSTEM] [--program-prefix PREFIX] [--program-suffix SUFFIX] [--target-prefix DIRECTORY] [--srcdir DIRECTORY] [--vardir DIRECTORY] [--c-compiler PROGRAMNAME] [--linker PROGRAMNAME] [--profile-objects OBJECTLIST]" + echo "usage: configure [--help] [--prefix DIRECTORY] [--platform PLATFORM | list] [--chicken PROGRAMNAME] [--debugbuild] [--staticbuild] [--disable-shared] [--host HOSTSYSTEM] [--target TARGETSYSTEM] [--program-prefix PREFIX] [--program-suffix SUFFIX] [--target-prefix DIRECTORY] [--srcdir DIRECTORY] [--vardir DIRECTORY] [--c-compiler PROGRAMNAME] [--linker PROGRAMNAME] [--profile-objects OBJECTLIST]" echo echo "consult the README file for more information." - exit $1 + exit "$1" } while [ -n "$1" ]; do @@ -56,21 +55,21 @@ while [ -n "$1" ]; do -h|-help|--help) usage 0;; --chicken=*) - chicken=$(echo $arg | sed 's/^[^=]*=//');; + chicken=${arg#--chicken=};; --chicken) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 chicken="$1" shift;; --prefix=*) - prefix=$(echo $arg | sed 's/^[^=]*=//');; + prefix=${arg#--prefix=};; --prefix) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 prefix="$1" shift;; --platform=*) - platform=$(echo $arg | sed 's/^[^=]*=//');; + platform=${arg#--platform=};; --platform) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 platform="$1" shift;; --debugbuild) @@ -78,157 +77,157 @@ while [ -n "$1" ]; do --staticbuild|--disable-shared) static=1;; --host=*) - host=$(echo $arg | sed 's/^[^=]*=//');; + host=${arg#--host};; --host) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 host="$1" shift;; --target=*) - target=$(echo $arg | sed 's/^[^=]*=//');; + target=${arg#--target=};; --target) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 target="$1" shift;; --program-prefix=*) - pprefix=$(echo $arg | sed 's/^[^=]*=//');; + pprefix=${arg#--program-prefix=};; --program-prefix) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 pprefix="$1" shift;; --program-suffix=*) - psuffix=$(echo $arg | sed 's/^[^=]*=//');; + psuffix=${arg#--program-suffix=};; --program-suffix) test -z "$1" && usage 1 psuffix="$1" shift;; --target-prefix=*) - tprefix=$(echo $arg | sed 's/^[^=]*=//');; + tprefix=${arg#--target-prefix=};; --target-prefix) test -z "$1" && usage 1 tprefix="$1" shift;; --srcdir=*) - srcdir=$(echo $arg | sed 's/^[^=]*=//');; + srcdir=${arg#--srcdir=};; --srcdir) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 srcdir="$1" shift;; --vardir=*) - vardir=$(echo $arg | sed 's/^[^=]*=//');; + vardir=${arg#--vardir=};; --vardir) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 vardir="$1" shift;; --profile-objects=*) - pobjs=$(echo $arg | sed 's/^[^=]*=//');; + pobjs=${arg#--profile-objects=};; --profile-objects) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 pobjs="$1" shift;; --c-compiler=*) - CC=$(echo $arg | sed 's/^[^=]*=//');; + CC=${arg#--c-compiler=};; --c-compiler) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 CC="$1";; --linker=*) - linker=$(echo $arg | sed 's/^[^=]*=//');; + linker=${arg#--linker=};; --linker) - test -z "$1" && usage 1 + test -z "$1" && usage 1 >&2 linker="$1" shift;; *) - usage 1;; + usage 1 >&2;; esac done -if [ "$platform" == list ]; then +if [ "$platform" = list ]; then echo "available platforms:" echo for mf in Makefile.*; do - echo " " $(echo $mf | sed 's/^[^.]*\.//') + echo " ${mf#Makefile.}" done echo exit fi if [ -z "$platform" ]; then -printf 'detecting platform ... ' + printf 'detecting platform ... ' -# Detect the PLATFORM with uname. -# Based on Chibi Scheme auto-detector -# Heavily revamped by John Cowan -# Moved into configure script by Felix Winkelmann -# Copyright (c) 2009-2018 Alex Shinn, John Cowan -# BSD license at + # Detect the PLATFORM with uname. + # Based on Chibi Scheme auto-detector + # Heavily revamped by John Cowan + # Moved into configure script by Felix Winkelmann + # Copyright (c) 2009-2018 Alex Shinn, John Cowan + # BSD license at -# Now we can use uname tests -uname_s=$(uname) -uname_o=$(uname -o 2>/dev/null) + # Now we can use uname tests + uname_s=$(uname) + uname_o=$(uname -o 2>/dev/null) -case "$uname_s" in - Darwin) - platform=macosx;; - *BSD) - platform=bsd;; - DragonFly) - platform=bsd;; - Windows_NT) - platform=mingw - case "$prefix" in - [a-zA-Z]:*) - ;; - *) - echo "on Windows, the prefix must contain a drive letter" >&2 - exit 1;; - esac;; - SunOS) - platform=solaris;; - BeOS) - platform=haiku;; - Haiku) - platform=haiku;; - GNU) - platform=hurd;; - AIX) - platform=aix;; - *) - case "$uname_o" in - Cygwin) - platform=cygwin;; - Android) - platform=android;; - GNU/Linux) - platform=linux;; - Linux) - platform=linux;; - *) - echo - echo "unable to figure out platform" >&2 - exit 1;; - esac;; -esac -echo $platform + case "$uname_s" in + Darwin) + platform=macosx;; + *BSD) + platform=bsd;; + DragonFly) + platform=bsd;; + Windows_NT) + platform=mingw + case "$prefix" in + [a-zA-Z]:*) + ;; + *) + echo "on Windows, the prefix must contain a drive letter" >&2 + exit 1;; + esac;; + SunOS) + platform=solaris;; + BeOS) + platform=haiku;; + Haiku) + platform=haiku;; + GNU) + platform=hurd;; + AIX) + platform=aix;; + *) + case "$uname_o" in + Cygwin) + platform=cygwin;; + Android) + platform=android;; + GNU/Linux) + platform=linux;; + Linux) + platform=linux;; + *) + echo + echo "unable to figure out platform" >&2 + exit 1;; + esac;; + esac + echo "$platform" fi -cccmd=gcc +cccmd="gcc" if [ "$platform" = "bsd" ]; then - cccmd=cc + cccmd="cc" if command -v gmake >/dev/null; then - mkcmd=gmake + mkcmd="gmake" else - echo 'GNU make is required but does not seem to be available' >&2 + echo "GNU make is required but does not seem to be available" >&2 exit 1 fi fi -echo 'installation prefix:' $prefix -test -n "$chicken" && echo 'bootstrap chicken:' $chicken +echo "installation prefix: $prefix" +test -n "$chicken" && echo "bootstrap chicken: $chicken" test -n "$CC" && cccmd="$CC" printf "testing C compiler (%s) ... " "$cccmd" tmpc="$(mktemp).c" -cat > $tmpc < "$tmpc" </dev/null; then @@ -240,38 +239,38 @@ if command -v $cccmd >/dev/null; then else rm -f "${tmpc}.out" echo - echo $cccmd 'does not seem to produce working executable' >&2 + echo "$cccmd does not seem to produce working executables" >&2 exit 1 fi else rm -f "$tmpc" "${tmpc}.out" echo - echo $cccmd 'does not seem to work' >&2 + echo "$cccmd does not seem to work" >&2 exit 1 fi else echo - echo 'can not find' $cccmd >&2 + echo "cannot find $cccmd" >&2 exit 1 fi -echo '# GENERATED BY configure' > config.make -echo 'PLATFORM ?=' $platform >> config.make -echo 'PREFIX ?=' $prefix >> config.make -test -n "$debug" && echo 'DEBUGBUILD ?= 1' >> config.make -test -n "$static" && echo 'STATICBUILD ?= 1' >> config.make -test -n "$CC" && echo 'C_COMPILER ?=' $cccmd >> config.make -test -n "$linker" && echo 'LINKER ?=' $linker >> config.make -test -n "$CFLAGS" && echo 'C_COMPILER_OPTIMIZATION_OPTIONS ?=' $CFLAGS >> config.make -test -n "$host" && echo 'HOSTSYSTEM ?=' $host >> config.make -test -n "$target" && echo 'TARGETSYSTEM ?=' $target >> config.make -test -n "$pprefix" && echo 'PROGRAM_PREFIX ?=' $pprefix >> config.make -test -n "$psuffix" && echo 'PROGRAM_SUFFIX ?=' $psuffix >> config.make -test -n "$tprefix" && echo 'TARGET_PREFIX ?=' $tprefix >> config.make -test -n "$srcdir" && echo 'SRCDIR ?=' $srcdir >> config.make -test -n "$vardir" && echo 'VARDIR ?=' $vardir >> config.make -test -n "$chicken" && echo 'CHICKEN ?=' $chicken >> config.make -test -n "$pobjs" && echo 'PROFILE_OBJECTS ?=' $pobjs >> config.make +echo "# GENERATED BY configure" > config.make +echo "PLATFORM ?= $platform" >> config.make +echo "PREFIX ?= $prefix" >> config.make +test -n "$debug" && echo "DEBUGBUILD ?= 1" >> config.make +test -n "$static" && echo "STATICBUILD ?= 1" >> config.make +test -n "$CC" && echo "C_COMPILER ?= $cccmd" >> config.make +test -n "$linker" && echo "LINKER ?= $linker" >> config.make +test -n "$CFLAGS" && echo "C_COMPILER_OPTIMIZATION_OPTIONS ?= $CFLAGS" >> config.make +test -n "$host" && echo "HOSTSYSTEM ?= $host" >> config.make +test -n "$target" && echo "TARGETSYSTEM ?= $target" >> config.make +test -n "$pprefix" && echo "PROGRAM_PREFIX ?= $pprefix" >> config.make +test -n "$psuffix" && echo "PROGRAM_SUFFIX ?= $psuffix" >> config.make +test -n "$tprefix" && echo "TARGET_PREFIX ?= $tprefix" >> config.make +test -n "$srcdir" && echo "SRCDIR ?= $srcdir" >> config.make +test -n "$vardir" && echo "VARDIR ?= $vardir" >> config.make +test -n "$chicken" && echo "CHICKEN ?= $chicken" >> config.make +test -n "$pobjs" && echo "PROFILE_OBJECTS ?= $pobjs" >> config.make echo echo "now run ${mkcmd} to build the system"