[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 6/6] * main.c: add --dep parameter for print variable dependency
From: |
Macpaul Lin |
Subject: |
[PATCH 6/6] * main.c: add --dep parameter for print variable dependency |
Date: |
Thu, 14 Aug 2014 15:37:39 +0800 |
(print_dependency): print each value_record and parent_record of a variable.
Signed-off-by: Macpaul Lin <address@hidden>
---
main.c | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/main.c b/main.c
index 0508ae1..abbcb28 100644
--- a/main.c
+++ b/main.c
@@ -53,6 +53,7 @@ void remote_setup (void);
void remote_cleanup (void);
RETSIGTYPE fatal_error_signal (int sig);
+void print_variable_dependency (void);
void print_variable_data_base (void);
void print_dir_data_base (void);
void print_rule_data_base (void);
@@ -180,6 +181,11 @@ int ignore_errors_flag = 0;
int print_data_base_flag = 0;
+/* Nonzero means don't remake anything, just print the dependency
+ of variables reading from the makefile (-dep). */
+
+int print_dependency_flag = 0;
+
/* Nonzero means don't remake anything; just return a nonzero status
if the specified targets are not up to date (-q). */
@@ -321,6 +327,8 @@ static const char *const usage[] =
N_("\
-d Print lots of debugging information.\n"),
N_("\
+ --dep Print dependency of variables extracted from
Makefile.\n"),
+ N_("\
--debug[=FLAGS] Print various types of debugging
information.\n"),
N_("\
-e, --environment-overrides\n\
@@ -407,6 +415,7 @@ static const struct command_switch switches[] =
{ 'm', ignore, 0, 0, 0, 0, 0, 0, 0 },
{ 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, "just-print" },
{ 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" },
+ { 'P', flag, &print_dependency_flag, 1, 1, 0, 0, 0, "print-dependency" },
{ 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" },
{ 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" },
{ 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0,
@@ -462,6 +471,7 @@ static struct option long_option_aliases[] =
{ "dry-run", no_argument, 0, 'n' },
{ "recon", no_argument, 0, 'n' },
{ "makefile", required_argument, 0, 'f' },
+ { "dep", no_argument, 0, 'P' },
};
/* List of goal targets. */
@@ -2610,7 +2620,7 @@ handle_non_switch_argument (const char *arg, int env)
/* Ignore plain '-' for compatibility. */
return;
- v = try_variable_definition (0, arg, o_command, 0);
+ v = try_variable_definition (0, arg, o_command, 0, NULL);
if (v != 0)
{
/* It is indeed a variable definition. If we don't already have this
@@ -3275,6 +3285,24 @@ print_version (void)
fflush (stdout);
}
+/* Print a bunch of information about dependency between variables. */
+
+static void
+print_dependency ()
+{
+ time_t when = time ((time_t *) 0);
+
+ print_version ();
+
+ printf (_("\n# Make dependency from data base, printed on %s"), ctime
(&when));
+
+ print_variable_dependency ();
+ strcache_print_stats ("#");
+
+ when = time ((time_t *) 0);
+ printf (_("\n# Finished Make dependency from data base on %s\n"), ctime
(&when));
+}
+
/* Print a bunch of information about this and that. */
static void
@@ -3403,6 +3431,9 @@ die (int status)
if (print_data_base_flag)
print_data_base ();
+ if (print_dependency_flag)
+ print_dependency ();
+
if (verify_flag)
verify_file_data_base ();
--
1.9.1