Fix a few shellisms, configure for Z80 traditional and ANSI C only
[Ack-5.5.git] / first / first
1 #! /bin/sh
2 case $0 in
3 */first)
4         FDIR=`expr $0 : '\(.*\)/first'`
5         ;;
6 first)  FDIR=.
7         ;;
8 esac
9
10 if echo 'a\c' | grep 'c' >/dev/null ; then
11         : We have BSD-like echo command.
12         E_FLAG='-n'
13         E_SFX=''
14 else
15         : We have SystemV-like echo command.
16         E_FLAG=''
17         E_SFX='\c'
18 fi
19 export E_FLAG E_SFX
20
21 echo check write-ability of /tmp and /usr/tmp ...
22 if ( >/usr/tmp/aaax.__ )
23 then
24         rm /usr/tmp/aaax.__
25 else
26         echo /usr/tmp must exist and be writable.
27         exit 2
28 fi
29 if ( >/tmp/aaax.__ )
30 then
31         rm /tmp/aaax.__
32 else
33         echo /tmp must exist and be writable.
34         exit 2
35 fi
36 echo "/tmp and /usr/tmp ok"
37
38 if [ -f macros ]
39 then
40         . macros
41 fi
42
43 : "Now get system name and directories"
44 . $FDIR/get_sys
45
46 : "Take action according to the system used"
47 BM=1
48 OLDACM=$ACM
49 OLDSYS=$SYS
50 case $SYSNAME in
51 vax_bsd4_1a)    ACM=vax4 ; SYS=BSD4_1 ; BYTE_ORDER=0123 ; MACH=vax4 ;;
52 vax_bsd4_2)     ACM=vax4 ; SYS=BSD4_2 ; BYTE_ORDER=0123 ; MACH=vax4 ;;
53 vax_sysV_2)     ACM=vax4 ; SYS=SYS_5 ; BYTE_ORDER=0123 ; MACH=vax4 ;;
54 i386)           ACM=i386 ; SYS=SYS_5 ; BYTE_ORDER=0123 ; MACH=i386 ;;
55 sun3)           ACM=sun3 ; SYS=BSD4_2; BYTE_ORDER=3210 ; MACH=m68020 ;;
56 sun2)           ACM=sun2 ; SYS=BSD4_2; BYTE_ORDER=3210 ; MACH=m68k4 ;;
57 m68_unisoft|m68k2)      ACM=m68k2 ; SYS=V7; BYTE_ORDER=3210 ; MACH=m68k2 ;;
58 m68_sysV_0|mantra)      ACM=mantra ; SYS=SYS_5; BYTE_ORDER=3210 ; MACH=m68k4 ;;
59 m68020)         ACM=m68020 ; SYS=SYS_5; BYTE_ORDER=3210 ; MACH=m68020 ;;
60 sparc)          ACM=sparc ; SYS=BSD4_2; BYTE_ORDER=3210 ; MACH=sparc ;;
61 sparc_solaris)  ACM=sparc_solaris ; SYS=SYS_5; BYTE_ORDER=3210 ; MACH=sparc_solaris ;;
62 i86)            ACM=i86 ; SYS=SYS_5; BYTE_ORDER=0123 ; MACH=i86 ;;
63 xenix3)         ACM=xenix3 ; SYS=SYS_5; BYTE_ORDER=0123 ; MACH=i86 ;;
64 minix)          ACM=minix ; SYS=V7; BYTE_ORDER=0123 ; MACH=i86 ;;
65 pmds)           ACM=pmds ; SYS=V7; BYTE_ORDER=3210 ; MACH=m68k2 ;;
66 pmds4)          ACM=pmds4 ; SYS=V7; BYTE_ORDER=3210 ; MACH=m68k4 ;;
67 minixST)        ACM=minixST ; SYS=V7; BYTE_ORDER=3210 ; MACH=m68k2 ;;
68 m68k4)          ACM=m68k4 ; SYS=V7; BYTE_ORDER=3210 ; MACH=m68k4 ;;
69 *)              ACM=XXX ; SYS=XXX ; BYTE_ORDER=XXX ; MACH=XXX ;;
70 esac
71
72 : do not change the order in MACH_LIST. check limit_enquire first.
73 MACH_LIST="i86 xenix3 minix i386 6500 6800 6805 6809 i80 em22 em24 em44 m68k2 pmds minixST m68k4 pmds4 sun2 mantra m68020 sun3 sparc sparc_solaris ns pdp s2650 vax4 z80 z8000 arm"
74
75 while :
76 do
77         for i in $MACH_LIST
78         do
79                 if [ $i = "$ACM" ]
80                 then break
81                 fi
82         done
83         if [ $i = "$ACM" ]
84         then break
85         fi
86         echo "This installation script has no knowledge about $SYSNAME.
87 You will have to specify the default machine that you want ACK to
88 compile for. Choices:"
89         l=
90         x=
91         for i in $MACH_LIST
92         do
93                 l="$l $i"
94                 x=x$x
95                 case $x in
96                 xxxxxxxxxx)     echo $l
97                                 x=
98                                 l=
99                                 ;;
100                 esac
101         done
102         ACM=$OLDACM
103         echo $l
104         echo $E_FLAG "Your choice: [$OLDACM] $E_SFX"
105         . $FDIR/get_answer
106         case $ANS in
107         '')     ANS="$ACM";;
108         esac
109         ACM="$ANS"
110 done
111 while :
112 do
113 case $SYS in
114 V7|BSD4_1|BSD4_2|SYS_5)
115         break
116         ;;
117 *)
118         SYS=$OLDSYS
119         echo 'What kind of Unix is the target system running?
120 Choices:
121         V7      for Unix V7, BSD 2.*
122         BSD4_1  for Berkeley 4.1
123         BSD4_2  for Berkeley 4.2, 4.3, SunOs 3, SunOs 4
124         SYS_5   for Xenix, System III, System V, SunOs 5'
125         echo $E_FLAG "Your choice (V7|BSD4_1|BSD4_2|SYS_5): [$OLDSYS] $E_SFX"
126         . $FDIR/get_answer
127         case $ANS in
128         '')     ANS="$SYS";;
129         esac
130         SYS="$ANS"
131         ;;
132 esac
133 done
134 rm -f local.h
135 sed -e /ACKM/s/'".*"'/'"'$ACM'"'/ -e /BIGMACH/s/'[01]'/$BM/ -e /SYSTEM/s/'^#[   ]*define[       ]*[a-zA-Z_][a-zA-Z0-9_]*'/"#    define $SYS"/ < $FDIR/local.h.src >local.h
136 case $BYTE_ORDER in
137 XXX)    ;;
138 *)      echo '/* Optional definition of BYTE_ORDER: */' >> local.h
139         echo "#define BYTE_ORDER 0x$BYTE_ORDER" >> local.h
140         ;;
141 esac
142
143 echo "Your default machine to compile for is $ACM"
144
145 echo "Installation of the complete ACK takes a long time. Limiting the
146 number of languages, runtime libraries, back-ends, and assemblers to be
147 installed may save a lot of time. If you want to install everything,
148 answer no to the next question. Otherwise, answer yes, and you will be
149 prompted for details"
150 while :
151 do
152         echo $E_FLAG "Do you want to limit the installation in any way? (y/n) [$LIMIT] $E_SFX"
153         . $FDIR/get_answer
154         case $ANS in
155         '')     ANS="$LIMIT";;
156         esac
157         case X$ANS in
158         Xj*|Xy|X)
159                 LIMIT=y
160                 . $FDIR/limit_enquire
161                 break
162                 ;;
163         Xn*)    . $FDIR/get_sysvax
164                 LIMIT=n
165                 DO_MACHINE_INDEP=y
166                 DO_FAST=n
167                 DISABLE_LANG=
168                 DISABLE_SUP=
169                 if [ $TARGET_HOME = $UTIL_HOME ]
170                 then
171                         case $ACM in
172                         sun3|m68020|i386|vax*)
173                                 DO_FAST=y
174                                 ;;
175                         esac
176                 fi
177                 break
178                 ;;
179         *)      echo "I do not understand your answer ($ANS). Try again."
180                 ;;
181         esac
182 done
183
184 . $FDIR/get_makepars
185
186 echo "TARGET_HOME=\"$TARGET_HOME\"; export TARGET_HOME" > macros
187 echo "UTIL_HOME=\"$UTIL_HOME\"; export UTIL_HOME" >> macros
188 echo "SRC_HOME=\"$SRC_HOME\"; export SRC_HOME" >> macros
189 echo "SYSNAME=\"$SYSNAME\"; export SYSNAME" >> macros
190 echo "ACM=\"$ACM\"; export ACM" >> macros
191 echo "CURRENT=\"$CURRENT\"; export CURRENT" >> macros
192 echo "SYS=\"$SYS\"; export SYS" >> macros
193 echo "LIMIT=\"$LIMIT\"; export LIMIT" >> macros
194 echo "CONFIG=\"$CONFIG\"; export CONFIG" >> macros
195 echo "DISABLE_LANG=\"$DISABLE_LANG\"; export DISABLE_LANG" >> macros
196 echo "DISABLE_SUP=\"$DISABLE_SUP\"; export DISABLE_SUP" >> macros
197 echo "DO_MACHINE_INDEP=\"$DO_MACHINE_INDEP\"; export DO_MACHINE_INDEP" >> macros
198 echo "MACH_LIST=\"$MACH_LIST\"; export MACH_LIST" >> macros
199 echo "SYSVAX=\"$SYSVAX\"; export SYSVAX" >> macros
200 echo "MACH=\"$MACH\"; export MACH" >> macros
201 echo "WS=\"$WS\"; export WS" >> macros
202 echo "PS=\"$PS\"; export PS" >> macros
203 echo "DO_FAST=\"$DO_FAST\"; export DO_FAST" >> macros
204
205 cat macros $FDIR/install_tail > INSTALL
206 chmod +x INSTALL
207
208 echo "
209 A shell-script called 'INSTALL' has been created. Running it
210 installs ACK. Note that this may take a (very) long time, so run it
211 in the background, with its output redirected, f.i.:
212         sh INSTALL > INSTALL.out 2>&1 &
213 "
214 exit 0