mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
fe92b4a0b1
Using plain 'clang' does not work well for the new devdraw on macOS 10.14. But 'xcrun --sdk macosx clang' does work, for reasons no one understands. Hopefully this will be OK on all macOS systems.
230 lines
5.5 KiB
Text
Executable file
230 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
|
|
# 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
|
|
|