164269Seric#!/bin/sh
264269Seric
364269Seric# Copyright (c) 1993 Eric P. Allman
464269Seric# Copyright (c) 1993 The Regents of the University of California.
564269Seric# All rights reserved.
664269Seric#
764269Seric# %sccs.include.redist.sh%
864269Seric#
9*68746Seric#       @(#)makesendmail	8.16 (Berkeley) 04/08/95
1064269Seric#
1164269Seric
1264269Seric#
1364269Seric#  A quick-and-dirty script to compile sendmail in the presence of
1464269Seric#  multiple architectures and Makefiles.
1564269Seric#
1664269Seric
1768154Sericif [ -d /LocalApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
1868154Sericthen
1968154Seric	# probably a NeXT box
2068154Seric	arch=NeXT
2168154Seric	os=Mach
2268154Seric	rel=`strings /mach | grep Mach | sed -e 's/.* Mach //' -e 's/:.*//'`
2368154Sericelse
2468154Seric	arch=`uname -m | sed -e 's/ //g'`
2568154Seric	os=`uname -s`
2668154Seric	rel=`uname -r`
2768154Sericfi
2868154Seric
2968154Seric# tweak machine architecture
3064269Sericcase $arch
3164269Sericin
3264269Seric  sun4*)	arch=sun4;;
3365868Seric
3465868Seric  9000/*)	arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
3564269Sericesac
3664269Seric
3768154Seric# tweak operating system type
3868032Sericcase $os
3968032Sericin
4068032Seric  DYNIX/ptx)	os=PTX;;
4168084Seric  Paragon*)	os=Paragon;;
4268032Sericesac
4364269Seric
4468154Seric# tweak operating system release
4565868Sericrbase=`echo $rel | sed 's/\..*//''`
4664269Seric
4768032Seric# heuristic tweaks to clean up names
4868040Sericif [ "$os" = "unix" ]
4968040Sericthen
5068040Seric	# might be Altos System V
5168040Seric	case $rel
5268040Seric	in
5368040Seric	  5.3*)		os=Altos;;
5468040Seric	esac
5568090Sericfi
5668040Seric
5768032Sericif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
5868032Sericthen
5968032Seric	# might be a DYNIX/ptx 2.x system, which has a broken uname
6068032Seric	if strings /lib/cpp | grep _SEQUENT_ > /dev/null
6168032Seric	then
6268032Seric		os=PTX
6368032Seric	fi
6468032Sericfi
6568032Seric
66*68746Seric# see if there is a "user suffix" specified
67*68746Sericif [ "${SUFFIX-}x" = "x" ]
68*68746Sericthen
69*68746Seric	sfx=""
70*68746Sericelse
71*68746Seric	sfx=".${SUFFIX}"
72*68746Sericfi
73*68746Seric
7464269Seric# now try to find a reasonable object directory
75*68746Sericif [ -r obj.$os.$rel.$arch$sfx ]; then
76*68746Seric	obj=obj.$os.$rel.$arch$sfx
77*68746Sericelif [ -r obj.$os.$rel.$arch ]; then
7868588Seric	obj=obj.$os.$rel.$arch
79*68746Sericelif [ -r obj.$os.$rbase.x.$arch$sfx ]; then
80*68746Seric	obj=obj.$os.$rbase.x.$arch$sfx
8168588Sericelif [ -r obj.$os.$rbase.x.$arch ]; then
8268588Seric	obj=obj.$os.$rbase.x.$arch
83*68746Sericelif [ -r obj.$os.$rel$sfx ]; then
84*68746Seric	obj=obj.$os.$rel$sfx
8564269Sericelif [ -r obj.$os.$rel ]; then
8664269Seric	obj=obj.$os.$rel
87*68746Sericelif [ -r obj.$os.$rbase.x$sfx ]; then
88*68746Seric	obj=obj.$os.$rbase.x$sfx
8965868Sericelif [ -r obj.$os.$rbase.x ]; then
9065868Seric	obj=obj.$os.$rbase.x
91*68746Sericelif [ -r obj.$os.$arch$sfx ]; then
92*68746Seric	obj=obj.$os.$arch$sfx
9364269Sericelif [ -r obj.$os.$arch ]; then
9464269Seric	obj=obj.$os.$arch
95*68746Sericelif [ -r obj.$rel.$arch$sfx ]; then
96*68746Seric	obj=obj.$rel.$arch$sfx
9768588Sericelif [ -r obj.$rel.$arch ]; then
9868588Seric	obj=obj.$rel.$arch
99*68746Sericelif [ -r obj.$rbase.x.$arch$sfx ]; then
100*68746Seric	obj=obj.$rbase.x.$arch$sfx
10168588Sericelif [ -r obj.$rbase.x.$arch ]; then
10268588Seric	obj=obj.$rbase.x.$arch
103*68746Sericelif [ -r obj.$os$sfx ]; then
104*68746Seric	obj=obj.$os$sfx
10564269Sericelif [ -r obj.$os ]; then
10664269Seric	obj=obj.$os
107*68746Sericelif [ -r obj.$arch$sfx ]; then
108*68746Seric	obj=obj.$arch$sfx
10964269Sericelif [ -r obj.$arch ]; then
11064269Seric	obj=obj.$arch
111*68746Sericelif [ -r obj.$rel$sfx ]; then
112*68746Seric	obj=obj.$rel$sfx
11364269Sericelif [ -r obj.$rel ]; then
11464269Seric	obj=obj.$rel
115*68746Sericelif [ -r obj$sfx ]; then
116*68746Seric	obj=obj$sfx
11765868Sericelse
11865868Seric	# no existing obj directory -- try to create one if Makefile found
119*68746Seric	obj=obj.$os.$rel.$arch$sfx
120*68746Seric	if [ -r Makefiles/Makefile.$os.$rel.$arch$sfx ]; then
121*68746Seric		makefile=Makefile.$os.$rel.$arch$sfx
122*68746Seric	elif [ -r Makefiles/Makefile.$os.$rel.$arch ]; then
12368588Seric		makefile=Makefile.$os.$rel.$arch
124*68746Seric	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch$sfx ]; then
125*68746Seric		makefile=Makefile.$os.$rbase.x.$arch$sfx
12668588Seric	elif [ -r Makefiles/Makefile.$os.$rbase.x.$arch ]; then
12768588Seric		makefile=Makefile.$os.$rbase.x.$arch
128*68746Seric	elif [ -r Makefiles/Makefile.$os.$rel$sfx ]; then
129*68746Seric		makefile=Makefile.$os.$rel$sfx
13067855Seric	elif [ -r Makefiles/Makefile.$os.$rel ]; then
13165868Seric		makefile=Makefile.$os.$rel
132*68746Seric	elif [ -r Makefiles/Makefile.$os.$rbase.x$sfx ]; then
133*68746Seric		makefile=Makefile.$os.$rbase.x$sfx
13467855Seric	elif [ -r Makefiles/Makefile.$os.$rbase.x ]; then
13566281Seric		makefile=Makefile.$os.$rbase.x
136*68746Seric	elif [ -r Makefiles/Makefile.$os.$arch$sfx ]; then
137*68746Seric		makefile=Makefile.$os.$arch$sfx
13867855Seric	elif [ -r Makefiles/Makefile.$os.$arch ]; then
13965868Seric		makefile=Makefile.$os.$arch
140*68746Seric	elif [ -r Makefiles/Makefile.$rel.$arch$sfx ]; then
141*68746Seric		makefile=Makefile.$rel.$arch$sfx
14268588Seric	elif [ -r Makefiles/Makefile.$rel.$arch ]; then
14368588Seric		makefile=Makefile.$rel.$arch
144*68746Seric	elif [ -r Makefiles/Makefile.$rbase.x.$arch$sfx ]; then
145*68746Seric		makefile=Makefile.$rbase.x.$arch$sfx
14668588Seric	elif [ -r Makefiles/Makefile.$rbase.x.$arch ]; then
14768588Seric		makefile=Makefile.$rbase.x.$arch
148*68746Seric	elif [ -r Makefiles/Makefile.$os$sfx ]; then
149*68746Seric		makefile=Makefile.$os$sfx
15067855Seric	elif [ -r Makefiles/Makefile.$os ]; then
15165868Seric		makefile=Makefile.$os
152*68746Seric	elif [ -r Makefiles/Makefile.$arch$sfx ]; then
153*68746Seric		makefile=Makefile.$arch$sfx
15467855Seric	elif [ -r Makefiles/Makefile.$arch ]; then
15565868Seric		makefile=Makefile.$arch
156*68746Seric	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
157*68746Seric		makefile=Makefile.$rel$sfx
15867855Seric	elif [ -r Makefiles/Makefile.$rel ]; then
15965868Seric		makefile=Makefile.$rel
160*68746Seric	elif [ -r Makefiles/Makefile.$rel$sfx ]; then
161*68746Seric		makefile=Makefile.$rel$sfx
16265868Seric	else
16365868Seric		echo "Cannot determine how to support $arch.$os.$rel"
16465868Seric		exit 1
16565868Seric	fi
16665868Seric	echo "Creating $obj using $makefile"
16764269Seric	mkdir $obj
16867855Seric	(cd $obj; ln -s ../*.[ch158] ../sendmail.hf .; ln -s ../Makefiles/$makefile Makefile)
16964269Sericfi
17064269Sericecho "Making in $obj"
17164269Sericcd $obj
17268143Sericif [ $# = 0 ]
17368143Sericthen
17468143Seric	exec ${MAKE-make}
17568143Sericelse
17668143Seric	exec ${MAKE-make} "$@"
17768143Sericfi
178