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.18 (Berkeley) 04/10/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
38case $os
39in
40  DYNIX-ptx)	os=PTX;;
41  Paragon*)	os=Paragon;;
42esac
43
44# tweak operating system release
45rbase=`echo $rel | sed 's/\..*//''`
46
47# heuristic tweaks to clean up names
48if [ "$os" = "unix" ]
49then
50	# might be Altos System V
51	case $rel
52	in
53	  5.3*)		os=Altos;;
54	esac
55fi
56
57if [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
58then
59	# might be a DYNIX/ptx 2.x system, which has a broken uname
60	if strings /lib/cpp | grep _SEQUENT_ > /dev/null
61	then
62		os=PTX
63	fi
64fi
65
66# see if there is a "user suffix" specified
67if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
68then
69	sfx=""
70else
71	sfx=".${SENDMAIL_SUFFIX}"
72fi
73
74# now try to find a reasonable object directory
75if [ -r obj.$os.$rel.$arch$sfx ]; then
76	obj=obj.$os.$rel.$arch$sfx
77elif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
78	obj=obj.$os.$rbase.x.$arch$sfx
79elif [ -r obj.$os.$rel$sfx ]; then
80	obj=obj.$os.$rel$sfx
81elif [ -r obj.$os.$rbase.x$sfx ]; then
82	obj=obj.$os.$rbase.x$sfx
83elif [ -r obj.$os.$arch$sfx ]; then
84	obj=obj.$os.$arch$sfx
85elif [ -r obj.$rel.$arch$sfx ]; then
86	obj=obj.$rel.$arch$sfx
87elif [ -r obj.$rbase.x.$arch$sfx ]; then
88	obj=obj.$rbase.x.$arch$sfx
89elif [ -r obj.$os$sfx ]; then
90	obj=obj.$os$sfx
91elif [ -r obj.$arch$sfx ]; then
92	obj=obj.$arch$sfx
93elif [ -r obj.$rel$sfx ]; then
94	obj=obj.$rel$sfx
95elif [ -r obj$sfx ]; then
96	obj=obj$sfx
97else
98	# no existing obj directory -- try to create one if Makefile found
99	obj=obj.$os.$rel.$arch$sfx
100	if [ -r Makefiles/Makefile.$os.$rel.$arch$sfx ]; then
101		makefile=Makefile.$os.$rel.$arch$sfx
102	elif [ -r Makefiles/Makefile.$os.$rel.$arch ]; then
103		makefile=Makefile.$os.$rel.$arch
104	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch$sfx ]; then
105		makefile=Makefile.$os.$rbase.x.$arch$sfx
106	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch ]; then
107		makefile=Makefile.$os.$rbase.x.$arch
108	elif [ -r Makefiles/Makefile.$os.$rel$sfx ]; then
109		makefile=Makefile.$os.$rel$sfx
110	elif [ -r Makefiles/Makefile.$os.$rel ]; then
111		makefile=Makefile.$os.$rel
112	elif [ -r Makefiles/Makefile.$os.$rbase.x$sfx ]; then
113		makefile=Makefile.$os.$rbase.x$sfx
114	elif [ -r Makefiles/Makefile.$os.$rbase.x ]; then
115		makefile=Makefile.$os.$rbase.x
116	elif [ -r Makefiles/Makefile.$os.$arch$sfx ]; then
117		makefile=Makefile.$os.$arch$sfx
118	elif [ -r Makefiles/Makefile.$os.$arch ]; then
119		makefile=Makefile.$os.$arch
120	elif [ -r Makefiles/Makefile.$rel.$arch$sfx ]; then
121		makefile=Makefile.$rel.$arch$sfx
122	elif [ -r Makefiles/Makefile.$rel.$arch ]; then
123		makefile=Makefile.$rel.$arch
124	elif [ -r Makefiles/Makefile.$rbase.x.$arch$sfx ]; then
125		makefile=Makefile.$rbase.x.$arch$sfx
126	elif [ -r Makefiles/Makefile.$rbase.x.$arch ]; then
127		makefile=Makefile.$rbase.x.$arch
128	elif [ -r Makefiles/Makefile.$os$sfx ]; then
129		makefile=Makefile.$os$sfx
130	elif [ -r Makefiles/Makefile.$os ]; then
131		makefile=Makefile.$os
132	elif [ -r Makefiles/Makefile.$arch$sfx ]; then
133		makefile=Makefile.$arch$sfx
134	elif [ -r Makefiles/Makefile.$arch ]; then
135		makefile=Makefile.$arch
136	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
137		makefile=Makefile.$rel$sfx
138	elif [ -r Makefiles/Makefile.$rel ]; then
139		makefile=Makefile.$rel
140	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
141		makefile=Makefile.$rel$sfx
142	else
143		echo "Cannot determine how to support $arch.$os.$rel"
144		exit 1
145	fi
146	echo "Creating $obj using $makefile"
147	mkdir $obj
148	(cd $obj; ln -s ../*.[ch158] ../sendmail.hf .; ln -s ../Makefiles/$makefile Makefile)
149fi
150echo "Making in $obj"
151cd $obj
152if [ $# = 0 ]
153then
154	exec ${MAKE-make}
155else
156	exec ${MAKE-make} "$@"
157fi
158