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 692 - (view) (download)
Original Path: sml/trunk/config/_ml-makedepend

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

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