Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 355 lines (329 sloc) 9.95 KB
#! /bin/sh
# configure
# Copyright 1984-2016 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
machs=""; last=""; sep0=""; sep1=""; sep2=""; sep3=""; sep4=" and ";
for fn in boot/*/scheme.boot ; do
machs=$machs$sep0$last
last=`echo $fn | sed -e 's/boot\/\(.*\)\/scheme.boot/\1/'`
sep0=$sep1; sep1=", "; sep2=$sep3; sep3=$sep4; sep4=", and "
done
machs=$machs$sep2$last
m=""
w=""
threads=no
temproot=""
help=no
gzipmanpages=yes
installowner=""
installgroup=""
installbin=""
installlib=""
installman=""
installschemename="scheme"
installpetitename="petite"
installscriptname="scheme-script"
: ${CPPFLAGS:=""}
: ${CFLAGS:=""}
: ${LDFLAGS:=""}
case `uname` in
Linux)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3le
m64=a6le
tm32=ti3le
tm64=ta6le
elif uname -a | grep -i power > /dev/null 2>&1 ; then
m32=ppc32le
m64=""
tm32=tppc32le
tm64=""
fi
installprefix=/usr
installmansuffix=share/man
;;
QNX)
if uname -a | egrep 'x86' > /dev/null 2>&1 ; then
m32=i3qnx
tm32=ti3qnx
fi
installprefix=/usr/local
installmansuffix=man
;;
FreeBSD)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3fb
m64=a6fb
tm32=ti3fb
tm64=ta6fb
fi
installprefix=/usr/local
installmansuffix=man
;;
OpenBSD)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3ob
m64=a6ob
tm32=ti3ob
tm64=ta6ob
fi
installprefix=/usr/local
installmansuffix=man
;;
NetBSD)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3nb
m64=a6nb
tm32=ti3nb
tm64=ta6nb
fi
installprefix=/usr
installmansuffix=share/man
gzipmanpages=no
;;
Darwin)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3osx
m64=a6osx
tm32=ti3osx
tm64=ta6osx
fi
installprefix=/usr/local
installmansuffix=share/man
;;
SunOS)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3s2
m64=a6s2
tm32=ti3s2
tm64=ta6s2
installprefix=/usr
installmansuffix=share/man
gzipmanpages=no
fi
;;
CYGWIN_NT-*)
if uname -a | egrep 'i386|i686|amd64|athlon|x86_64' > /dev/null 2>&1 ; then
m32=i3nt
m64=a6nt
tm32=ti3nt
tm64=ta6nt
installprefix=/usr/local
installmansuffix=share/man
fi
;;
esac
threads=""
bits=""
while [ $# != 0 ] ; do
case $1 in
-m=*)
m=`echo $1 | sed -e 's/^-m=//'`
;;
--machine=*)
m=`echo $1 | sed -e 's/^--machine=//'`
;;
--threads)
threads=yes
;;
--64)
bits=64
;;
--32)
bits=32
;;
--installprefix=*)
installprefix=`echo $1 | sed -e 's/^--installprefix=//'`
;;
--installlib=*)
installlib=`echo $1 | sed -e 's/^--installlib=//'`
;;
--installbin=*)
installbin=`echo $1 | sed -e 's/^--installbin=//'`
;;
--installman=*)
installman=`echo $1 | sed -e 's/^--installman=//'`
;;
--installowner=*)
installowner=`echo $1 | sed -e 's/^--installowner=//'`
;;
--installgroup=*)
installgroup=`echo $1 | sed -e 's/^--installgroup=//'`
;;
--installschemename=*)
installschemename=`echo $1 | sed -e 's/^--installschemename=//'`
;;
--installpetitename=*)
installpetitename=`echo $1 | sed -e 's/^--installpetitename=//'`
;;
--installscriptname=*)
installscriptname=`echo $1 | sed -e 's/^--installscriptname=//'`
;;
--gzip-man-pages)
gzipmanpages=yes
;;
--nogzip-man-pages)
gzipmanpages=no
;;
--temproot=*)
temproot=`echo $1 | sed -e 's/^--temproot=//'`
;;
--workarea=*)
w=`echo $1 | sed -e 's/^--workarea=//'`
;;
--help)
help=yes
;;
CPPFLAGS=*)
CPPFLAGS=`echo $1 | sed -e 's/^CPPFLAGS=//'`
;;
CFLAGS=*)
CFLAGS=`echo $1 | sed -e 's/^CFLAGS=//'`
;;
LDFLAGS=*)
LDFLAGS=`echo $1 | sed -e 's/^LDFLAGS=//'`
;;
*)
echo "option '$1' unrecognized or missing an argument; try $0 --help"
exit 1
;;
esac
shift
done
if [ "$bits" = "" ] ; then
if uname -a | egrep 'amd64|x86_64' > /dev/null 2>&1 ; then
bits=64
else
bits=32
fi
fi
if [ "$threads" = "" ] ; then
threads=no
fi
if [ "$m" = "" ] ; then
if [ $bits = 64 ] ; then
if [ $threads = yes ] ; then m=$tm64 ; else m=$m64 ; fi
else
if [ $threads = yes ] ; then m=$tm32 ; else m=$m32 ; fi
fi
fi
if [ "$w" = "" ] ; then
w=$m
fi
if [ "$installbin" = "" ] ; then
installbin=$installprefix/bin
fi
if [ "$installlib" = "" ] ; then
installlib=$installprefix/lib
fi
if [ "$installman" = "" ] ; then
installman=$installprefix/$installmansuffix
fi
if [ "$help" = "yes" ]; then
echo "Purpose:"
echo " $0 determines the machine type and constructs a custom Makefile"
echo " and Mf-install, taking into account the options below."
echo ""
echo "Options (defaults shown in parens):"
echo " --machine=<machine type> explicitly specify machine type ($m)"
echo " -m=<machine type> same as --machine <machine type> ($m)"
echo " --threads specify threaded version ($threads)"
echo " --32|--64 specify 32/64-bit version ($bits)"
echo " --installprefix=<pathname> final installation root ($installprefix)"
echo " --installbin=<pathname> bin directory ($installbin)"
echo " --installlib=<pathname> lib directory ($installlib)"
echo " --installman=<pathname> manpage directory ($installman)"
echo " --temproot=<pathname> staging root ($temproot)"
echo " --installowner=<ownername> install with owner ($installowner)"
echo " --installgroup=<groupname> install with group ($installgroup)"
echo " --installschemename=<schemename> install with group ($installschemename)"
echo " --installpetitename=<petitename> install with group ($installpetitename)"
echo " --installscriptname=<scriptname> install with group ($installscriptname)"
echo " --[no]gzip-man-pages compress manual pages ($gzipmanpages)"
echo " --workarea=<pathname> build directory ($w)"
echo " CPPFLAGS=<C preprocessor flags> additional C preprocessor flags ($CPPFLAGS)"
echo " CFLAGS=<C compiler flags> additional C compiler flags ($CFLAGS)"
echo " LDFLAGS=<linker flags> additional linker flags ($LDFLAGS)"
echo ""
echo "Available machine types: $machs"
echo ""
echo "Examples:"
echo " $0 --machine=i3le"
echo ""
echo " set machine-type to i3le rather than to determined type"
echo ""
echo " $0 --threads --installprefix=/usr/local"
echo ""
echo " specify threaded version and set installation directory to /usr/local."
echo ""
echo " $0 --installprefix=/usr/local --temproot=/tmp"
echo ""
echo " declare the final destination to be /usr/local but staging area"
echo " to be /tmp/usr/local. Make will record the final destination in the"
echo " installed manual pages but actually install the system and manual"
echo " pages in the staging area."
echo ""
exit 0
fi
if [ "$m" = "" -o ! -f boot/$m/scheme.boot ] ; then
echo "no suitable machine type found"
echo "try rerunning as $0 -m=<machine type>"
echo "available machine types: $machs"
exit 1
fi
if [ -d '.git' ] ; then
git submodule init && git submodule update || exit 1
else
if [ ! -f 'nanopass/nanopass.ss' ] ; then
rmdir nanopass && (curl -L -o v1.9.tar.gz https://github.com/nanopass/nanopass-framework-scheme/archive/v1.9.tar.gz && tar -zxf v1.9.tar.gz && mv nanopass-framework-scheme-1.9 nanopass && rm v1.9.tar.gz) || exit 1
fi
if [ ! -f 'zlib/configure' ] ; then
rmdir zlib && (curl -L -o v1.2.8.tar.gz https://github.com/madler/zlib/archive/v1.2.8.tar.gz && tar -xzf v1.2.8.tar.gz && mv zlib-1.2.8 zlib && rm v1.2.8.tar.gz) || exit 1
fi
if [ ! -f 'stex/Mf-stex' ] ; then
rmdir stex && (curl -L -o v1.2.1.tar.gz https://github.com/dybvig/stex/archive/v1.2.1.tar.gz && tar -zxf v1.2.1.tar.gz && mv stex-1.2.1 stex && rm v1.2.1.tar.gz) || exit 1
fi
fi
./workarea $m $w
sed -e 's/$(m)/'$m'/g'\
-e 's/$(workarea)/'$w'/g'\
makefiles/Makefile.in > Makefile
cat makefiles/Makefile-workarea.in > $w/Makefile
sed -e 's/$(m)/'$m'/g'\
-e 's/$(workarea)/'$w'/g'\
makefiles/Mf-boot.in > $w/Mf-boot
sed -e "s;^m=none\$;m=$m;"\
-e "s;^InstallPrefix=.*\$;InstallPrefix=$installprefix;"\
-e "s;^InstallBin=.*\$;InstallBin=$installbin;"\
-e "s;^InstallLib=.*\$;InstallLib=$installlib;"\
-e "s;^InstallMan=.*\$;InstallMan=$installman/man1;"\
-e "s;^InstallOwner=.*\$;InstallOwner=$installowner;"\
-e "s;^InstallGroup=.*\$;InstallGroup=$installgroup;"\
-e "s;^TempRoot=.*;TempRoot=$temproot;"\
-e "s;^GzipManPages=.*$;GzipManPages=$gzipmanpages;"\
-e "s;^InstallSchemeName=.*$;InstallSchemeName=$installschemename;"\
-e "s;^InstallPetiteName=.*$;InstallPetiteName=$installpetitename;"\
-e "s;^InstallScriptName=.*$;InstallScriptName=$installscriptname;"\
makefiles/Mf-install.in > $w/Mf-install
cat > $w/c/config.h << END
#define SCHEME_SCRIPT "$installscriptname"
#ifndef WIN32
#define DEFAULT_HEAP_PATH "$installlib/csv%v/%m"
#endif
END
cat > $w/c/Mf-config << END
CPPFLAGS=$CPPFLAGS
CFLAGS=$CFLAGS
LDFLAGS=$LDFLAGS
END