summaryrefslogtreecommitdiff
path: root/~lukeshu/make-graph/make-graph.patch
diff options
context:
space:
mode:
Diffstat (limited to '~lukeshu/make-graph/make-graph.patch')
-rw-r--r--~lukeshu/make-graph/make-graph.patch273
1 files changed, 0 insertions, 273 deletions
diff --git a/~lukeshu/make-graph/make-graph.patch b/~lukeshu/make-graph/make-graph.patch
deleted file mode 100644
index 083db55e4..000000000
--- a/~lukeshu/make-graph/make-graph.patch
+++ /dev/null
@@ -1,273 +0,0 @@
-diff -ur make-3.82/file.c make-wch/file.c
---- make-3.82/file.c 2010-07-12 21:20:39.000000000 -0400
-+++ make-wch/file.c 2010-08-19 23:28:20.162660391 -0400
-@@ -1021,6 +1021,129 @@
- hash_print_stats (&files, stdout);
- }
-
-+/* Dump the dependency graph to a Graphviz file (on stdout) */
-+
-+void
-+print_graph_prereqs (const char *filename, const struct dep *deps)
-+{
-+ const struct dep *ood = 0;
-+
-+ /* Print all normal dependencies; note any order-only deps. */
-+ for (; deps != 0; deps = deps->next)
-+ if (! deps->ignore_mtime)
-+ printf (" \"%s\" -> \"%s\";\n", filename, dep_name (deps));
-+
-+ /* Print order-only deps, if we have any. */
-+ if (ood)
-+ {
-+ for (ood = ood->next; ood != 0; ood = ood->next)
-+ if (ood->ignore_mtime)
-+ printf (" %s -> %s [style=dotted];\n", filename, dep_name (ood));
-+ /* XXX: we need to distinguish these some how.
-+ * Is dotting them the right way? */
-+ }
-+}
-+
-+static void
-+print_graph_file (const void *item)
-+{
-+ const struct file *f = item;
-+
-+ int built_in_special_target=(
-+ (0==strcmp(f->name,".PHONY"))
-+ || (0==strcmp(f->name,".SUFFIXES"))
-+ || (0==strcmp(f->name,".DEFAULT"))
-+ || (0==strcmp(f->name,".PRECIOUS"))
-+ || (0==strcmp(f->name,".INTERMEDIATE"))
-+ || (0==strcmp(f->name,".SECONDARY"))
-+ || (0==strcmp(f->name,".SECONDEXPANSION"))
-+ || (0==strcmp(f->name,".DELETE_ON_ERROR"))
-+ || (0==strcmp(f->name,".IGNORE"))
-+ || (0==strcmp(f->name,".LOW_RESOLUTION_TIME"))
-+ || (0==strcmp(f->name,".SILENT"))
-+ || (0==strcmp(f->name,".EXPORT_ALL_VARIABLES"))
-+ || (0==strcmp(f->name,".NOTPARALLEL"))
-+ || (0==strcmp(f->name,".ONESHELL"))
-+ || (0==strcmp(f->name,".POSIX"))
-+ );
-+ if ((f->is_target) && (!built_in_special_target))
-+ {
-+ printf (" \"%s\" [", f->name);
-+ /* XXX some of these should be attached to the nodes in some way;
-+ * though I'm not sure what style changes should be made for which ones.
-+ * ~ LukeShu
-+ if (f->double_colon) puts (_("// Double-colon rule."));
-+ if (f->precious) puts (_("// Precious file (prerequisite of .PRECIOUS)."));
-+ */if (f->phony) puts (_(" color=blue "));/*
-+ if (f->cmd_target) puts (_("// Command line target."));
-+ if (f->dontcare) puts (_("// A default, MAKEFILES, or -include/sinclude makefile."));
-+ if (f->tried_implicit) puts (_("// Implicit rule search has been done."));
-+ else puts (_("// Implicit rule search has not been done."));
-+ if (f->stem != 0) printf (_("// Implicit/static pattern stem: `%s'\n"), f->stem);
-+ if (f->intermediate) puts (_("// File is an intermediate prerequisite."));
-+ if (f->also_make != 0)
-+ {
-+ const struct dep *d;
-+ fputs (_("# Also makes:"), stdout);
-+ for (d = f->also_make; d != 0; d = d->next)
-+ printf (" %s\n", dep_name (d));
-+ }
-+ if (f->last_mtime == UNKNOWN_MTIME) puts (_("// Modification time never checked."));
-+ else if (f->last_mtime == NONEXISTENT_MTIME) puts (_("// File does not exist."));
-+ else if (f->last_mtime == OLD_MTIME) puts (_("// File is very old."));
-+ else
-+ {
-+ char buf[FILE_TIMESTAMP_PRINT_LEN_BOUND + 1];
-+ file_timestamp_sprintf (buf, f->last_mtime);
-+ printf (_("// Last modified %s\n"), buf);
-+ }
-+ if (f->updated) puts (_("// File has been updated."));
-+ else puts (_("// File has not been updated."));
-+ switch (f->command_state)
-+ {
-+ case cs_running: puts (_("// Update: Running (THIS IS A BUG).")); break;
-+ case cs_deps_running: puts (_("// Update: Dependencies running (THIS IS A BUG).")); break;
-+ case cs_not_started:
-+ case cs_finished:
-+ switch (f->update_status)
-+ {
-+ case -1: break;
-+ case 0: puts (_("// Update: Successfully")); break;
-+ case 1: assert (question_flag);
-+ puts (_("// Update: Needs to be (-q is set)")); break;
-+ case 2: puts (_("// Update: Failed")); break;
-+ default: puts (_("// Update: Invalid `update_status' value));
-+ fflush (stdout);
-+ fflush (stderr);
-+ abort ();
-+ }
-+ break;
-+ default: puts (_("// Update: Invalid `command_state' value"));
-+ fflush (stdout);
-+ fflush (stderr);
-+ abort ();
-+ }
-+ if (f->variables != 0) print_file_variables (f);
-+ if (f->cmds != 0) print_commands (f->cmds);
-+ */
-+ puts("];");
-+ print_graph_prereqs (f->name, f->deps);
-+ }
-+
-+ if (f->prev)
-+ print_graph_file ((const void *) f->prev);
-+}
-+
-+void
-+print_graph (void)
-+{
-+ printf ("%sgraph make%i {\n",
-+ (makelevel==0)?"di":"sub",
-+ getpid());
-+ hash_map (&files, print_graph_file);
-+ puts ("}");
-+}
-+
- /* Verify the integrity of the data base of files. */
-
- #define VERIFY_CACHED(_p,_n) \
-diff -ur make-3.82/filedef.h make-wch/filedef.h
---- make-3.82/filedef.h 2010-07-12 21:20:39.000000000 -0400
-+++ make-wch/filedef.h 2010-08-19 21:09:34.314660209 -0400
-@@ -116,6 +116,7 @@
- char *build_target_list (char *old_list);
- void print_prereqs (const struct dep *deps);
- void print_file_data_base (void);
-+void print_graph (void);
-
- #if FILE_TIMESTAMP_HI_RES
- # define FILE_TIMESTAMP_STAT_MODTIME(fname, st) \
-diff -ur make-3.82/main.c make-wch/main.c
---- make-3.82/main.c 2010-07-19 03:10:53.000000000 -0400
-+++ make-wch/main.c 2010-08-21 22:32:56.818417305 -0400
-@@ -175,6 +175,11 @@
-
- int print_data_base_flag = 0;
-
-+/* Nonzero means don't remake anything, just print the dependency graph
-+ that results from reading the makefile (-g). */
-+
-+int print_graph_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 +326,9 @@
- -f FILE, --file=FILE, --makefile=FILE\n\
- Read FILE as a makefile.\n"),
- N_("\
-+ -g, --graph Print make's internal dependency graph\n\
-+ in Graphviz format, without remaking makefiles.\n"),
-+ N_("\
- -h, --help Print this message and exit.\n"),
- N_("\
- -i, --ignore-errors Ignore errors from recipes.\n"),
-@@ -385,6 +393,7 @@
- #endif
- { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", },
- { 'f', filename, &makefiles, 0, 0, 0, 0, 0, "file" },
-+ { 'g', flag, &print_graph_flag, 1, 1, 0, 0, 0, "graph" },
- { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" },
- { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" },
- { 'I', filename, &include_directories, 1, 1, 0, 0, 0,
-@@ -1946,7 +1955,10 @@
- define_makeflags (1, 1);
-
- rebuilding_makefiles = 1;
-- status = update_goal_chain (read_makefiles);
-+ if (print_graph_flag)
-+ status = -1;
-+ else
-+ status = update_goal_chain (read_makefiles);
- rebuilding_makefiles = 0;
-
- switch (status)
-@@ -2278,33 +2290,37 @@
-
- {
- int status;
-+ if (print_graph_flag)
-+ status=0;
-+ else
-+ {
-+ switch (update_goal_chain (goals))
-+ {
-+ case -1:
-+ /* Nothing happened. */
-+ case 0:
-+ /* Updated successfully. */
-+ status = makefile_status;
-+ break;
-+ case 1:
-+ /* We are under -q and would run some commands. */
-+ status = MAKE_TROUBLE;
-+ break;
-+ case 2:
-+ /* Updating failed. POSIX.2 specifies exit status >1 for this;
-+ but in VMS, there is only success and failure. */
-+ status = MAKE_FAILURE;
-+ break;
-+ default:
-+ abort ();
-+ }
-
-- switch (update_goal_chain (goals))
-- {
-- case -1:
-- /* Nothing happened. */
-- case 0:
-- /* Updated successfully. */
-- status = makefile_status;
-- break;
-- case 1:
-- /* We are under -q and would run some commands. */
-- status = MAKE_TROUBLE;
-- break;
-- case 2:
-- /* Updating failed. POSIX.2 specifies exit status >1 for this;
-- but in VMS, there is only success and failure. */
-- status = MAKE_FAILURE;
-- break;
-- default:
-- abort ();
-- }
--
-- /* If we detected some clock skew, generate one last warning */
-- if (clock_skew_detected)
-- error (NILF,
-- _("warning: Clock skew detected. Your build may be incomplete."));
--
-+ /* If we detected some clock skew, generate one last warning */
-+ if (clock_skew_detected)
-+ error (NILF,
-+ _("warning: Clock skew detected. Your build may be incomplete."));
-+ }
-+
- /* Exit. */
- die (status);
- }
-@@ -3042,7 +3058,7 @@
- {
- static int printed_version = 0;
-
-- char *precede = print_data_base_flag ? "# " : "";
-+ char *precede = (print_data_base_flag||print_graph_flag) ? "# " : "";
-
- if (printed_version)
- /* Do it only once. */
-@@ -3188,6 +3204,10 @@
- if (print_data_base_flag)
- print_data_base ();
-
-+
-+ if (print_graph_flag)
-+ print_graph ();
-+
- verify_file_data_base ();
-
- clean_jobserver (status);