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 2161 - (view) (download)
Original Path: sml/trunk/src/system/fixpt

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

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