xref: /freebsd/contrib/bmake/machine.sh (revision 3955d011f8d241ebed0fa997923e7566f5485c07)
1*3955d011SMarcel Moolenaar:
2*3955d011SMarcel Moolenaar# derrived from /etc/rc_d/os.sh
3*3955d011SMarcel Moolenaar
4*3955d011SMarcel Moolenaar# RCSid:
5*3955d011SMarcel Moolenaar#	$Id: machine.sh,v 1.16 2010/10/17 00:05:51 sjg Exp $
6*3955d011SMarcel Moolenaar#
7*3955d011SMarcel Moolenaar#	@(#) Copyright (c) 1994-2002 Simon J. Gerraty
8*3955d011SMarcel Moolenaar#
9*3955d011SMarcel Moolenaar#	This file is provided in the hope that it will
10*3955d011SMarcel Moolenaar#	be of use.  There is absolutely NO WARRANTY.
11*3955d011SMarcel Moolenaar#	Permission to copy, redistribute or otherwise
12*3955d011SMarcel Moolenaar#	use this file is hereby granted provided that
13*3955d011SMarcel Moolenaar#	the above copyright notice and this notice are
14*3955d011SMarcel Moolenaar#	left intact.
15*3955d011SMarcel Moolenaar#
16*3955d011SMarcel Moolenaar#	Please send copies of changes and bug-fixes to:
17*3955d011SMarcel Moolenaar#	sjg@crufty.net
18*3955d011SMarcel Moolenaar#
19*3955d011SMarcel Moolenaar
20*3955d011SMarcel MoolenaarOS=`uname`
21*3955d011SMarcel MoolenaarOSREL=`uname -r`
22*3955d011SMarcel MoolenaarOSMAJOR=`IFS=.; set $OSREL; echo $1`
23*3955d011SMarcel Moolenaarmachine=`uname -p 2>/dev/null || uname -m`
24*3955d011SMarcel MoolenaarMACHINE=
25*3955d011SMarcel Moolenaar
26*3955d011SMarcel Moolenaar# there is at least one case of `uname -p` outputting
27*3955d011SMarcel Moolenaar# a bunch of usless drivel
28*3955d011SMarcel Moolenaarcase "$machine" in
29*3955d011SMarcel Moolenaarunknown|*[!A-Za-z0-9_-]*)
30*3955d011SMarcel Moolenaar        machine=`uname -m`
31*3955d011SMarcel Moolenaar        ;;
32*3955d011SMarcel Moolenaaresac
33*3955d011SMarcel Moolenaar
34*3955d011SMarcel Moolenaar# Great! Solaris keeps moving arch(1)
35*3955d011SMarcel Moolenaar# we need this here, and it is not always available...
36*3955d011SMarcel MoolenaarWhich() {
37*3955d011SMarcel Moolenaar	# some shells cannot correctly handle `IFS`
38*3955d011SMarcel Moolenaar	# in conjunction with the for loop.
39*3955d011SMarcel Moolenaar	_dirs=`IFS=:; echo ${2:-$PATH}`
40*3955d011SMarcel Moolenaar	for d in $_dirs
41*3955d011SMarcel Moolenaar	do
42*3955d011SMarcel Moolenaar		test -x $d/$1 && { echo $d/$1; break; }
43*3955d011SMarcel Moolenaar	done
44*3955d011SMarcel Moolenaar}
45*3955d011SMarcel Moolenaar
46*3955d011SMarcel Moolenaarcase $OS in
47*3955d011SMarcel MoolenaarOpenBSD)
48*3955d011SMarcel Moolenaar	MACHINE=$OS$OSMAJOR.$machine
49*3955d011SMarcel Moolenaar	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
50*3955d011SMarcel Moolenaar	MACHINE_ARCH=`$arch -s`;
51*3955d011SMarcel Moolenaar	;;
52*3955d011SMarcel Moolenaar*BSD)
53*3955d011SMarcel Moolenaar	MACHINE=$OS$OSMAJOR.$machine
54*3955d011SMarcel Moolenaar	;;
55*3955d011SMarcel MoolenaarSunOS)
56*3955d011SMarcel Moolenaar	arch=`Which arch /usr/bin:/usr/ucb:$PATH`
57*3955d011SMarcel Moolenaar	test "$arch" && machine_arch=`$arch`
58*3955d011SMarcel Moolenaar
59*3955d011SMarcel Moolenaar	case "$OSREL" in
60*3955d011SMarcel Moolenaar	4.0*) MACHINE_ARCH=$machine_arch MACHINE=$machine_arch;;
61*3955d011SMarcel Moolenaar	4*) MACHINE_ARCH=$machine_arch;;
62*3955d011SMarcel Moolenaar	esac
63*3955d011SMarcel Moolenaar	;;
64*3955d011SMarcel MoolenaarHP-UX)
65*3955d011SMarcel Moolenaar	MACHINE_ARCH=`IFS="/-."; set $machine; echo $1`
66*3955d011SMarcel Moolenaar	;;
67*3955d011SMarcel MoolenaarInterix)
68*3955d011SMarcel Moolenaar	MACHINE=i386
69*3955d011SMarcel Moolenaar	MACHINE_ARCH=i386
70*3955d011SMarcel Moolenaar	;;
71*3955d011SMarcel MoolenaarUnixWare)
72*3955d011SMarcel Moolenaar	OSREL=`uname -v`
73*3955d011SMarcel Moolenaar	OSMAJOR=`IFS=.; set $OSREL; echo $1`
74*3955d011SMarcel Moolenaar	MACHINE_ARCH=`uname -m`
75*3955d011SMarcel Moolenaar	;;
76*3955d011SMarcel MoolenaarLinux)
77*3955d011SMarcel Moolenaar        case "$machine" in
78*3955d011SMarcel Moolenaar	i?86) MACHINE_ARCH=i386;;# does anyone really care about 686 vs 586?
79*3955d011SMarcel Moolenaar	esac
80*3955d011SMarcel Moolenaar        ;;
81*3955d011SMarcel Moolenaaresac
82*3955d011SMarcel Moolenaar
83*3955d011SMarcel MoolenaarMACHINE=${MACHINE:-$OS$OSMAJOR}
84*3955d011SMarcel MoolenaarMACHINE_ARCH=${MACHINE_ARCH:-$machine}
85*3955d011SMarcel Moolenaar
86*3955d011SMarcel Moolenaar(
87*3955d011SMarcel Moolenaarcase "$0" in
88*3955d011SMarcel Moolenaararch*)	echo $MACHINE_ARCH;;
89*3955d011SMarcel Moolenaar*)
90*3955d011SMarcel Moolenaar	case "$1" in
91*3955d011SMarcel Moolenaar	"")	echo $MACHINE;;
92*3955d011SMarcel Moolenaar	*)	echo $MACHINE_ARCH;;
93*3955d011SMarcel Moolenaar	esac
94*3955d011SMarcel Moolenaar	;;
95*3955d011SMarcel Moolenaaresac
96*3955d011SMarcel Moolenaar) | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
97