mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
06687f70ba
If mk gets into a bad state, it's not obvious that you can remove the binary to force the rebuild. Also, not rebuilding means that bugs in mkmk.sh are not noticed. Just rebuild from scratch every time. It doesn't take too long compared to the rest of INSTALL.
215 lines
5 KiB
Text
Executable file
215 lines
5 KiB
Text
Executable file
#!/bin/sh
|
|
|
|
dobuild=true
|
|
doinstall=true
|
|
|
|
case "x$1" in
|
|
x)
|
|
;;
|
|
x-b)
|
|
dobuild=true
|
|
doinstall=false
|
|
;;
|
|
x-c)
|
|
dobuild=false
|
|
doinstall=true
|
|
;;
|
|
x-r)
|
|
shift
|
|
PLAN9_TARGET=$1 export PLAN9_TARGET
|
|
;;
|
|
*)
|
|
echo 'usage: INSTALL [-b | -c] [-r path]' 1>&2
|
|
exit 1
|
|
esac
|
|
|
|
echo "+ Mailing list: https://groups.google.com/group/plan9port-dev"
|
|
echo "+ Issue tracker: https://github.com/9fans/plan9port/issues/"
|
|
echo "+ Submitting changes: https://github.com/9fans/plan9port/pulls"
|
|
echo " "
|
|
echo "* Resetting $PLAN9/config"
|
|
rm -f config
|
|
|
|
PLAN9=`pwd` export PLAN9
|
|
PATH=/bin:/usr/bin:$PLAN9/bin:$PATH export PATH
|
|
case `uname` in
|
|
SunOS)
|
|
awk=nawk
|
|
;;
|
|
DragonFly|*BSD)
|
|
case `cc -v 2>&1` in
|
|
*clang*)
|
|
echo "CC9=clang" >> $PLAN9/config
|
|
;;
|
|
*gcc*)
|
|
echo "CC9=gcc" >> $PLAN9/config
|
|
;;
|
|
esac
|
|
echo "* Running on" `uname`", adjusting linker flags"
|
|
case `uname` in
|
|
OpenBSD)
|
|
echo "LDFLAGS='-L/usr/X11R6/lib -pthread'" >> $PLAN9/config
|
|
;;
|
|
NetBSD)
|
|
echo "LDFLAGS='-L/usr/X11R7/lib -pthread'" >> $PLAN9/config
|
|
;;
|
|
*)
|
|
echo "LDFLAGS='-L/usr/local/lib -pthread'" >> $PLAN9/config
|
|
;;
|
|
esac
|
|
echo "CFLAGS='-pthread'" >> $PLAN9/config
|
|
awk=awk
|
|
;;
|
|
*)
|
|
awk=awk
|
|
;;
|
|
esac
|
|
|
|
(
|
|
if [ `uname` = SunOS ]; then
|
|
# On Solaris x86, uname -p cannot be trusted.
|
|
echo "* Running on Solaris: checking architecture..."
|
|
case "$(isainfo -n)" in
|
|
*amd64*)
|
|
echo " x86-64 found."
|
|
echo "OBJTYPE=x86_64" >>$PLAN9/config
|
|
echo "CC9=gcc" >>$PLAN9/config # defaults to gcc on Solaris/amd64
|
|
;;
|
|
*i386*)
|
|
echo " i386 found."
|
|
echo "OBJTYPE=386" >>$PLAN9/config
|
|
echo "CC9=gcc" >>$PLAN9/config # defaults to gcc on Solaris/i386
|
|
;;
|
|
*sparc*)
|
|
echo " Sparc found."
|
|
echo "OBJTYPE=sparc" >>$PLAN9/config
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if [ `uname` = Darwin ]; then
|
|
export NPROC=$(sysctl hw.ncpu | sed 's/hw.ncpu: //')
|
|
# On Darwin, uname -m -p cannot be trusted.
|
|
echo "* Running on Darwin: checking architecture..."
|
|
rm -f ./a.out
|
|
if ! gcc lib/darwin-main.c >/dev/null 2>&1; then
|
|
echo "Cannot find gcc. You may need to install the command-line tools using Xcode." >&2
|
|
echo "See http://swtch.com/go/xcodegcc for details." >&2
|
|
exit 1
|
|
fi
|
|
case "$(file ./a.out 2>/dev/null)" in
|
|
*x86_64*)
|
|
echo " x86-64 found."
|
|
echo "OBJTYPE=x86_64" >>$PLAN9/config
|
|
echo "CC9='xcrun --sdk macosx clang'" >>$PLAN9/config
|
|
;;
|
|
*i386*)
|
|
echo " i386 found."
|
|
echo "OBJTYPE=386" >>$PLAN9/config
|
|
;;
|
|
*ppc*)
|
|
echo " power found."
|
|
echo "OBJTYPE=power" >>$PLAN9/config
|
|
;;
|
|
esac
|
|
rm -f ./a.out
|
|
fi
|
|
|
|
if [ `uname` != Darwin ]; then
|
|
# Determine whether fontsrv X11 files are available.
|
|
rm -f a.out
|
|
cc -o a.out -c -Iinclude -I/usr/include -I/usr/local/include -I/usr/include/freetype2 -I/usr/local/include/freetype2 \
|
|
-I/usr/X11R7/include -I/usr/X11R7/include/freetype2 \
|
|
-I/usr/X11R6/include -I/usr/X11R6/include/freetype2 src/cmd/fontsrv/x11.c >/dev/null 2>&1
|
|
if [ -f a.out ]; then
|
|
echo " fontsrv dependencies found."
|
|
echo "FONTSRV=fontsrv" >>$PLAN9/config
|
|
else
|
|
echo " fontsrv dependencies not found."
|
|
echo "FONTSRV=" >>$PLAN9/config
|
|
rm -f bin/fontsrv
|
|
fi
|
|
rm -f a.out
|
|
fi
|
|
|
|
if [ -f LOCAL.config ]; then
|
|
echo Using LOCAL.config options:
|
|
sed 's/^/ /' LOCAL.config
|
|
cat LOCAL.config >>config
|
|
fi
|
|
|
|
echo "* Compiler version:"
|
|
9c -v 2>&1 | grep -v 'Configured with:' | grep -i version | sed 's/^/ /'
|
|
|
|
cd src
|
|
if $dobuild; then
|
|
echo "* Building mk..."
|
|
../dist/buildmk 2>&1 | sed 's/^[+] //'
|
|
|
|
if [ ! -x ../bin/mk ]; then
|
|
echo "* Error: mk failed to build."
|
|
exit 1
|
|
fi
|
|
|
|
echo "* Building everything (be patient)..."
|
|
mk clean
|
|
mk libs-nuke
|
|
mk all || exit 1
|
|
if [ ! -x $PLAN9/src/cmd/o.cleanname -o ! -x $PLAN9/src/cmd/acme/o.acme ]; then
|
|
echo "* Warning: not all binaries built successfully."
|
|
fi
|
|
echo "* Installing everything in $PLAN9/bin..."
|
|
mk -k install || exit 1
|
|
if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/acme -o ! -x $PLAN9/bin/sam ]; then
|
|
echo " "
|
|
echo "* Warning: not all binaries built successfully."
|
|
fi
|
|
if [ -f $PLAN9/bin/quote1 ]; then
|
|
cp $PLAN9/bin/quote1 $PLAN9/bin/'"'
|
|
cp $PLAN9/bin/quote2 $PLAN9/bin/'""'
|
|
fi
|
|
echo "* Cleaning up..."
|
|
mk clean
|
|
fi
|
|
|
|
if $doinstall; then
|
|
if [ ! -x $PLAN9/bin/cleanname -o ! -x $PLAN9/bin/sam ]; then
|
|
# Cleanname and sam are needed for moveplan9.sh and the man updates.
|
|
if [ ! -x $PLAN9/bin/cleanname ]; then
|
|
echo " "
|
|
echo "* Installation failed: $PLAN9/bin/cleanname does not exist."
|
|
exit 1
|
|
fi
|
|
if [ ! -x $PLAN9/bin/sam ]; then
|
|
echo " "
|
|
echo "* Installation failed: $PLAN9/bin/sam does not exist."
|
|
exit 1
|
|
fi
|
|
echo "* NOT renaming hard-coded /usr/local/plan9 paths."
|
|
echo "* NOT building web manual."
|
|
else
|
|
echo "* Renaming hard-coded /usr/local/plan9 paths..."
|
|
cd $PLAN9
|
|
sh lib/moveplan9.sh
|
|
echo "* Building web manual..."
|
|
(
|
|
cd $PLAN9/dist
|
|
echo cd `pwd`';' mk man
|
|
mk man
|
|
)
|
|
fi
|
|
|
|
if [ -x LOCAL.INSTALL ]; then
|
|
echo "* Running local modifications..."
|
|
echo cd `pwd`';' ./LOCAL.INSTALL
|
|
./LOCAL.INSTALL
|
|
fi
|
|
|
|
echo "* Done. "
|
|
echo " "
|
|
echo "* Add these to your profile environment."
|
|
echo " PLAN9=$PLAN9 export PLAN9"
|
|
echo ' PATH=$PATH:$PLAN9/bin export PATH'
|
|
fi
|
|
) 2>&1 | tee install.log | $awk -f $PLAN9/dist/isum.awk -v 'copy='install.sum
|
|
|