first 5.6 KB

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