Install PCRE 6.7 in in place of 6.2.
[exim.git] / src / scripts / os-type
CommitLineData
61ec970d 1#! /bin/sh
e49c7bb4 2# $Cambridge: exim/src/scripts/os-type,v 1.5 2006/03/16 14:00:50 ph10 Exp $
61ec970d
PH
3
4# Shell script to determine the operating system type. Some of the heuristics
5# herein have accumulated over the years and may not strictly be needed now,
6# but they are left in under the principle of "If it ain't broke, don't fix
7# it."
8
9# For some OS there are two variants: a full name, which is used for the
10# build directory, and a generic name, which is used to identify the OS-
11# specific scripts, and which can be the same for different versions of
12# the OS. Solaris 2 is one such OS. The option -generic specifies the
13# latter type of output.
14
15# If EXIM_OSTYPE is set, use it. This allows a manual override.
16
17case "$EXIM_OSTYPE" in ?*) os="$EXIM_OSTYPE";; esac
18
19# Otherwise, try to get a value from the uname command. Use an explicit
20# option just in case there are any systems where -s is not the default.
21
22case "$os" in '') os=`uname -s`;; esac
23
6e2b4ccc
PH
24# Identify Glibc systems under different names.
25
bebaf0fc
PH
26case "$os" in GNU) os=GNU;; esac
27case "$os" in GNU/*|Linux) os=Linux;; esac
6e2b4ccc 28
61ec970d
PH
29# It is believed that all systems respond to uname -s, but just in case
30# there is one that doesn't, use the shell's $OSTYPE variable. It is known
31# to be unhelpful for some systems (under IRIX is it "irix" and under BSDI
32# 3.0 it may be "386BSD") but those systems respond to uname -s, so this
33# doesn't matter.
34
35case "$os" in '') os="$OSTYPE";; esac
36
37# Failed to find OS type.
38
39case "$os" in
40'') echo "" 1>&2
41 echo "*** Failed to determine the operating system type." 1>&2
42 echo "" 1>&2
43 echo UnKnown
44 exit 1;;
45esac
46
47# Clean out gash characters
48
49os=`echo $os | sed 's,[^-+_.a-zA-Z0-9],,g'`
50
51# A value has been obtained for the os. Some massaging may be needed in
52# some cases to get a uniform set of values. In earlier versions of this
53# script, $OSTYPE was looked at before uname -s, and various shells set it
54# to things that are subtly different. It is possible that some of this may
55# no longer be needed.
56
57case "$os" in
58aix*) os=AIX;;
59AIX*) os=AIX;;
60bsdi*) os=BSDI;;
61BSDOS) os=BSDI;;
62BSD_OS) os=BSDI;;
63CYGWIN*) os=CYGWIN;;
64dgux) os=DGUX;;
65freebsd*) os=FreeBSD;;
66gnu) os=GNU;;
67Irix5) os=IRIX;;
68Irix6) os=IRIX6;;
69IRIX64) os=IRIX6;;
70irix6.5) os=IRIX65;;
71IRIX) version=`uname -r`
72 case "$version" in
73 5*) os=IRIX;;
74 6.5) version=`uname -R | awk '{print $NF}'`
75 version=`echo $version | sed 's,[^-+_a-zA-Z0-9],,g'`
76 os=IRIX$version;;
77 6*) os=IRIX632;;
78 esac;;
79HI-OSF1-MJ) os=HI-OSF;;
80HI-UXMPP) os=HI-OSF;;
81hpux*) os=HP-UX;;
82linux) os=Linux;;
83linux-*) os=Linux;;
84Linux-*) os=Linux;;
85netbsd*) os=NetBSD;;
e49c7bb4
PH
86NetBSD*) version=`uname -r`
87 case "$version" in
88 3.*) os=NetBSD3;;
89 *) os=NetBSD;;
90 esac;;
61ec970d
PH
91openbsd*) os=OpenBSD;;
92osf1) os=OSF1;;
93qnx*) os=QNX;;
94solaris*) os=SunOS5;;
95sunos4*) os=SunOS4;;
96UnixWare) os=Unixware7;;
97Ultrix) os=ULTRIX;;
98ultrix*) os=ULTRIX;;
99esac
100
101# In the case of SunOS we need to distinguish between SunOS4 and Solaris (aka
102# SunOS5); in the case of BSDI we need to distinguish between versions 3 and 4;
103# in the case of HP-UX we need to distinguish between version 9 and later.
104
105case "$os" in
106SunOS) case `uname -r` in
107 5*) os="${os}5";;
108 4*) os="${os}4";;
109 esac;;
110
111BSDI) case `uname -r` in
112 3*) os="${os}3";;
113 4.2*) os="${os}4.2";;
114 4*) os="${os}4";;
115 esac;;
116
117HP-UX) case `uname -r` in
118 A.09*) os="${os}-9";;
119 esac;;
120esac
121
122# Need to distinguish Solaris from the version on the HAL (64bit sparc,
123# CC=hcc -DV7). Also need to distinguish different versions of the OS
124# for building different binaries.
125
126case "$os" in
127SunOS5) case `uname -m` in
128 sun4H) os="${os}-hal";;
129 *) os="${os}-`uname -r`";;
130 esac
131 ;;
132
e7ad8a65
PH
133# In the case of Linux we used to distinguish which libc was used so that
134# the old libc5 was supported as well as the current glibc. This support
135# was giving some people problems, so it was removed in June 2005, under
136# the assumption that nobody would be using libc5 any more (it is over seven
137# years old).
61ec970d
PH
138
139# In the case of NetBSD we need to distinguish between a.out, ELF
140# and COFF binary formats. However, a.out and COFF are the same
141# for our purposes, so both of them are defined as "a.out".
142# Todd Vierling of Wasabi Systems reported that NetBSD/sh3 (the
143# only NetBSD port that uses COFF binary format) will switch to
144# ELF soon.
145
146NetBSD) if echo __ELF__ | ${CC-cc} -E - | grep -q __ELF__ ; then
bebaf0fc
PH
147 # Non-ELF system
148 os="NetBSD-a.out"
149 fi
61ec970d
PH
150 ;;
151
152esac
153
154# If a generic OS name is requested, some further massaging is needed
155# for some systems.
156
157if [ "$1" = '-generic' ]; then
158 case "$os" in
159 SunOS5*) os=SunOS5;;
160 BSDI*) os=BSDI;;
161 IRIX65*) os=IRIX65;;
162 esac
163fi
164
165# OK, the script seems to have worked. Pass the value back.
166
167echo "$os"
168
169# End of os-type