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

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