build.sh 1.3 KB

1234567891011121314151617181920212223242526272829
  1. #!/bin/bash
  2. # Build the FILEBASE syntax validator from FILEBASE.atg.
  3. # Needs: CR (Coco/R V1.53), gm2 -fiso, parser/scanner frames, FileIO.
  4. # Note: link via the two-step module list; a single-step link trips
  5. # over pre-existing errors in this gm2 build's own ISO library .defs.
  6. set -e
  7. CR="${CR:-/home/eric/Projets/Projets-Modula2/MyWork/CocoGm2/CR}"
  8. GM2="${GM2:-/home/eric/bin/Modula2/Gm2/bin/gm2}"
  9. FRAMES="${CRFRAMES:-/home/eric/Projets/Projets-Modula2/MyWork/Theia/GNU-grammar/build}"
  10. M2LIB="${M2LIB:-/home/eric/Projets/Projets-Modula2/MyWork/Theia/GNU-grammar/build}"
  11. HERE="$(dirname "$0")"
  12. B="$HERE/build"
  13. rm -rf "$B"
  14. mkdir -p "$B"
  15. cp "$HERE"/*.atg "$B/"
  16. cp "$M2LIB/FileIO.def" "$M2LIB/FileIO.mod" "$B/"
  17. cd "$B"
  18. echo "=== CR ==="; CRFRAMES="$FRAMES" "$CR" -m -C *.atg
  19. echo "=== compile ==="
  20. for m in FileIO PascalS PascalP; do "$GM2" -fiso -I . -c "$m.mod"; done
  21. echo "=== link ==="
  22. # NOTE: the gen step exits 1 on pre-existing errors in gm2's own
  23. # ISO library .defs, but still writes a usable modules.lst.
  24. "$GM2" -fiso -I . -fgen-module-list=modules.lst -o /dev/null FileIO.o PascalS.o PascalP.o Pascal.mod || true
  25. "$GM2" -fiso -I . -fuse-list=modules.lst -o TP3 FileIO.o PascalS.o PascalP.o Pascal.mod
  26. echo "=== smoke ==="
  27. printf 'PROGRAM Hello;\nBEGIN\n WriteLn('"'"'hi'"'"');\nEND.\n' > Hello.pas
  28. ./TP3 Hello.pas
  29. rm -f Hello.pas Hello.LST