xref: /dflybsd-src/contrib/bmake/machine.sh (revision ca58f742f2bde30719d580a25d0fcedd4e8ee199)
101e196c8SJohn Marino:
201e196c8SJohn Marino# derrived from /etc/rc_d/os.sh
301e196c8SJohn Marino
401e196c8SJohn Marino# RCSid:
5*ca58f742SDaniel Fojt#	$Id: machine.sh,v 1.18 2017/08/13 19:11:28 sjg Exp $
601e196c8SJohn Marino#
701e196c8SJohn Marino#	@(#) Copyright (c) 1994-2002 Simon J. Gerraty
801e196c8SJohn Marino#
901e196c8SJohn Marino#	This file is provided in the hope that it will
1001e196c8SJohn Marino#	be of use.  There is absolutely NO WARRANTY.
1101e196c8SJohn Marino#	Permission to copy, redistribute or otherwise
1201e196c8SJohn Marino#	use this file is hereby granted provided that
1301e196c8SJohn Marino#	the above copyright notice and this notice are
1401e196c8SJohn Marino#	left intact.
1501e196c8SJohn Marino#
1601e196c8SJohn Marino#	Please send copies of changes and bug-fixes to:
1701e196c8SJohn Marino#	sjg@crufty.net
1801e196c8SJohn Marino#
1901e196c8SJohn Marino
2001e196c8SJohn MarinoOS=`uname`
2101e196c8SJohn MarinoOSREL=`uname -r`
2201e196c8SJohn MarinoOSMAJOR=`IFS=.; set $OSREL; echo $1`
2301e196c8SJohn Marinomachine=`uname -p 2>/dev/null || uname -m`
2401e196c8SJohn MarinoMACHINE=
2501e196c8SJohn Marino
2601e196c8SJohn Marino# there is at least one case of `uname -p` outputting
2701e196c8SJohn Marino# a bunch of usless drivel
2801e196c8SJohn Marinocase "$machine" in
2901e196c8SJohn Marinounknown|*[!A-Za-z0-9_-]*)
3001e196c8SJohn Marino        machine=`uname -m`
3101e196c8SJohn Marino        ;;
3201e196c8SJohn Marinoesac
3301e196c8SJohn Marino
3401e196c8SJohn Marino# Great! Solaris keeps moving arch(1)
3501e196c8SJohn Marino# we need this here, and it is not always available...
3601e196c8SJohn MarinoWhich() {
3701e196c8SJohn Marino	# some shells cannot correctly handle `IFS`
3801e196c8SJohn Marino	# in conjunction with the for loop.
3901e196c8SJohn Marino	_dirs=`IFS=:; echo ${2:-$PATH}`
4001e196c8SJohn Marino	for d in $_dirs
4101e196c8SJohn Marino	do
4201e196c8SJohn Marino		test -x $d/$1 && { echo $d/$1; break; }
4301e196c8SJohn Marino	done
4401e196c8SJohn Marino}
4501e196c8SJohn Marino
4601e196c8SJohn Marinocase $OS in
47*ca58f742SDaniel FojtAIX)	# from http://gnats.netbsd.org/29386
48*ca58f742SDaniel Fojt	OSMAJOR=`uname -v`
49*ca58f742SDaniel Fojt	OSMINOR=`uname -r`
50*ca58f742SDaniel Fojt	MACHINE=$OS$OSMAJOR.$OSMINOR
51*ca58f742SDaniel Fojt	MACHINE_ARCH=`bootinfo -T`
52*ca58f742SDaniel Fojt	;;
5301e196c8SJohn MarinoOpenBSD)
5401e196c8SJohn Marino	MACHINE=$OS$OSMAJOR.$machine
5501e196c8SJohn Marino	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
5601e196c8SJohn Marino	MACHINE_ARCH=`$arch -s`;
5701e196c8SJohn Marino	;;
58f445c897SJohn MarinoBitrig)
59f445c897SJohn Marino	MACHINE=$OS$OSMAJOR.$machine
60f445c897SJohn Marino	MACHINE_ARCH=`uname -m`;
61f445c897SJohn Marino	;;
6201e196c8SJohn Marino*BSD)
6301e196c8SJohn Marino	MACHINE=$OS$OSMAJOR.$machine
6401e196c8SJohn Marino	;;
6501e196c8SJohn MarinoSunOS)
6601e196c8SJohn Marino	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
6701e196c8SJohn Marino	test "$arch" && machine_arch=`$arch`
6801e196c8SJohn Marino
6901e196c8SJohn Marino	case "$OSREL" in
7001e196c8SJohn Marino	4.0*) MACHINE_ARCH=$machine_arch MACHINE=$machine_arch;;
7101e196c8SJohn Marino	4*) MACHINE_ARCH=$machine_arch;;
7201e196c8SJohn Marino	esac
7301e196c8SJohn Marino	;;
7401e196c8SJohn MarinoHP-UX)
7501e196c8SJohn Marino	MACHINE_ARCH=`IFS="/-."; set $machine; echo $1`
7601e196c8SJohn Marino	;;
7701e196c8SJohn MarinoInterix)
7801e196c8SJohn Marino	MACHINE=i386
7901e196c8SJohn Marino	MACHINE_ARCH=i386
8001e196c8SJohn Marino	;;
8101e196c8SJohn MarinoUnixWare)
8201e196c8SJohn Marino	OSREL=`uname -v`
8301e196c8SJohn Marino	OSMAJOR=`IFS=.; set $OSREL; echo $1`
8401e196c8SJohn Marino	MACHINE_ARCH=`uname -m`
8501e196c8SJohn Marino	;;
8601e196c8SJohn MarinoLinux)
8701e196c8SJohn Marino        case "$machine" in
8801e196c8SJohn Marino	i?86) MACHINE_ARCH=i386;;# does anyone really care about 686 vs 586?
8901e196c8SJohn Marino	esac
9001e196c8SJohn Marino        ;;
9101e196c8SJohn Marinoesac
9201e196c8SJohn Marino
9301e196c8SJohn MarinoMACHINE=${MACHINE:-$OS$OSMAJOR}
9401e196c8SJohn MarinoMACHINE_ARCH=${MACHINE_ARCH:-$machine}
9501e196c8SJohn Marino
9601e196c8SJohn Marino(
9701e196c8SJohn Marinocase "$0" in
9801e196c8SJohn Marinoarch*)	echo $MACHINE_ARCH;;
9901e196c8SJohn Marino*)
10001e196c8SJohn Marino	case "$1" in
10101e196c8SJohn Marino	"")	echo $MACHINE;;
10201e196c8SJohn Marino	*)	echo $MACHINE_ARCH;;
10301e196c8SJohn Marino	esac
10401e196c8SJohn Marino	;;
10501e196c8SJohn Marinoesac
10601e196c8SJohn Marino) | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
107