1#!/bin/sh
2
3# Copyright (c) 1993 Eric P. Allman
4# Copyright (c) 1993 The Regents of the University of California.
5# All rights reserved.
6#
7# %sccs.include.redist.sh%
8#
9#       @(#)makesendmail	8.20 (Berkeley) 04/26/95
10#
11
12#
13#  A quick-and-dirty script to compile sendmail in the presence of
14#  multiple architectures and Makefiles.
15#
16
17if [ -d /LocalApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
18then
19	# probably a NeXT box
20	arch=NeXT
21	os=Mach
22	rel=`strings /mach | grep 'Mach.*:' | sed -e 's/.* Mach //' -e 's/:.*//'`
23else
24	arch=`uname -m | sed -e 's/ //g'`
25	os=`uname -s | sed 's/\//-/g'`
26	rel=`uname -r`
27fi
28
29# tweak machine architecture
30case $arch
31in
32  sun4*)	arch=sun4;;
33
34  9000/*)	arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
35esac
36
37# tweak operating system type and release
38case $os
39in
40  DYNIX-ptx)	os=PTX;;
41  Paragon*)	os=Paragon;;
42  HP-UX)	rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
43esac
44
45# get "base part" of operating system release
46rbase=`echo $rel | sed -e 's/\..*//'`
47
48# heuristic tweaks to clean up names
49if [ "$os" = "unix" ]
50then
51	# might be Altos System V
52	case $rel
53	in
54	  5.3*)		os=Altos;;
55	esac
56fi
57
58if [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
59then
60	# might be a DYNIX/ptx 2.x system, which has a broken uname
61	if strings /lib/cpp | grep _SEQUENT_ > /dev/null
62	then
63		os=PTX
64	fi
65fi
66
67# see if there is a "user suffix" specified
68if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
69then
70	sfx=""
71else
72	sfx=".${SENDMAIL_SUFFIX}"
73fi
74
75echo "Making sendmail with os=$os, rel=$rel, rbase=$rbase, arch=$arch, sfx=$sfx"
76
77# now try to find a reasonable object directory
78if [ -r obj.$os.$rel.$arch$sfx ]; then
79	obj=obj.$os.$rel.$arch$sfx
80elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
81	obj=obj.$os.$rbase.x.$arch$sfx
82elif [ -r obj.$os.$rel$sfx ]; then
83	obj=obj.$os.$rel$sfx
84elif [ -r obj.$os.$rbase.x$sfx ]; then
85	obj=obj.$os.$rbase.x$sfx
86elif [ -r obj.$os.$arch$sfx ]; then
87	obj=obj.$os.$arch$sfx
88elif [ -r obj.$rel.$arch$sfx ]; then
89	obj=obj.$rel.$arch$sfx
90elif [ -r obj.$rbase.x.$arch$sfx ]; then
91	obj=obj.$rbase.x.$arch$sfx
92elif [ -r obj.$os$sfx ]; then
93	obj=obj.$os$sfx
94elif [ -r obj.$arch$sfx ]; then
95	obj=obj.$arch$sfx
96elif [ -r obj.$rel$sfx ]; then
97	obj=obj.$rel$sfx
98elif [ -r obj$sfx ]; then
99	obj=obj$sfx
100else
101	# no existing obj directory -- try to create one if Makefile found
102	obj=obj.$os.$rel.$arch$sfx
103	if [ -r Makefiles/Makefile.$os.$rel.$arch$sfx ]; then
104		makefile=Makefile.$os.$rel.$arch$sfx
105	elif [ -r Makefiles/Makefile.$os.$rel.$arch ]; then
106		makefile=Makefile.$os.$rel.$arch
107	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch$sfx ]; then
108		makefile=Makefile.$os.$rbase.x.$arch$sfx
109	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch ]; then
110		makefile=Makefile.$os.$rbase.x.$arch
111	elif [ -r Makefiles/Makefile.$os.$rel$sfx ]; then
112		makefile=Makefile.$os.$rel$sfx
113	elif [ -r Makefiles/Makefile.$os.$rel ]; then
114		makefile=Makefile.$os.$rel
115	elif [ -r Makefiles/Makefile.$os.$rbase.x$sfx ]; then
116		makefile=Makefile.$os.$rbase.x$sfx
117	elif [ -r Makefiles/Makefile.$os.$rbase.x ]; then
118		makefile=Makefile.$os.$rbase.x
119	elif [ -r Makefiles/Makefile.$os.$arch$sfx ]; then
120		makefile=Makefile.$os.$arch$sfx
121	elif [ -r Makefiles/Makefile.$os.$arch ]; then
122		makefile=Makefile.$os.$arch
123	elif [ -r Makefiles/Makefile.$rel.$arch$sfx ]; then
124		makefile=Makefile.$rel.$arch$sfx
125	elif [ -r Makefiles/Makefile.$rel.$arch ]; then
126		makefile=Makefile.$rel.$arch
127	elif [ -r Makefiles/Makefile.$rbase.x.$arch$sfx ]; then
128		makefile=Makefile.$rbase.x.$arch$sfx
129	elif [ -r Makefiles/Makefile.$rbase.x.$arch ]; then
130		makefile=Makefile.$rbase.x.$arch
131	elif [ -r Makefiles/Makefile.$os$sfx ]; then
132		makefile=Makefile.$os$sfx
133	elif [ -r Makefiles/Makefile.$os ]; then
134		makefile=Makefile.$os
135	elif [ -r Makefiles/Makefile.$arch$sfx ]; then
136		makefile=Makefile.$arch$sfx
137	elif [ -r Makefiles/Makefile.$arch ]; then
138		makefile=Makefile.$arch
139	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
140		makefile=Makefile.$rel$sfx
141	elif [ -r Makefiles/Makefile.$rel ]; then
142		makefile=Makefile.$rel
143	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
144		makefile=Makefile.$rel$sfx
145	else
146		echo "Cannot determine how to support $arch.$os.$rel"
147		exit 1
148	fi
149	echo "Creating $obj using $makefile"
150	mkdir $obj
151	(cd $obj; ln -s ../*.[ch158] ../sendmail.hf .; ln -s ../Makefiles/$makefile Makefile)
152fi
153echo "Making in $obj"
154cd $obj
155if [ $# = 0 ]
156then
157	exec ${MAKE-make}
158else
159	exec ${MAKE-make} "$@"
160fi
161