1 /* depend.c - Handle dependency tracking.
2 Copyright (C) 1997 Free Software Foundation, Inc.
4 This file is part of GAS, the GNU Assembler.
6 GAS is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 GAS is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GAS; see the file COPYING. If not, write to the Free
18 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
23 /* The file to write to, or NULL if no dependencies being kept. */
24 static char *dep_file
= NULL
;
29 struct dependency
*next
;
32 /* All the files we depend on. */
33 static struct dependency
*dep_chain
= NULL
;
35 /* Current column in output file. */
36 static int column
= 0;
38 static void wrap_output
PARAMS ((FILE *, char *, int));
40 /* Number of columns allowable. */
41 #define MAX_COLUMNS 72
45 /* Start saving dependencies, to be written to FILENAME. If this is
46 never called, then dependency tracking is simply skipped. */
49 start_dependencies (filename
)
55 /* Noticed a new filename, so try to register it. */
58 register_dependency (filename
)
61 struct dependency
*dep
;
66 for (dep
= dep_chain
; dep
!= NULL
; dep
= dep
->next
)
68 if (! strcmp (filename
, dep
->file
))
72 dep
= (struct dependency
*) xmalloc (sizeof (struct dependency
));
73 dep
->file
= xstrdup (filename
);
74 dep
->next
= dep_chain
;
78 /* Append some output to the file, keeping track of columns and doing
79 wrapping as necessary. */
82 wrap_output (f
, string
, spacer
)
87 int len
= strlen (string
);
92 if (column
&& MAX_COLUMNS
- 1 /*spacer*/ - 2 /*` \'*/ < column
+ len
)
94 fprintf (f
, " \\\n ");
116 /* Print dependency file. */
119 print_dependencies ()
122 struct dependency
*dep
;
124 if (dep_file
== NULL
)
127 f
= fopen (dep_file
, "w");
130 as_warn ("Can't open `%s' for writing", dep_file
);
135 wrap_output (f
, out_file_name
, ':');
136 for (dep
= dep_chain
; dep
!= NULL
; dep
= dep
->next
)
137 wrap_output (f
, dep
->file
, ' ');
142 as_warn ("Can't close %s", dep_file
);
This page took 0.031919 seconds and 4 git commands to generate.