Initial Spring 2016 commit.
This commit is contained in:
171
configure
vendored
Executable file
171
configure
vendored
Executable file
@@ -0,0 +1,171 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Configure script for OS/161 tree.
|
||||
# This generates the file "defs.mk" at the top level of the tree.
|
||||
#
|
||||
# Usage: ./configure [options]
|
||||
# where you can get a list of the options by doing ./configure --help.
|
||||
#
|
||||
# Must be run with the top of the OS/161 tree as its current directory.
|
||||
#
|
||||
# Note: while this superficially acts like a GNU Autoconf configure
|
||||
# script, it was not generated by autoconf. Scripts generated by
|
||||
# autoconf are much harder to read. :-)
|
||||
#
|
||||
# If this script bombs out, you can create defs.mk by hand based on
|
||||
# the comments in mk/os161.config.mk.
|
||||
#
|
||||
|
||||
# Target hardware platform and machine type.
|
||||
PLATFORM='sys161'
|
||||
MACHINE='mips'
|
||||
|
||||
# Default optimize/debug flag: optimize.
|
||||
DEBUG='-O2'
|
||||
|
||||
# Default location of the root of the installed system.
|
||||
# Note that we quote it such that the reference to the home directory
|
||||
# is a make variable, not a shell variable. This means it gets expanded
|
||||
# when make runs rather than when this script runs.
|
||||
OSTREE='$(HOME)/os161/root'
|
||||
|
||||
# Assume this
|
||||
HOST_CC=gcc
|
||||
|
||||
##################################################
|
||||
|
||||
#
|
||||
# Check to make sure we're in the right place.
|
||||
|
||||
if [ ! -d kern/main ]; then
|
||||
echo 'Please run configure from the top of the OS/161 tree.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Process the command-line options.
|
||||
|
||||
while [ "x$1" != x ]; do
|
||||
case "$1" in
|
||||
--debug) DEBUG='-g';;
|
||||
--ostree=*) OSTREE=`echo $1 | sed 's,^[^=]*=,,'`;;
|
||||
--help|*)
|
||||
more <<EOF
|
||||
Usage: ./configure [options]
|
||||
where the options are:
|
||||
--help Print this message.
|
||||
|
||||
--debug Compile the user-level programs with debug info.
|
||||
This is disabled by default because there's no
|
||||
support for userlevel source debugging in OS/161.
|
||||
(Note: debug info in the kernel is controlled by
|
||||
the kernel config file.)
|
||||
|
||||
--ostree=PATH Install the compiled system in a directory tree
|
||||
rooted at PATH. Default is \$HOME/os161/root.
|
||||
EOF
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# Check if the host system supports 4.4BSD <err.h>.
|
||||
|
||||
printf "Checking for <err.h>... "
|
||||
|
||||
cat > __conftest.c <<EOF
|
||||
#include <err.h>
|
||||
int
|
||||
main()
|
||||
{
|
||||
err(0, "works");
|
||||
return 1;
|
||||
}
|
||||
EOF
|
||||
|
||||
OK=0
|
||||
if $HOST_CC __conftest.c -o __conftest >/dev/null 2>&1; then
|
||||
if ./__conftest >/dev/null 2>&1; then
|
||||
OK=1
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -f __conf*
|
||||
|
||||
if [ $OK = 1 ]; then
|
||||
echo 'yes'
|
||||
else
|
||||
echo 'no'
|
||||
COMPAT_CFLAGS="${COMPATCFLAGS} -DNEED_ERR"
|
||||
COMPAT_TARGETS="${HOSTTARGETS} install-errh"
|
||||
fi
|
||||
|
||||
|
||||
# Check if the host system has ntohll() and htonll().
|
||||
|
||||
printf "Checking for ntohll()..."
|
||||
|
||||
cat > __conftest.c <<EOF
|
||||
#include <arpa/inet.h>
|
||||
int
|
||||
main()
|
||||
{
|
||||
int ok = ntohll(0xbeefbeefbeefbeefULL) != 0;
|
||||
return !ok; /* exit(0) for success */
|
||||
}
|
||||
EOF
|
||||
|
||||
OK=0
|
||||
if $HOST_CC __conftest.c -o __conftest >/dev/null 2>&1; then
|
||||
if ./__conftest >/dev/null 2>&1; then
|
||||
OK=1
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -f __conf*
|
||||
|
||||
if [ $OK = 1 ]; then
|
||||
echo 'yes'
|
||||
else
|
||||
echo 'no'
|
||||
COMPAT_CFLAGS="${COMPATCFLAGS} -DNEED_NTOHLL"
|
||||
HOST_CFLAGS="${HOST_CFLAGS} -DDECLARE_NTOHLL"
|
||||
fi
|
||||
|
||||
####################
|
||||
|
||||
# Now generate defs.mk.
|
||||
|
||||
echo 'Generating defs.mk.'
|
||||
|
||||
(
|
||||
# First, put an explanatory comment at the top.
|
||||
cat <<EOF
|
||||
# This file was generated by configure. Edits will disappear if you rerun
|
||||
# configure. If you find that you need to edit this file to make things
|
||||
# work, let the course staff know and we'll try to fix the configure script.
|
||||
#
|
||||
# The purpose of this file is to hold all the makefile definitions
|
||||
# needed to adjust the OS/161 build process to any particular
|
||||
# environment. If I've done it right, all you need to do is rerun the
|
||||
# configure script and make clean if you start working on a different
|
||||
# host OS. If I've done it mostly right, you may need to edit this
|
||||
# file but you still hopefully won't need to edit any of the
|
||||
# makefiles.
|
||||
#
|
||||
# The things that can be set here are documented in mk/os161.config.mk.
|
||||
#
|
||||
|
||||
EOF
|
||||
echo "OSTREE=${OSTREE}"
|
||||
echo "PLATFORM=${PLATFORM}"
|
||||
echo "MACHINE=${MACHINE}"
|
||||
echo "COMPAT_CFLAGS=${COMPAT_CFLAGS}"
|
||||
echo "COMPAT_TARGETS=${COMPAT_TARGETS}"
|
||||
if [ "x$HOST_CFLAGS" != x ]; then
|
||||
echo "HOST_CFLAGS+=$HOST_CFLAGS"
|
||||
fi
|
||||
|
||||
) > defs.mk
|
Reference in New Issue
Block a user