mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-24 11:41:58 +00:00
ad2d49503b
My MacBook Pro has hw.ncpu=12, so set NPROC=12. Speeds up INSTALL dramatically. Should probably add similar code to other OSes. Also silence rio warning from earlier commit.
231 lines
5.5 KiB
Text
Executable file
231 lines
5.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
|
|
|
|
PLAN9=`pwd` export PLAN9
|
|
PATH=/bin:/usr/bin:$PLAN9/bin:$PATH export PATH
|
|
case `uname` in
|
|
SunOS)
|
|
awk=nawk
|
|
;;
|
|
*)
|
|
awk=awk
|
|
;;
|
|
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
|
|
|
|
(
|
|
if [ `uname` = FreeBSD ]; then
|
|
case `cc -v 2>&1` in
|
|
*clang*)
|
|
echo "CC9=clang" >> $PLAN9/config
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
echo "* Running on FreeBSD, adjusting linker flags"
|
|
echo "LDFLAGS='-L/usr/local/lib'" >> $PLAN9/config
|
|
fi
|
|
|
|
if [ `uname` = DragonFly ]; then
|
|
echo "* Running on DragonFly BSD, adjusting linker flags"
|
|
echo "LDFLAGS='-L/usr/local/lib -pthread'" >> $PLAN9/config
|
|
echo "CFLAGS='-pthread'" >> $PLAN9/config
|
|
fi
|
|
|
|
if [ `uname` = OpenBSD ]; then
|
|
echo "* Running on OpenBSD, adjusting linker flags"
|
|
echo "LDFLAGS='-L/usr/X11R6/lib -pthread'" >> $PLAN9/config
|
|
fi
|
|
|
|
if [ `uname` = Linux ]; then
|
|
# On Linux, we use the kernel version to decide whether
|
|
# to use pthreads or not. On 2.6 versions that aren't
|
|
# linking with NPTL by default, pretend to be an older kernel.
|
|
echo "* Running on Linux: checking for NPTL..."
|
|
gcc lib/linux-isnptl.c -lpthread
|
|
if ./a.out >/dev/null
|
|
then
|
|
echo " NPTL found."
|
|
echo "SYSVERSION=2.6.x" >>$PLAN9/config
|
|
else
|
|
echo " NPTL not found."
|
|
echo "SYSVERSION=2.4.x" >>$PLAN9/config
|
|
fi
|
|
rm -f ./a.out
|
|
fi
|
|
|
|
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
|
|
gcc -o a.out -c -Iinclude -I/usr/include -I/usr/local/include -I/usr/include/freetype2 -I/usr/local/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
|
|
if [ ! -x ../bin/mk ]; then
|
|
echo "* Building mk..."
|
|
../dist/buildmk 2>&1 | sed 's/^[+] //'
|
|
fi
|
|
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
|
|
|