Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/system/fixpt
ViewVC logotype

Annotation of /sml/trunk/system/fixpt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5869 - (view) (download)

1 : blume 577 #!/bin/sh
2 : jhr 5869 #
3 :     # COPYRIGHT (c) 2019 The Fellowship of SML/NJ (http://www.smlnj.org)
4 :     # All rights reserved.
5 :     #
6 :     # fixpt [-32 | -64]
7 : blume 577 # - to be run in src/system to iterate compilation to a fixed point
8 :     # - assumes no sml.boot... directory in src/system (but uses it if it
9 :     # is there and the base is set to "sml" -- which is the default)
10 : blume 2161 # - assumes that ../../../bin/sml and ../../../bin/.arch-n-opsys have
11 :     # been installed
12 : blume 577
13 :     this=$0
14 :     here=`pwd`
15 : blume 2162 cd ../..
16 :     twoup=`pwd`
17 : blume 577 cd $here
18 :    
19 : blume 2162 SML=$twoup/bin/sml
20 : jhr 4188 ARCH=x86
21 : jhr 5869 SIZE_OPT="-32"
22 : blume 577
23 :     #
24 :     # Parse command line
25 :     #
26 :     while [ "$#" != 0 ] ; do
27 :     arg=$1; shift
28 :     case $arg in
29 : jhr 5869 -32) SIZE_OPT="-32" ;;
30 :     -64) SIZE_OPT="-64" ;;
31 : blume 577 -iter)
32 :     if [ "$#" = 0 ] ; then
33 :     echo "$this: missing argument for \"-iter\" option"
34 :     exit 2
35 :     fi
36 :     ITER=$1; shift
37 :     ;;
38 :     -base)
39 :     if [ "$#" = 0 ] ; then
40 :     echo "$this: missing argument for \"-base\" option"
41 :     exit 2
42 :     fi
43 :     BASE=$1; shift
44 :     ;;
45 : blume 645 -light)
46 :     REBUILD="-lightrebuild"
47 :     SETLIGHT='val _ = #set (CMB.symval "LIGHT") (SOME 1);'
48 :     ;;
49 : jhr 4159 -save)
50 :     SAVE=true;
51 :     ;;
52 : blume 577 *)
53 :     echo "$this: unknown argument \"$arg\""
54 :     exit 2
55 :     ;;
56 :     esac
57 :     done
58 :    
59 : jhr 5869 #
60 :     # use the arch-n-opsys script to determine the ARCH/OS if possible
61 :     #
62 :     if [ -f $twoup/bin/.arch-n-opsys ]; then
63 :     ARCH_N_OPSYS=`$twoup/bin/.arch-n-opsys $SIZE_OPT`
64 :     if [ "$?" = "0" ]; then
65 :     eval $ARCH_N_OPSYS
66 :     echo Architecture: $ARCH
67 :     fi
68 :     fi
69 :    
70 :     BIN=.bin.$ARCH-unix
71 :     BOOT=.boot.$ARCH-unix
72 :     ITER=3
73 :     BASE=sml
74 :     REBUILD="-rebuild"
75 :     SETLIGHT=""
76 :     SAVE=false # should we save intermediate boot and bin directories?
77 :    
78 :     #
79 :     # Function to do one round of compilation to get the initial set of binfiles.
80 :     # (The funky ML comment is there to un-confuse emacs fontlock mode. :)
81 :     #
82 :     initcompile() {
83 :     $SML $SIZE_OPT '$smlnj/cmb.cm' <<EOF
84 :     local open OS.Process CMB in
85 :     $SETLIGHT
86 :     val _ = exit (if make' (SOME "$BASE") then success else failure) (* ' *)
87 :     end
88 :     EOF
89 :     }
90 :    
91 : blume 577 iter=0
92 :     iterbase=$BASE
93 :    
94 :     if initcompile ; then
95 :     while [ $iter -lt $ITER ] ; do
96 :     prev=$iter
97 :     prevbase=$iterbase
98 :     iter=`expr $iter + 1`
99 :     iterbase=$BASE$iter
100 : jhr 5869 if ./makeml $SIZE_OPT -boot $prevbase$BOOT $REBUILD $iterbase ; then
101 : blume 577 if diff -r $prevbase$BIN $iterbase$BIN >/dev/null 2>&1 ; then
102 :     echo "$this: fixpoint reached in round $iter"
103 : jhr 4159 if $SAVE ; then
104 :     echo "$this: results in $iterbase$BOOT $iterbase$BIN"
105 :     else
106 :     # get rid of the intermediary results and move the boot/bin files
107 :     # where they belong
108 :     rm -rf $BASE$BOOT $BASE$BIN
109 :     mv $iterbase$BOOT $BASE$BOOT
110 :     mv $iterbase$BIN $BASE$BIN
111 :     rm -rf $BASE[1-9]$BOOT $BASE[1-9]$BIN
112 :     echo "$this: results in $BASE$BOOT $BASE$BIN"
113 :     fi
114 : blume 577 exit 0
115 :     fi
116 :     else
117 :     echo "$this: compilation failed in round $iter"
118 :     exit 3
119 :     fi
120 :     done
121 :     else
122 :     echo "$this: initial compilation failed"
123 :     exit 3
124 :     fi
125 :    
126 :     echo "$this: no fixpoint reached after $iter rounds"
127 :     exit 1

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0