diff lib-src/process-depends.sh @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children 131b0175ea99
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/process-depends.sh	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,61 @@
+## Process the output of makedepend.
+## Copyright (c) 1994 Amdahl Corporation.
+## Written by Ben Wing, December 1994.
+
+## This file is used as part of 'make depend', to produce the
+## dependency list for src/Makefile.in.in.
+
+## Unfortunately, makedepend (at least the one that comes as part
+## of Open Windows under Solaris) is stupid and doesn't follow the
+## documented behavior.  So we have to force the definitions of
+## certain options through -D flags (even though it's supposed to
+## pick this up), and post-process the output to get rid of stuff
+## we don't want.
+
+## The sed stage gets rid of include files in other directories,
+## except for lwlib.h (makedepend puts system include files in,
+## which is pretty stupid).  We also get rid of some standard
+## include files that are in every or pretty much every file
+## and where changes in those files don't usually merit
+## recompilation of everything.  Finally, we eliminate entirely
+## the dependencies for some files (such as unex*.c) that get
+## screwed up by makedepend.  We just put those in by hand at
+## the top of the dependency list.
+
+## The awk stage puts one dependency per line.  Then we pass
+## the result through sort and uniq (makedepend is supposed
+## to not put in duplicate dependencies, but it does so
+## occasionally).
+
+## After running 'make depend', verify that the output (in
+## depend.out) is reasonable and then replace the stuff in
+## Makefile.in.in marked "generated by 'make depend'".
+
+sed -e '
+1d
+s/ \/[^ ]*\/lwlib\// $(LWLIBSRCDIR)\//g
+s/\.\.\/etc\//${srcdir}\/${etcdir}/g
+s/ \/[^ ]*\.h//g
+s/ \/[^ ]*gray//g
+s/ [a-z][^ ]*\/[^ ]*\.h//g
+s/ lisp\.h//g
+s/ lisp-union\.h//g
+s/ lisp-disunion\.h//g
+s/ lrecord\.h//g
+s/ emacsfns\.h//g
+s/ symeval\.h//g
+s/ symsinit\.h//g
+s/ syssignal\.h//g
+s/ intl\.h//g
+s/ tt_c\.h//g
+s/ descrip\.h//g
+/^unex/d
+/^sgiplay/d
+/^Extern/d
+/^extw/d
+/^[^ ]*\.o:$/d
+' | awk '
+{ for (i = 2; i <= NF; i++)
+  printf ("%s %s\n", $1, $i)
+}
+' | sort | uniq