123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #!/bin/sh
- # installation of fast ACK compilers afcc, afm2
- # is the call correct?
- case $# in
- 1)
- if [ -d $1 ]
- then
- :
- else
- echo $0: $1 is not a directory >&2
- exit 1
- fi
- ;;
- *)
- echo $0: Call is $0 \<ACK home directory\> >&2
- exit 1
- ;;
- esac
- # investigate machine: either vax or sun(3)
- echo $0: determining type of machine ...
- cat > t.c <<'EOF'
- main() {
- #ifdef sun
- printf("sun\n");
- #endif
- #ifdef vax
- printf("vax\n");
- #endif
- }
- EOF
- if cc t.c
- then
- :
- else
- echo $0: compilation failed >&2
- exit 1
- fi
- m=`./a.out`
- rm -f a.out t.[co]
- case $m in
- sun|vax)
- echo $0: Starting installation for a $m ...
- ;;
- *)
- echo $0: machine must be sun or vax >&2
- exit 1
- ;;
- esac
- # edit manual page
- sed s@CHANGE_ME@$1/lib/m2@ < man/afm2.1.src > man/afm2.1
- # install the compiler binaries
- echo $0: copying compiler binaries ...
- case $m in
- sun)
- cp ack.sun/cemcom* ack.sun/m2* $1/lib/m68020
- ;;
- vax)
- cp ack.vax/cemcom* ack.vax/m2* $1/lib/vax4
- ;;
- esac
- # now compile the driver program
- echo $0: compiling driver program ...
- rm -f afcc afm2
- if cc -O -DACK_BIN -I$1/h -DFCC -o afcc driver.c &&
- cc -O -DACK_BIN -I$1/h -DFM2 -o afm2 driver.c
- then
- :
- else
- echo $0: compilation of driver program failed >&2
- exit 1
- fi
- ( cd $1/lang/m2/libm2
- echo 'killbss() { }' > killbss.c
- ../../../bin/acc -L -c -LIB killbss.c
- cp LIST LIST.old
- echo 'killbss.c' >> LIST
- ../../../bin/arch r tail_m2.a killbss.c
- ) > /dev/null 2>&1
- case $m in
- sun)
- ( cd $1/lib/sun3
- cp tail_m2 tail_m2.orig
- ../../bin/aal r tail_m2 ../../lang/m2/libm2/killbss.o
- )
- ;;
- vax)
- ( cd $1/lib/vax4
- cp tail_m2 tail_m2.orig
- ar r tail_m2 ../../lang/m2/libm2/killbss.o
- ranlib tail_m2
- )
- ;;
- esac > /dev/null 2>&1
- #now run simple tests
- echo $0: run some simple tests
- failed=false
- cat > test.mod <<'EOF'
- MODULE test;
- FROM InOut IMPORT WriteString, WriteLn;
- BEGIN
- WriteString("Hello World");
- WriteLn
- END test.
- EOF
- if ./afm2 test.mod 2>/dev/null
- then
- case `a.out` in
- "Hello World")
- ;;
- *)
- echo $0: afm2 test failed >&2
- failed=true
- ;;
- esac
- else
- echo $0: afm2 compilation failed >&2
- failed=true
- fi
- cat > test.c <<'EOF'
- main() { printf("Hello World\n"); }
- EOF
- if ./afcc test.c 2>/dev/null
- then
- case `a.out` in
- "Hello World")
- ;;
- *)
- echo $0: afcc test failed >&2
- failed=true
- ;;
- esac
- else
- echo $0: afcc compilation failed >&2
- failed=true
- fi
- rm -f test.* a.out
- case $failed in
- true)
- echo $0: some tests failed, installation aborted >&2
- exit 1
- ;;
- false)
- rm -f $1/bin/afm2 $1/bin/afcc
- cp afm2 afcc $1/bin
- rm -f afm2 afcc
- cp man/afcc.1 man/afm2.1 $1/man
- echo $0: Installation completed
- exit 0
- ;;
- esac
|