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/src/system/fixpt
ViewVC logotype

Annotation of /sml/trunk/src/system/fixpt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 577 - (view) (download)

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

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