Mercurial > hg > xemacs-beta
view src/make-src-depend @ 714:02339d4ebed4
[xemacs-hg @ 2001-12-23 20:28:19 by wmperry]
2001-12-22 William M. Perry <wmperry@gnu.org>
* glyphs-gtk.c (gtk_xpm_instantiate): Don't bother doing the
xpm-color-symbols checks, they are impossible to implement with
GTK's XPM implementation. :(
2001-12-13 William M. Perry <wmperry@gnu.org>
* select-gtk.c (gtk_own_selection): Update to follow the new
method signature. Ignore owned_p as it appears to only be used
for motif hacks.
* redisplay-gtk.c (gtk_output_string): Fixed some warnings about
signed/unsigned comparison.
(gtk_output_gdk_pixmap): Remove clipping code as per change by
andy@xemacs.org to the X11 code.
(gtk_output_pixmap): Make this follow the output_pixmap method
conventions and expose it.
(gtk_output_horizontal_line): Renamed from output_hline, and
expose it in our method structure.
(gtk_ring_bell): Don't ring the bell if volume <= 0
* toolbar-gtk.c (gtk_output_toolbar_button):
(gtk_output_frame_toolbars):
(gtk_redraw_exposed_toolbars):
(gtk_redraw_frame_toolbars): These are now just aliases for the
common_XXX() routines in toolbar-common.c
* toolbar-common.c: New common toolbar implementation. This file
uses only the redisplay_XXX() functions and device methods to draw
the toolbar, and so should be portable across all windowing
systems (other than tty, and even then I imagine text-based stuff
would work if you had a way to select it).
| author | wmperry |
|---|---|
| date | Sun, 23 Dec 2001 20:28:22 +0000 |
| parents | 0784d089fdc9 |
| children | f99d3d25df86 |
line wrap: on
line source
: #-*- Perl -*- # Copyright (C) 1998 Free Software Foundation, Inc. # This file is part of XEmacs. # # XEmacs is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 2, or (at your option) any # later version. # # XEmacs is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with XEmacs; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # Author: Martin Buchholz eval 'exec perl -w -S $0 ${1+"$@"}' if 0; use strict; my ($myName, $srcdir, %exists, %uses, %generated_header); ($myName = $0) =~ s@.*/@@; my $usage =" Usage: $myName Generates Makefile dependencies for the XEmacs src directory. The dependencies are written to stdout.\n"; die $usage if @ARGV; ($srcdir = $0) =~ s@[^/]+$@@; $srcdir = "." if $srcdir eq ""; chdir $srcdir or die "$srcdir: $!"; opendir SRCDIR, "." or die "$srcdir: $!"; for (grep (/\.[ch]$/, readdir (SRCDIR))) { $exists{$_} = 1; } closedir SRCDIR; for (qw (config.h sheap-adjust.h paths.h Emacs.ad.h)) { $generated_header{$_} = 1; } # Although this is not technically true, it ought to be true, # and makes the generated Makefile smaller. $uses{'lisp.h'}{'config.h'} = 1; for my $file (keys %exists) { open (FILE, $file) or die "$file: $!"; undef $/; $_ = <FILE>; RemoveComments ($_); s/[ \t]+//g; # Find include dependencies for (/^\#include([^\n]+)/gm) { if (m@^\"([A-Za-z0-9._-]+\.[ch])\"@) { $uses{$file}{$1} = 1 if exists $exists{$1}; } elsif (m@<([A-Za-z0-9._-]+\.h)>@) { $uses{$file}{$1} = 1 if exists $generated_header{$1}; } elsif (m@\"../lwlib/([A-Za-z0-9._-]+\.h)\"@) { $uses{$file}{"\$(LWLIB_SRCDIR)/lwlib.h"} = 1; } } } # Make transitive closure of %uses while (1) { my $changedP = 0; for my $x (keys %uses) { for my $y (keys %{$uses{$x}}) { for my $z (keys %{$uses{$y}}) { if (! exists $uses{$x}{$z}) { $uses{$x}{$z} = 1; $changedP = 1; } } } } last if !$changedP; } # Print file header print "## This file is automatically generated by \`$myName'. Do not modify. #if defined(USE_UNION_TYPE) LISP_UNION_H=lisp-union.h #else LISP_UNION_H=lisp-disunion.h #endif "; my @LISP_H = ('lisp.h', sort keys %{$uses{'lisp.h'}}); print "LISP_H=@{[grep (!/lisp-(dis)?union\.h/, @LISP_H)]} \$(LISP_UNION_H)\n"; sub PrintDeps { my $file = shift; my $ofile = $file; $ofile =~ s/c$/o/; print "$ofile: "; if (exists $uses{$file}{'lisp.h'}) { delete @{%{$uses{$file}}}{@LISP_H}; $uses{$file}{'$(LISP_H)'} = 1; } print "@{[sort keys %{$uses{$file}}]}\n"; } sub PrintPatternDeps { my ($pattern, $CPP_SYMBOL) = @_; print "#if defined($CPP_SYMBOL)\n"; for my $file (sort grep (/$pattern/ && /\.c$/, keys %uses)) { PrintDeps($file); delete $uses{$file}; } print "#endif\n"; } PrintPatternDeps ('-msw\\.', "HAVE_MS_WINDOWS"); PrintPatternDeps ('-x\\.', "HAVE_X_WINDOWS"); PrintPatternDeps ('-tty\\.', "HAVE_TTY"); PrintPatternDeps ('-gtk\\.', "HAVE_GTK"); PrintPatternDeps ('^database', "HAVE_DATABASE"); PrintPatternDeps ('^mule', "MULE"); PrintPatternDeps ('^(?:External|extw-)', "EXTERNAL_WIDGET"); for my $file (sort grep (/\.c$/, keys %uses)) { PrintDeps($file); } # Surprisingly robust regexp to remove comments from arbitrary C code sub RemoveComments { $_[0] =~ s{ ( [^\"\'/]+ | (?:\"[^\"\\]*(?:\\.[^\"\\]*)*\" [^\"\'/]*)+ | (?:\'[^\'\\]*(?:\\.[^\'\\]*)*\' [^\"\'/]*)+ ) | / (?: \*[^*]*\*+(?:[^/*][^*]*\*+)*/ | /[^\n]* ) }{defined $1 ? $1 : ""}gsxeo; }
