Mercurial > hg > xemacs-beta
comparison src/make-src-depend @ 1303:f99d3d25df86
[xemacs-hg @ 2003-02-15 10:15:54 by ben]
autoload fixes, make-doc speed improvements
Makefile.in.in: Run update-elc-2 with -no-autoloads
to avoid multiple autoload-loading problem.
configure.usage: Document quick-build better.
make-docfile.el: Use `message' (defined in this file) in place of `princ'/`print',
and put in a terpri, so that we get correct newline behavior.
Rewrite if-progn -> when and a few similar stylistic niceties.
And the big change: Allow MS Windows to specify the object files
directly and frob them into C files here (formerly this was done
in xemacs.mak, and very slooooooooooooooooooowly). Due to
line-length limitations in CMD, we need to use a "response file"
to hold the arguments, so when we see a response file argument
(preceded by an @), read in the args (a bit of trickiness to do
this), and process recursively. Also frob .obj -> .c as mentioned
earlier and handle other junk dependencies that need to be removed
(NEEDTODUMP, make-docfile.exe).
update-elc-2.el: Use :test `equal' in call to set-difference.
update-elc.el: Put back commented out kill-emacs, update header comment.
xemacs.mak: Delete old unused code that checks SATISFIED.
Move update-elc-2 up to be near update-elc.
Run update-elc-2 with -no-autoloads to avoid multiple
autoload-loading problem.
Don't compute make-docfile args ourselves. Pass the raw objects
to make-docfile.el, which does the computation (much faster than
we could). Don't delete the DOC file, split the invocation into
two calls to make-docfile.exe (one direct, one through
make-docfile.el), etc. In general, all we do is call make-docfile.
Add proper dependencies for DOC-file rebuilding so it doesn't get
done when not necessary. Implement quick-building here: not
building the DOC file unless it doesn't exist, as the quick-build
docs say.
Makefile.in.in: Don't delete the DOC file. Implement quick-building here: not
building the DOC file unless it doesn't exist, as the quick-build
docs say.
config.h.in, emacs.c: Nothing but niggly spacing changes -- one space before a paren
starting a function-call arglist, please.
| author | ben |
|---|---|
| date | Sat, 15 Feb 2003 10:16:14 +0000 |
| parents | 0784d089fdc9 |
| children | 579d37cb4395 |
comparison
equal
deleted
inserted
replaced
| 1302:781dc6d5baba | 1303:f99d3d25df86 |
|---|---|
| 1 : #-*- Perl -*- | 1 : #-*- Perl -*- |
| 2 | |
| 3 ### make-src-depend --- update the Makefile dependency information for XEmacs | |
| 4 | |
| 2 # Copyright (C) 1998 Free Software Foundation, Inc. | 5 # Copyright (C) 1998 Free Software Foundation, Inc. |
| 3 | 6 |
| 4 # This file is part of XEmacs. | 7 ## Author: Martin Buchholz <martin@xemacs.org> |
| 5 # | 8 ## Maintainer: XEmacs Development Team |
| 6 # XEmacs is free software; you can redistribute it and/or modify it | |
| 7 # under the terms of the GNU General Public License as published by the | |
| 8 # Free Software Foundation; either version 2, or (at your option) any | |
| 9 # later version. | |
| 10 # | |
| 11 # XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 14 # for more details. | |
| 15 # | |
| 16 # You should have received a copy of the GNU General Public License | |
| 17 # along with XEmacs; see the file COPYING. If not, write to | |
| 18 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 19 # Boston, MA 02111-1307, USA. | |
| 20 | 9 |
| 21 # Author: Martin Buchholz | 10 ## This file is part of XEmacs. |
| 11 | |
| 12 ## XEmacs is free software; you can redistribute it and/or modify it | |
| 13 ## under the terms of the GNU General Public License as published by | |
| 14 ## the Free Software Foundation; either version 2, or (at your option) | |
| 15 ## any later version. | |
| 16 | |
| 17 ## XEmacs is distributed in the hope that it will be useful, but | |
| 18 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 20 ## General Public License for more details. | |
| 21 | |
| 22 ## You should have received a copy of the GNU General Public License | |
| 23 ## along with XEmacs; see the file COPYING. If not, write to the Free | |
| 24 ## Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
| 25 ## 02111-1307, USA. | |
| 26 | |
| 22 eval 'exec perl -w -S $0 ${1+"$@"}' | 27 eval 'exec perl -w -S $0 ${1+"$@"}' |
| 23 if 0; | 28 if 0; |
| 24 | 29 |
| 25 use strict; | 30 use strict; |
| 26 my ($myName, $srcdir, %exists, %uses, %generated_header); | 31 my ($myName, $srcdir, %exists, %uses, %generated_header); |
| 27 | 32 |
| 28 ($myName = $0) =~ s@.*/@@; my $usage =" | 33 ($myName = $0) =~ s@.*/@@; my $usage =" |
| 29 Usage: $myName | 34 Usage: $myName |
| 30 | 35 |
| 31 Generates Makefile dependencies for the XEmacs src directory. | 36 Generates Makefile dependencies for the XEmacs src directory. |
| 32 The dependencies are written to stdout.\n"; | 37 The dependencies are written to stdout. |
| 38 | |
| 39 If --quick-build, don't include config.h and lisp.h in the dependencies, | |
| 40 for faster rebuilding. | |
| 41 "; | |
| 33 | 42 |
| 34 die $usage if @ARGV; | 43 die $usage if @ARGV; |
| 35 | 44 |
| 36 ($srcdir = $0) =~ s@[^/]+$@@; | 45 ($srcdir = $0) =~ s@[^/]+$@@; |
| 37 $srcdir = "." if $srcdir eq ""; | 46 $srcdir = "." if $srcdir eq ""; |
| 92 LISP_UNION_H=lisp-disunion.h | 101 LISP_UNION_H=lisp-disunion.h |
| 93 #endif | 102 #endif |
| 94 "; | 103 "; |
| 95 | 104 |
| 96 my @LISP_H = ('lisp.h', sort keys %{$uses{'lisp.h'}}); | 105 my @LISP_H = ('lisp.h', sort keys %{$uses{'lisp.h'}}); |
| 97 print "LISP_H=@{[grep (!/lisp-(dis)?union\.h/, @LISP_H)]} \$(LISP_UNION_H)\n"; | 106 print " |
| 107 #if defined(QUICK_BUILD) | |
| 108 CONFIG_H= | |
| 109 LISP_H= | |
| 110 #else | |
| 111 CONFIG_H=config.h | |
| 112 LISP_H=@{[grep (!/lisp-(dis)?union\.h/, @LISP_H)]} \$(LISP_UNION_H) | |
| 113 #endif | |
| 114 | |
| 115 "; | |
| 98 | 116 |
| 99 sub PrintDeps { | 117 sub PrintDeps { |
| 100 my $file = shift; | 118 my $file = shift; |
| 101 my $ofile = $file; $ofile =~ s/c$/o/; print "$ofile: "; | 119 my $ofile = $file; $ofile =~ s/c$/o/; print "$ofile: "; |
| 102 if (exists $uses{$file}{'lisp.h'}) { | 120 if (exists $uses{$file}{'lisp.h'}) { |
| 103 delete @{%{$uses{$file}}}{@LISP_H}; | 121 delete @{%{$uses{$file}}}{@LISP_H}; |
| 104 $uses{$file}{'$(LISP_H)'} = 1; | 122 $uses{$file}{'$(LISP_H)'} = 1; |
| 123 } | |
| 124 # Note: If both config.h and lisp.h are dependencies, config.h got deleted | |
| 125 # by the last clause. | |
| 126 if (exists $uses{$file}{'config.h'}) { | |
| 127 delete $uses{$file}{'config.h'}; | |
| 128 $uses{$file}{'$(CONFIG_H)'} = 1; | |
| 105 } | 129 } |
| 106 print "@{[sort keys %{$uses{$file}}]}\n"; | 130 print "@{[sort keys %{$uses{$file}}]}\n"; |
| 107 } | 131 } |
| 108 | 132 |
| 109 sub PrintPatternDeps { | 133 sub PrintPatternDeps { |
| 115 } | 139 } |
| 116 print "#endif\n"; | 140 print "#endif\n"; |
| 117 } | 141 } |
| 118 | 142 |
| 119 PrintPatternDeps ('-msw\\.', "HAVE_MS_WINDOWS"); | 143 PrintPatternDeps ('-msw\\.', "HAVE_MS_WINDOWS"); |
| 120 PrintPatternDeps ('-x\\.', "HAVE_X_WINDOWS"); | 144 PrintPatternDeps ('-xlike', "HAVE_XLIKE"); |
| 145 # X-specific files: *-x.c *-x-impl.h xgccache.c balloon_help.c x*.h Emacs*.[ch] | |
| 146 PrintPatternDeps ('-x\\.|xgccache|balloon_help|^Emacs', "HAVE_X_WINDOWS"); | |
| 121 PrintPatternDeps ('-tty\\.', "HAVE_TTY"); | 147 PrintPatternDeps ('-tty\\.', "HAVE_TTY"); |
| 122 PrintPatternDeps ('-gtk\\.', "HAVE_GTK"); | 148 # GTK-specific files: *-gtk.[ch] *-gtk-*.[ch] gtk-*.[ch] emacs-marshals.c emacs-widget-accessors.c glade.c ui-byhand.c |
| 149 PrintPatternDeps ('gtk|emacs-marshals|emacs-widget-accessors|glade|ui-byhand', "HAVE_GTK"); | |
| 123 PrintPatternDeps ('^database', "HAVE_DATABASE"); | 150 PrintPatternDeps ('^database', "HAVE_DATABASE"); |
| 124 PrintPatternDeps ('^mule', "MULE"); | 151 PrintPatternDeps ('^mule', "MULE"); |
| 125 PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET"); | 152 PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET"); |
| 126 | 153 |
| 127 for my $file (sort grep (/\.c$/, keys %uses)) { PrintDeps($file); } | 154 for my $file (sort grep (/\.c$/, keys %uses)) { PrintDeps($file); } |
