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 }
|