news: describe recently-fixed bug in vala support
[platform/upstream/automake.git] / lib / depcomp
1 #! /bin/sh
2 # depcomp - compile a program generating dependencies as side-effects
3
4 scriptversion=2011-12-04.11; # UTC
5
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2011,
7 # Free Software Foundation, Inc.
8
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2, or (at your option)
12 # any later version.
13
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
18
19 # You should have received a copy of the GNU General Public License
20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
22 # As a special exception to the GNU General Public License, if you
23 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under
25 # the same distribution terms that you use for the rest of that program.
26
27 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
28
29 case $1 in
30   '')
31      echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
32      exit 1;
33      ;;
34   -h | --h*)
35     cat <<\EOF
36 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
37
38 Run PROGRAMS ARGS to compile a file, generating dependencies
39 as side-effects.
40
41 Environment variables:
42   depmode     Dependency tracking mode.
43   source      Source file read by `PROGRAMS ARGS'.
44   object      Object file output by `PROGRAMS ARGS'.
45   DEPDIR      directory where to store dependencies.
46   depfile     Dependency file to output.
47   tmpdepfile  Temporary file to use when outputting dependencies.
48   libtool     Whether libtool is used (yes/no).
49
50 Report bugs to <bug-automake@gnu.org>.
51 EOF
52     exit $?
53     ;;
54   -v | --v*)
55     echo "depcomp $scriptversion"
56     exit $?
57     ;;
58 esac
59
60 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
61   echo "depcomp: Variables source, object and depmode must be set" 1>&2
62   exit 1
63 fi
64
65 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
66 depfile=${depfile-`echo "$object" |
67   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
68 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
69
70 rm -f "$tmpdepfile"
71
72 # Some modes work just like other modes, but use different flags.  We
73 # parameterize here, but still list the modes in the big case below,
74 # to make depend.m4 easier to write.  Note that we *cannot* use a case
75 # here, because this file can only contain one case statement.
76 if test "$depmode" = hp; then
77   # HP compiler uses -M and no extra arg.
78   gccflag=-M
79   depmode=gcc
80 fi
81
82 if test "$depmode" = dashXmstdout; then
83    # This is just like dashmstdout with a different argument.
84    dashmflag=-xM
85    depmode=dashmstdout
86 fi
87
88 cygpath_u="cygpath -u -f -"
89 if test "$depmode" = msvcmsys; then
90    # This is just like msvisualcpp but w/o cygpath translation.
91    # Just convert the backslash-escaped backslashes to single forward
92    # slashes to satisfy depend.m4
93    cygpath_u="sed s,\\\\\\\\,/,g"
94    depmode=msvisualcpp
95 fi
96
97 if test "$depmode" = xlc; then
98    # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
99    gccflag=-qmakedep=gcc,-MF
100    depmode=gcc
101 fi
102
103 case "$depmode" in
104 gcc3)
105 ## gcc 3 implements dependency tracking that does exactly what
106 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
107 ## it if -MD -MP comes after the -MF stuff.  Hmm.
108 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
109 ## the command line argument order; so add the flags where they
110 ## appear in depend2.am.  Note that the slowdown incurred here
111 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
112   for arg
113   do
114     case $arg in
115     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
116     *)  set fnord "$@" "$arg" ;;
117     esac
118     shift # fnord
119     shift # $arg
120   done
121   "$@"
122   stat=$?
123   if test $stat -eq 0; then :
124   else
125     rm -f "$tmpdepfile"
126     exit $stat
127   fi
128   mv "$tmpdepfile" "$depfile"
129   ;;
130
131 gcc)
132 ## There are various ways to get dependency output from gcc.  Here's
133 ## why we pick this rather obscure method:
134 ## - Don't want to use -MD because we'd like the dependencies to end
135 ##   up in a subdir.  Having to rename by hand is ugly.
136 ##   (We might end up doing this anyway to support other compilers.)
137 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
138 ##   -MM, not -M (despite what the docs say).
139 ## - Using -M directly means running the compiler twice (even worse
140 ##   than renaming).
141   if test -z "$gccflag"; then
142     gccflag=-MD,
143   fi
144   "$@" -Wp,"$gccflag$tmpdepfile"
145   stat=$?
146   if test $stat -eq 0; then :
147   else
148     rm -f "$tmpdepfile"
149     exit $stat
150   fi
151   rm -f "$depfile"
152   echo "$object : \\" > "$depfile"
153   alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
154 ## The second -e expression handles DOS-style file names with drive letters.
155   sed -e 's/^[^:]*: / /' \
156       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
157 ## This next piece of magic avoids the `deleted header file' problem.
158 ## The problem is that when a header file which appears in a .P file
159 ## is deleted, the dependency causes make to die (because there is
160 ## typically no way to rebuild the header).  We avoid this by adding
161 ## dummy dependencies for each header file.  Too bad gcc doesn't do
162 ## this for us directly.
163   tr ' ' '
164 ' < "$tmpdepfile" |
165 ## Some versions of gcc put a space before the `:'.  On the theory
166 ## that the space means something, we add a space to the output as
167 ## well.  hp depmode also adds that space, but also prefixes the VPATH
168 ## to the object.  Take care to not repeat it in the output.
169 ## Some versions of the HPUX 10.20 sed can't process this invocation
170 ## correctly.  Breaking it into two sed invocations is a workaround.
171     sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
172       | sed -e 's/$/ :/' >> "$depfile"
173   rm -f "$tmpdepfile"
174   ;;
175
176 hp)
177   # This case exists only to let depend.m4 do its work.  It works by
178   # looking at the text of this script.  This case will never be run,
179   # since it is checked for above.
180   exit 1
181   ;;
182
183 sgi)
184   if test "$libtool" = yes; then
185     "$@" "-Wp,-MDupdate,$tmpdepfile"
186   else
187     "$@" -MDupdate "$tmpdepfile"
188   fi
189   stat=$?
190   if test $stat -eq 0; then :
191   else
192     rm -f "$tmpdepfile"
193     exit $stat
194   fi
195   rm -f "$depfile"
196
197   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
198     echo "$object : \\" > "$depfile"
199
200     # Clip off the initial element (the dependent).  Don't try to be
201     # clever and replace this with sed code, as IRIX sed won't handle
202     # lines with more than a fixed number of characters (4096 in
203     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
204     # the IRIX cc adds comments like `#:fec' to the end of the
205     # dependency line.
206     tr ' ' '
207 ' < "$tmpdepfile" \
208     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
209     tr '
210 ' ' ' >> "$depfile"
211     echo >> "$depfile"
212
213     # The second pass generates a dummy entry for each header file.
214     tr ' ' '
215 ' < "$tmpdepfile" \
216    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
217    >> "$depfile"
218   else
219     # The sourcefile does not contain any dependencies, so just
220     # store a dummy comment line, to avoid errors with the Makefile
221     # "include basename.Plo" scheme.
222     echo "#dummy" > "$depfile"
223   fi
224   rm -f "$tmpdepfile"
225   ;;
226
227 xlc)
228   # This case exists only to let depend.m4 do its work.  It works by
229   # looking at the text of this script.  This case will never be run,
230   # since it is checked for above.
231   exit 1
232   ;;
233
234 aix)
235   # The C for AIX Compiler uses -M and outputs the dependencies
236   # in a .u file.  In older versions, this file always lives in the
237   # current directory.  Also, the AIX compiler puts `$object:' at the
238   # start of each line; $object doesn't have directory information.
239   # Version 6 uses the directory in both cases.
240   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
241   test "x$dir" = "x$object" && dir=
242   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
243   if test "$libtool" = yes; then
244     tmpdepfile1=$dir$base.u
245     tmpdepfile2=$base.u
246     tmpdepfile3=$dir.libs/$base.u
247     "$@" -Wc,-M
248   else
249     tmpdepfile1=$dir$base.u
250     tmpdepfile2=$dir$base.u
251     tmpdepfile3=$dir$base.u
252     "$@" -M
253   fi
254   stat=$?
255
256   if test $stat -eq 0; then :
257   else
258     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
259     exit $stat
260   fi
261
262   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
263   do
264     test -f "$tmpdepfile" && break
265   done
266   if test -f "$tmpdepfile"; then
267     # Each line is of the form `foo.o: dependent.h'.
268     # Do two passes, one to just change these to
269     # `$object: dependent.h' and one to simply `dependent.h:'.
270     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
271     # That's a tab and a space in the [].
272     sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
273   else
274     # The sourcefile does not contain any dependencies, so just
275     # store a dummy comment line, to avoid errors with the Makefile
276     # "include basename.Plo" scheme.
277     echo "#dummy" > "$depfile"
278   fi
279   rm -f "$tmpdepfile"
280   ;;
281
282 icc)
283   # Intel's C compiler understands `-MD -MF file'.  However on
284   #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
285   # ICC 7.0 will fill foo.d with something like
286   #    foo.o: sub/foo.c
287   #    foo.o: sub/foo.h
288   # which is wrong.  We want:
289   #    sub/foo.o: sub/foo.c
290   #    sub/foo.o: sub/foo.h
291   #    sub/foo.c:
292   #    sub/foo.h:
293   # ICC 7.1 will output
294   #    foo.o: sub/foo.c sub/foo.h
295   # and will wrap long lines using \ :
296   #    foo.o: sub/foo.c ... \
297   #     sub/foo.h ... \
298   #     ...
299
300   "$@" -MD -MF "$tmpdepfile"
301   stat=$?
302   if test $stat -eq 0; then :
303   else
304     rm -f "$tmpdepfile"
305     exit $stat
306   fi
307   rm -f "$depfile"
308   # Each line is of the form `foo.o: dependent.h',
309   # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
310   # Do two passes, one to just change these to
311   # `$object: dependent.h' and one to simply `dependent.h:'.
312   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
313   # Some versions of the HPUX 10.20 sed can't process this invocation
314   # correctly.  Breaking it into two sed invocations is a workaround.
315   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
316     sed -e 's/$/ :/' >> "$depfile"
317   rm -f "$tmpdepfile"
318   ;;
319
320 hp2)
321   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
322   # compilers, which have integrated preprocessors.  The correct option
323   # to use with these is +Maked; it writes dependencies to a file named
324   # 'foo.d', which lands next to the object file, wherever that
325   # happens to be.
326   # Much of this is similar to the tru64 case; see comments there.
327   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
328   test "x$dir" = "x$object" && dir=
329   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
330   if test "$libtool" = yes; then
331     tmpdepfile1=$dir$base.d
332     tmpdepfile2=$dir.libs/$base.d
333     "$@" -Wc,+Maked
334   else
335     tmpdepfile1=$dir$base.d
336     tmpdepfile2=$dir$base.d
337     "$@" +Maked
338   fi
339   stat=$?
340   if test $stat -eq 0; then :
341   else
342      rm -f "$tmpdepfile1" "$tmpdepfile2"
343      exit $stat
344   fi
345
346   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
347   do
348     test -f "$tmpdepfile" && break
349   done
350   if test -f "$tmpdepfile"; then
351     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
352     # Add `dependent.h:' lines.
353     sed -ne '2,${
354                s/^ *//
355                s/ \\*$//
356                s/$/:/
357                p
358              }' "$tmpdepfile" >> "$depfile"
359   else
360     echo "#dummy" > "$depfile"
361   fi
362   rm -f "$tmpdepfile" "$tmpdepfile2"
363   ;;
364
365 tru64)
366    # The Tru64 compiler uses -MD to generate dependencies as a side
367    # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
368    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
369    # dependencies in `foo.d' instead, so we check for that too.
370    # Subdirectories are respected.
371    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
372    test "x$dir" = "x$object" && dir=
373    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
374
375    if test "$libtool" = yes; then
376       # With Tru64 cc, shared objects can also be used to make a
377       # static library.  This mechanism is used in libtool 1.4 series to
378       # handle both shared and static libraries in a single compilation.
379       # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
380       #
381       # With libtool 1.5 this exception was removed, and libtool now
382       # generates 2 separate objects for the 2 libraries.  These two
383       # compilations output dependencies in $dir.libs/$base.o.d and
384       # in $dir$base.o.d.  We have to check for both files, because
385       # one of the two compilations can be disabled.  We should prefer
386       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
387       # automatically cleaned when .libs/ is deleted, while ignoring
388       # the former would cause a distcleancheck panic.
389       tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
390       tmpdepfile2=$dir$base.o.d          # libtool 1.5
391       tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
392       tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
393       "$@" -Wc,-MD
394    else
395       tmpdepfile1=$dir$base.o.d
396       tmpdepfile2=$dir$base.d
397       tmpdepfile3=$dir$base.d
398       tmpdepfile4=$dir$base.d
399       "$@" -MD
400    fi
401
402    stat=$?
403    if test $stat -eq 0; then :
404    else
405       rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
406       exit $stat
407    fi
408
409    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
410    do
411      test -f "$tmpdepfile" && break
412    done
413    if test -f "$tmpdepfile"; then
414       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
415       # That's a tab and a space in the [].
416       sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
417    else
418       echo "#dummy" > "$depfile"
419    fi
420    rm -f "$tmpdepfile"
421    ;;
422
423 #nosideeffect)
424   # This comment above is used by automake to tell side-effect
425   # dependency tracking mechanisms from slower ones.
426
427 dashmstdout)
428   # Important note: in order to support this mode, a compiler *must*
429   # always write the preprocessed file to stdout, regardless of -o.
430   "$@" || exit $?
431
432   # Remove the call to Libtool.
433   if test "$libtool" = yes; then
434     while test "X$1" != 'X--mode=compile'; do
435       shift
436     done
437     shift
438   fi
439
440   # Remove `-o $object'.
441   IFS=" "
442   for arg
443   do
444     case $arg in
445     -o)
446       shift
447       ;;
448     $object)
449       shift
450       ;;
451     *)
452       set fnord "$@" "$arg"
453       shift # fnord
454       shift # $arg
455       ;;
456     esac
457   done
458
459   test -z "$dashmflag" && dashmflag=-M
460   # Require at least two characters before searching for `:'
461   # in the target name.  This is to cope with DOS-style filenames:
462   # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
463   "$@" $dashmflag |
464     sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
465   rm -f "$depfile"
466   cat < "$tmpdepfile" > "$depfile"
467   tr ' ' '
468 ' < "$tmpdepfile" | \
469 ## Some versions of the HPUX 10.20 sed can't process this invocation
470 ## correctly.  Breaking it into two sed invocations is a workaround.
471     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
472   rm -f "$tmpdepfile"
473   ;;
474
475 dashXmstdout)
476   # This case only exists to satisfy depend.m4.  It is never actually
477   # run, as this mode is specially recognized in the preamble.
478   exit 1
479   ;;
480
481 makedepend)
482   "$@" || exit $?
483   # Remove any Libtool call
484   if test "$libtool" = yes; then
485     while test "X$1" != 'X--mode=compile'; do
486       shift
487     done
488     shift
489   fi
490   # X makedepend
491   shift
492   cleared=no eat=no
493   for arg
494   do
495     case $cleared in
496     no)
497       set ""; shift
498       cleared=yes ;;
499     esac
500     if test $eat = yes; then
501       eat=no
502       continue
503     fi
504     case "$arg" in
505     -D*|-I*)
506       set fnord "$@" "$arg"; shift ;;
507     # Strip any option that makedepend may not understand.  Remove
508     # the object too, otherwise makedepend will parse it as a source file.
509     -arch)
510       eat=yes ;;
511     -*|$object)
512       ;;
513     *)
514       set fnord "$@" "$arg"; shift ;;
515     esac
516   done
517   obj_suffix=`echo "$object" | sed 's/^.*\././'`
518   touch "$tmpdepfile"
519   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
520   rm -f "$depfile"
521   # makedepend may prepend the VPATH from the source file name to the object.
522   # No need to regex-escape $object, excess matching of '.' is harmless.
523   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
524   sed '1,2d' "$tmpdepfile" | tr ' ' '
525 ' | \
526 ## Some versions of the HPUX 10.20 sed can't process this invocation
527 ## correctly.  Breaking it into two sed invocations is a workaround.
528     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
529   rm -f "$tmpdepfile" "$tmpdepfile".bak
530   ;;
531
532 cpp)
533   # Important note: in order to support this mode, a compiler *must*
534   # always write the preprocessed file to stdout.
535   "$@" || exit $?
536
537   # Remove the call to Libtool.
538   if test "$libtool" = yes; then
539     while test "X$1" != 'X--mode=compile'; do
540       shift
541     done
542     shift
543   fi
544
545   # Remove `-o $object'.
546   IFS=" "
547   for arg
548   do
549     case $arg in
550     -o)
551       shift
552       ;;
553     $object)
554       shift
555       ;;
556     *)
557       set fnord "$@" "$arg"
558       shift # fnord
559       shift # $arg
560       ;;
561     esac
562   done
563
564   "$@" -E |
565     sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
566        -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
567     sed '$ s: \\$::' > "$tmpdepfile"
568   rm -f "$depfile"
569   echo "$object : \\" > "$depfile"
570   cat < "$tmpdepfile" >> "$depfile"
571   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
572   rm -f "$tmpdepfile"
573   ;;
574
575 msvisualcpp)
576   # Important note: in order to support this mode, a compiler *must*
577   # always write the preprocessed file to stdout.
578   "$@" || exit $?
579
580   # Remove the call to Libtool.
581   if test "$libtool" = yes; then
582     while test "X$1" != 'X--mode=compile'; do
583       shift
584     done
585     shift
586   fi
587
588   IFS=" "
589   for arg
590   do
591     case "$arg" in
592     -o)
593       shift
594       ;;
595     $object)
596       shift
597       ;;
598     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
599         set fnord "$@"
600         shift
601         shift
602         ;;
603     *)
604         set fnord "$@" "$arg"
605         shift
606         shift
607         ;;
608     esac
609   done
610   "$@" -E 2>/dev/null |
611   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
612   rm -f "$depfile"
613   echo "$object : \\" > "$depfile"
614   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
615   echo "        " >> "$depfile"
616   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
617   rm -f "$tmpdepfile"
618   ;;
619
620 msvcmsys)
621   # This case exists only to let depend.m4 do its work.  It works by
622   # looking at the text of this script.  This case will never be run,
623   # since it is checked for above.
624   exit 1
625   ;;
626
627 none)
628   exec "$@"
629   ;;
630
631 *)
632   echo "Unknown depmode $depmode" 1>&2
633   exit 1
634   ;;
635 esac
636
637 exit 0
638
639 # Local Variables:
640 # mode: shell-script
641 # sh-indentation: 2
642 # eval: (add-hook 'write-file-hooks 'time-stamp)
643 # time-stamp-start: "scriptversion="
644 # time-stamp-format: "%:y-%02m-%02d.%02H"
645 # time-stamp-time-zone: "UTC"
646 # time-stamp-end: "; # UTC"
647 # End: