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 /config/releases/release-110.64/_ml-makedepend
ViewVC logotype

Annotation of /config/releases/release-110.64/_ml-makedepend

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1705 - (view) (download)
Original Path: sml/trunk/config/_ml-makedepend

1 : blume 691 #!@SHELL@
2 :    
3 : blume 1261 if [ x${SMLNJ_HOME} = x ] ; then
4 :     BIN_DIR=@BINDIR@
5 :     else
6 :     if x${CM_PATHCONFIG} = x ] ; then
7 :     CM_PATHCONFIG=${SMLNJ_HOME}/lib/pathconfig
8 :     export CM_PATHCONFIG
9 :     fi
10 :     BIN_DIR=${SMLNJ_HOME}/bin
11 :     fi
12 : blume 691 SML=$BIN_DIR/sml
13 :    
14 :     mf=""
15 :     xx=$$
16 :     tmpmf=$xx-makefile
17 :     mlscript=$xx-mlscript.sml
18 :     thisscript=$0
19 : blume 692 archos=substitute
20 :     archstring='$(ARCH)'
21 :     osstring='$(OS)'
22 :     dulist=''
23 : blume 691
24 :     trap 'rm -f $tmpmf $mlscript' 0 1 2 3 15
25 :    
26 :     usage() {
27 :     echo $thisscript: $*
28 : blume 692 echo Usage: $thisscript '[-f makefile] [-n] [-a arch] [-o os]' project.cm target
29 : blume 691 exit 1
30 :     }
31 :    
32 :     #
33 : blume 692 # process options
34 : blume 691 #
35 : blume 692 while [ $# != 0 ] ; do
36 :     case $1 in
37 :     -n)
38 : blume 691 shift
39 : blume 692 archos=real
40 :     ;;
41 :     -a)
42 :     shift
43 : blume 691 if [ $# = 0 ] ; then
44 :     usage
45 :     else
46 : blume 692 archstring=$1
47 :     shift
48 :     fi
49 :     ;;
50 :     -o)
51 :     shift
52 :     if [ $# = 0 ] ; then
53 :     usage
54 :     else
55 :     osstring=$1
56 :     shift
57 :     fi
58 :     ;;
59 :     -f)
60 :     shift
61 :     if [ $# = 0 ] ; then
62 :     usage
63 :     else
64 : blume 691 mf=$1
65 :     shift
66 :     fi
67 : blume 692 if [ -f "$mf" ] ; then
68 :     : ok
69 :     else
70 :     echo $thisscript: $mf does not exist
71 :     exit 1
72 :     fi
73 :     ;;
74 :     -D*|-U*)
75 :     dulist="$dulist $1"
76 :     shift
77 :     ;;
78 :     *)
79 :     break
80 :     ;;
81 :     esac
82 :     done
83 : blume 691
84 :     #
85 :     # if there was no -f option, check for makefile and then Makefile
86 :     #
87 :     if [ x$mf = x ] ; then
88 :     if [ -f makefile ] ; then
89 :     mf=makefile
90 :     elif [ -f Makefile ] ; then
91 :     mf=Makefile
92 :     else
93 :     echo $thisscript: no makefile, no Makefile, and no -f option
94 :     exit 1
95 :     fi
96 :     fi
97 :    
98 :     #
99 :     # get the two mandatory arguments
100 :     #
101 :     if [ $# = 2 ] ; then
102 :     cmfile=$1
103 :     target=$2
104 :     else
105 :     usage
106 :     fi
107 :    
108 : blume 692 if [ $archos = substitute ] ; then
109 :     archosarg="(SOME { arch = \"${archstring}\", os = \"${osstring}\" })"
110 :     else
111 :     archosarg=NONE
112 :     fi
113 :    
114 : blume 691 #
115 :     # the delimiter strings (start and end)
116 :     #
117 :     delims="# START: ml-makedepend (${cmfile}:${target}); DO NOT DELETE!"
118 :     delime="# END : ml-makedepend (${cmfile}:${target}); DO NOT DELETE!"
119 :    
120 :     #
121 :     # remove previous result of ml-makedepend
122 :     # (other cmfile/target combinations are unaffected)
123 :     #
124 :     awk "BEGIN { c = 1; s = \"${delims}\"; e = \"${delime}\"; }
125 : mblume 1705 (\$0 == s) { c = 0; next; }
126 :     (\$0 == e) { c = 1; next; }
127 : blume 691 (c == 1) { print }" <$mf >$tmpmf
128 :     cp $tmpmf $mf
129 :     rm $tmpmf
130 :    
131 :     #
132 :     # construct the ML script
133 :     #
134 :     cat >$mlscript <<stop
135 : blume 692 let val archos = ${archosarg}
136 : blume 691 val lopt = CM.sources archos "${cmfile}"
137 :     in
138 :     case lopt of
139 :     NONE => ignore (OS.Process.exit OS.Process.failure)
140 :     | SOME l => let
141 :     val s = TextIO.openOut "$tmpmf"
142 :     fun pr { derived = true, file, class } = ()
143 :     | pr { file, ... } = TextIO.output (s, " \\\\\\n " ^ file)
144 :     in
145 :     TextIO.output (s, "${delims}\\n${target}:");
146 :     app pr l;
147 :     TextIO.output (s, "\\n${delime}\\n");
148 :     TextIO.closeOut s;
149 :     ignore (OS.Process.exit OS.Process.success)
150 :     end
151 :     end
152 :     stop
153 :    
154 : blume 692 if $SML '$smlnj/cm.cm' $dulist $mlscript ; then
155 : blume 691 cat $tmpmf >>$mf
156 :     else
157 :     echo $thisscript: CM dependency analysis failed
158 :     exit 1
159 :     fi
160 :    
161 :     exit 0

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