xref: /freebsd/contrib/bmake/machine.sh (revision 28a6bc8146c375222cee5fa52e752a99b921479b)
13955d011SMarcel Moolenaar:
23955d011SMarcel Moolenaar# derrived from /etc/rc_d/os.sh
33955d011SMarcel Moolenaar
43955d011SMarcel Moolenaar# RCSid:
5*28a6bc81SSimon J. Gerraty#	$Id: machine.sh,v 1.17 2015/05/05 00:10:54 sjg Exp $
63955d011SMarcel Moolenaar#
73955d011SMarcel Moolenaar#	@(#) Copyright (c) 1994-2002 Simon J. Gerraty
83955d011SMarcel Moolenaar#
93955d011SMarcel Moolenaar#	This file is provided in the hope that it will
103955d011SMarcel Moolenaar#	be of use.  There is absolutely NO WARRANTY.
113955d011SMarcel Moolenaar#	Permission to copy, redistribute or otherwise
123955d011SMarcel Moolenaar#	use this file is hereby granted provided that
133955d011SMarcel Moolenaar#	the above copyright notice and this notice are
143955d011SMarcel Moolenaar#	left intact.
153955d011SMarcel Moolenaar#
163955d011SMarcel Moolenaar#	Please send copies of changes and bug-fixes to:
173955d011SMarcel Moolenaar#	sjg@crufty.net
183955d011SMarcel Moolenaar#
193955d011SMarcel Moolenaar
203955d011SMarcel MoolenaarOS=`uname`
213955d011SMarcel MoolenaarOSREL=`uname -r`
223955d011SMarcel MoolenaarOSMAJOR=`IFS=.; set $OSREL; echo $1`
233955d011SMarcel Moolenaarmachine=`uname -p 2>/dev/null || uname -m`
243955d011SMarcel MoolenaarMACHINE=
253955d011SMarcel Moolenaar
263955d011SMarcel Moolenaar# there is at least one case of `uname -p` outputting
273955d011SMarcel Moolenaar# a bunch of usless drivel
283955d011SMarcel Moolenaarcase "$machine" in
293955d011SMarcel Moolenaarunknown|*[!A-Za-z0-9_-]*)
303955d011SMarcel Moolenaar        machine=`uname -m`
313955d011SMarcel Moolenaar        ;;
323955d011SMarcel Moolenaaresac
333955d011SMarcel Moolenaar
343955d011SMarcel Moolenaar# Great! Solaris keeps moving arch(1)
353955d011SMarcel Moolenaar# we need this here, and it is not always available...
363955d011SMarcel MoolenaarWhich() {
373955d011SMarcel Moolenaar	# some shells cannot correctly handle `IFS`
383955d011SMarcel Moolenaar	# in conjunction with the for loop.
393955d011SMarcel Moolenaar	_dirs=`IFS=:; echo ${2:-$PATH}`
403955d011SMarcel Moolenaar	for d in $_dirs
413955d011SMarcel Moolenaar	do
423955d011SMarcel Moolenaar		test -x $d/$1 && { echo $d/$1; break; }
433955d011SMarcel Moolenaar	done
443955d011SMarcel Moolenaar}
453955d011SMarcel Moolenaar
463955d011SMarcel Moolenaarcase $OS in
473955d011SMarcel MoolenaarOpenBSD)
483955d011SMarcel Moolenaar	MACHINE=$OS$OSMAJOR.$machine
493955d011SMarcel Moolenaar	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
503955d011SMarcel Moolenaar	MACHINE_ARCH=`$arch -s`;
513955d011SMarcel Moolenaar	;;
52*28a6bc81SSimon J. GerratyBitrig)
53*28a6bc81SSimon J. Gerraty	MACHINE=$OS$OSMAJOR.$machine
54*28a6bc81SSimon J. Gerraty	MACHINE_ARCH=`uname -m`;
55*28a6bc81SSimon J. Gerraty	;;
563955d011SMarcel Moolenaar*BSD)
573955d011SMarcel Moolenaar	MACHINE=$OS$OSMAJOR.$machine
583955d011SMarcel Moolenaar	;;
593955d011SMarcel MoolenaarSunOS)
603955d011SMarcel Moolenaar	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
613955d011SMarcel Moolenaar	test "$arch" && machine_arch=`$arch`
623955d011SMarcel Moolenaar
633955d011SMarcel Moolenaar	case "$OSREL" in
643955d011SMarcel Moolenaar	4.0*) MACHINE_ARCH=$machine_arch MACHINE=$machine_arch;;
653955d011SMarcel Moolenaar	4*) MACHINE_ARCH=$machine_arch;;
663955d011SMarcel Moolenaar	esac
673955d011SMarcel Moolenaar	;;
683955d011SMarcel MoolenaarHP-UX)
693955d011SMarcel Moolenaar	MACHINE_ARCH=`IFS="/-."; set $machine; echo $1`
703955d011SMarcel Moolenaar	;;
713955d011SMarcel MoolenaarInterix)
723955d011SMarcel Moolenaar	MACHINE=i386
733955d011SMarcel Moolenaar	MACHINE_ARCH=i386
743955d011SMarcel Moolenaar	;;
753955d011SMarcel MoolenaarUnixWare)
763955d011SMarcel Moolenaar	OSREL=`uname -v`
773955d011SMarcel Moolenaar	OSMAJOR=`IFS=.; set $OSREL; echo $1`
783955d011SMarcel Moolenaar	MACHINE_ARCH=`uname -m`
793955d011SMarcel Moolenaar	;;
803955d011SMarcel MoolenaarLinux)
813955d011SMarcel Moolenaar        case "$machine" in
823955d011SMarcel Moolenaar	i?86) MACHINE_ARCH=i386;;# does anyone really care about 686 vs 586?
833955d011SMarcel Moolenaar	esac
843955d011SMarcel Moolenaar        ;;
853955d011SMarcel Moolenaaresac
863955d011SMarcel Moolenaar
873955d011SMarcel MoolenaarMACHINE=${MACHINE:-$OS$OSMAJOR}
883955d011SMarcel MoolenaarMACHINE_ARCH=${MACHINE_ARCH:-$machine}
893955d011SMarcel Moolenaar
903955d011SMarcel Moolenaar(
913955d011SMarcel Moolenaarcase "$0" in
923955d011SMarcel Moolenaararch*)	echo $MACHINE_ARCH;;
933955d011SMarcel Moolenaar*)
943955d011SMarcel Moolenaar	case "$1" in
953955d011SMarcel Moolenaar	"")	echo $MACHINE;;
963955d011SMarcel Moolenaar	*)	echo $MACHINE_ARCH;;
973955d011SMarcel Moolenaar	esac
983955d011SMarcel Moolenaar	;;
993955d011SMarcel Moolenaaresac
1003955d011SMarcel Moolenaar) | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
101