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