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/compiler/buildcm
ViewVC logotype

Annotation of /sml/trunk/src/compiler/buildcm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (view) (download)
Original Path: sml/branches/FLINT/src/compiler/buildcm

1 : monnier 16 #!/bin/sh
2 :     #
3 :     # build: build script for CM bootstrapping
4 :     #
5 :     # Copyright (c) 1995 by AT&T Bell Laboratories
6 :     #
7 :     # author: Matthias Blume (blume@cs.princeton.edu)
8 :     #
9 :     # options:
10 :     # -o image -- specify the name of the heap image, "sml-cm.ARCH"
11 :     # is the default.
12 :     # -sml path -- specify the path to the sml executable, "../bin/sml"
13 :     # is the default.
14 :     # -yacc path -- defines the name of the ml-yacc command, "ml-yacc"
15 :     # is the default.
16 :     # -lex path -- defines the name of the ml-lex command, "ml-lex"
17 :     # is the default.
18 :     # -burg path -- defines the name of the ml-burg command, "ml-burg"
19 :     # is the default.
20 :     # -rcs path -- defines the name of the RCS check-out command,
21 :     # "co -q" is the default
22 :     # -L path-list -- specify a colon separated search path list for
23 :     # libraries.
24 :     #
25 :    
26 :     tmp=load-all-`hostname`-$$
27 :     config=config-`hostname`-$$.sml
28 :    
29 :     trap "rm -f $config $tmp; exit 1" 1 2 3 15
30 :    
31 :     CMD="buildcm"
32 :    
33 :    
34 :     ROOT="sml-cm"
35 :     HEAP_IMAGE=""
36 :     SML="./xrun"
37 :     # SML="../../bin/sml"
38 :    
39 :     YACC="ml-yacc"
40 :     LEX="ml-lex"
41 :     BURG="ml-burg"
42 :     RCSCO="co -q"
43 :     NLL="false"
44 :     BIN="../../bin"
45 :     CMPATH=""
46 :     PROF=""
47 :     CHECK=""
48 : monnier 24 STATS=""
49 : monnier 16 CURDIR=`pwd`
50 :     cd ../cm/
51 :    
52 :     #
53 :     # process command-line options
54 :     #
55 :     ARGS=""
56 :     while [ "$#" != "0" ]
57 :     do
58 :     arg=$1
59 :     shift
60 :     case $arg in
61 :     -yacc)
62 :     if [ "$#" = "0" ]; then
63 :     echo "$CMD: must supply name of ML-Yacc for -yacc option"
64 :     exit 1
65 :     fi
66 :     YACC=$1; shift
67 :     ;;
68 :     -lex)
69 :     if [ "$#" = "0" ]; then
70 :     echo "$CMD: must supply name of ML-Lex for -lex option"
71 :     exit 1
72 :     fi
73 :     LEX=$1; shift
74 :     ;;
75 :     -burg)
76 :     if [ "$#" = "0" ]; then
77 :     echo "$CMD: must supply name of ML-Burg for -burg option"
78 :     exit 1
79 :     fi
80 :     BURG=$1; shift
81 :     ;;
82 :     -rcs)
83 :     if [ "$#" = "0" ]; then
84 :     echo "$CMD: must supply RCS check-out command for -rcs option"
85 :     exit 1
86 :     fi
87 :     RCSCO=$1; shift
88 :     ;;
89 :     -L)
90 :     if [ "$#" = "0" ]; then
91 :     echo "$CMD: must supply path spec for -L option"
92 :     exit 1
93 :     fi
94 :     CMPATH=$1; shift
95 :     ;;
96 :     -nll)
97 :     NLL="true"
98 :     ;;
99 :     -bin)
100 :     if [ "$#" = "0" ]; then
101 :     echo "$CMD: must supply bin directory path for -bin option"
102 :     exit 1
103 :     fi
104 :     BIN=$1; shift
105 :     ;;
106 :     -o)
107 :     if [ "$#" = "0" ]; then
108 :     echo "$CMD: must supply image name for -o option"
109 :     exit 1
110 :     fi
111 :     HEAP_IMAGE=$1; shift
112 :     ;;
113 :     -sml)
114 :     if [ "$#" = "0" ]; then
115 :     echo "$CMD: must supply path for -sml option"
116 :     exit 1
117 :     fi
118 :     SML=$1; shift
119 :     ;;
120 :     -prof)
121 :     PROF="local open Compiler.Profile in val _ = setMode ACTIVE end;"
122 :     ;;
123 :     -early-check)
124 :     CHECK='use "sys/compiler.sig";
125 :     functor CheckIt (C: COMPILER) = C;
126 :     structure CheckItOut = CheckIt (Compiler);'
127 :     ;;
128 :     -stats)
129 : monnier 24 STATS='Compiler.Stats.summary ();'
130 : monnier 16 ;;
131 :     *)
132 :     ARGS="$ARGS $arg"
133 :     ;;
134 :     esac
135 :     done
136 :    
137 :     #
138 :     # split the pathname and build SML string list
139 :     #
140 :    
141 :     SPACEPATH=`echo $CMPATH | sed -e 's/:/ /g'`
142 :     PATHLIST=""
143 :     for i in $SPACEPATH
144 :     do
145 :     PATHLIST="$PATHLIST \"$i\" :: "
146 :     done
147 :     PATHLIST="$PATHLIST []"
148 :    
149 :     #
150 :     # generate the config.sml file, with the proper yacc and lex paths, etc.
151 :     #
152 :    
153 :     cat - > $config <<XXXX
154 :     (* config.sml --- generated by _build_ script *)
155 :    
156 :     structure CmConfig = struct
157 :     val lex = "$LEX"
158 :     val yacc = "$YACC"
159 :     val burg = "$BURG"
160 :     val namelength_limited = $NLL
161 :     val path: string list = $PATHLIST
162 :     val rcsco = "$RCSCO"
163 :     end
164 :     XXXX
165 :    
166 :     sed -e "s|config/config.sml|${config}|" <load-all >$tmp
167 :    
168 :     if [ "$HEAP_IMAGE" = "" ]; then
169 :     HEAP_IMAGE="$ROOT"
170 :     fi
171 :    
172 :     cd $CURDIR
173 :    
174 :     $SML $ARGS <<ZZZ
175 :     $PROF
176 :     $CHECK
177 :     val _ = Posix.FileSys.chdir "../cm/";
178 :     use "$tmp";
179 :     $STATS
180 : monnier 24 Compiler.Stats.summary();
181 : monnier 16 val _ = Posix.FileSys.chdir "$CURDIR";
182 :     (SMLofNJ.exportML "$HEAP_IMAGE";
183 :     print (Compiler.banner ^ " [CM&CMB]\n");
184 :     CM.procCmdLine ());
185 :     ZZZ
186 :    
187 :     rm -f ../cm/$config ../cm/$tmp
188 :     exit 0

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