796
+ − 1 : #-*- Perl -*-
+ − 2
+ − 3 # Generate dependency info in a form acceptable to nmake
+ − 4 #
+ − 5 # Copyright (C) 2000, 2002 Jonathan Harris.
+ − 6 #
+ − 7 # This file is part of XEmacs.
+ − 8 #
+ − 9 # XEmacs is free software; you can redistribute it and/or modify it
+ − 10 # under the terms of the GNU General Public License as published by the
+ − 11 # Free Software Foundation; either version 2, or (at your option) any
+ − 12 # later version.
+ − 13 #
+ − 14 # XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ − 15 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 16 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 17 # for more details.
+ − 18 #
+ − 19 # You should have received a copy of the GNU General Public License
+ − 20 # along with XEmacs; see the file COPYING. If not, write to
+ − 21 # the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ − 22 # Boston, MA 02111-1307, USA.
+ − 23 #
+ − 24 # Author: Jonathan Harris <jonathan@xemacs.org>
+ − 25 #
+ − 26 # Synched up with: Not in FSF.
+ − 27
+ − 28 use Getopt::Long;
+ − 29
+ − 30 my $optsok = GetOptions ('src=s' => \$src,
+ − 31 'config=s' => \$config,
+ − 32 'obj=s' => \$obj);
+ − 33
+ − 34 die "Generates nmake dependencies for the XEmacs src directory.
+ − 35
+ − 36 Usage: $0 --src SRCDIR --config CONFIGDIR --obj OBJDIR
+ − 37
+ − 38 SRCDIR Location of XEmacs sources
+ − 39 CONFIGDIR Location of config.inc
+ − 40 OBJDIR Location for compiler-generated object files
+ − 41
+ − 42 Expects output from src/make-src-depend on stdin.
+ − 43 The dependencies are written to stdout.
+ − 44 " if (@ARGV || !$optsok
+ − 45 || !defined ($src) || !defined ($config) || !defined ($obj));
+ − 46
+ − 47 while (<>)
+ − 48 {
1111
+ − 49 # must hack away CRLF junk. wouldn't it be nice if perl handled this
+ − 50 # right?? really can't be that hard!!!
+ − 51 s/\r\n/\n/g;
+ − 52
796
+ − 53 # rewrite references to generating script
+ − 54 s/make-src-depend/make-nt-depend/;
+ − 55
+ − 56 # rewrite '#if defined(...)' into nmake syntax
+ − 57 s/^#if defined(.+)/!if defined$1/;
+ − 58
+ − 59 # rewrite '#else' and '#endif' into nmake syntax
+ − 60 s/^#e/!e/;
+ − 61
+ − 62 # add src path to source filenames
+ − 63 # allow for source filename being used in variable assignment
+ − 64 s/([\s=])([\w\d\.\-]+\.[ch])/$1$src\\$2/g;
+ − 65
+ − 66 # add obj path to object filenames
+ − 67 # rewrite .o to .obj
1330
+ − 68 s/^(.+)\.o:(.+)/$obj\\$1.obj:$2/;
796
+ − 69
1330
+ − 70 # add dependency on config.inc wherever config.h is.
+ − 71 s/\\config.h/\\config.h $config\\config.inc/;
1111
+ − 72 print;
796
+ − 73 }