summary refs log tree commit diff
path: root/pkgs/development/tools/build-managers/gnumake/3.82/log.patch
blob: e6197fd8e78fbeddef69130543d8b35fb004bd4e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
diff -rc job.c job.c
*** job.c	2006-03-20 04:03:04.000000000 +0100
--- job.c	2009-01-19 19:37:28.000000000 +0100
***************
*** 1083,1089 ****
       appear.  */
  
    message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag))
! 	   ? "%s" : (char *) 0, p);
  
    /* Tell update_goal_chain that a command has been started on behalf of
       this target.  It is important that this happens here and not in
--- 1083,1089 ----
       appear.  */
  
    message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag))
!           ? (enable_nested_output ? "\e[3s\e[a%s\e[b" : "%s") : (char *) 0, p);
  
    /* Tell update_goal_chain that a command has been started on behalf of
       this target.  It is important that this happens here and not in
diff -rc main.c main.c
*** main.c	2006-03-20 03:36:37.000000000 +0100
--- main.c	2009-01-19 19:41:41.000000000 +0100
***************
*** 886,891 ****
--- 886,900 ----
  }
  
  
+ static void close_nesting()
+ {
+   while (stdout_nesting_level--)
+     printf("\e[q");
+   while (stderr_nesting_level--)
+     fprintf(stderr, "\e[q");
+ }
+ 
+ 
  #ifdef _AMIGA
  int
  main (int argc, char **argv)
***************
*** 931,936 ****
--- 940,950 ----
    atexit (close_stdout);
  #endif
  
+   atexit(close_nesting);
+ 
+   if (getenv("NIX_INDENT_MAKE"))
+     enable_nested_output = 1;
+ 
    /* Needed for OS/2 */
    initialize_main(&argc, &argv);
  
***************
*** 3095,3100 ****
--- 3109,3120 ----
  
    /* Use entire sentences to give the translators a fighting chance.  */
  
+   if (entering && enable_nested_output)
+     {
+       printf("\e[p");
+       stdout_nesting_level++;
+     }
+   
    if (makelevel == 0)
      if (starting_directory == 0)
        if (entering)
***************
*** 3124,3129 ****
--- 3144,3159 ----
          printf (_("%s[%u]: Leaving directory `%s'\n"),
                  program, makelevel, starting_directory);
  
+   if (!entering && enable_nested_output)
+     {
+       printf("\e[q");
+       stdout_nesting_level--;
+     }
+  
    /* Flush stdout to be sure this comes before any stderr output.  */
    fflush (stdout);
  }
+ 
+ int enable_nested_output = 0;
+ int stdout_nesting_level = 0;
+ int stderr_nesting_level = 0;
diff -rc make.h
*** make.h	2006-02-16 00:54:43.000000000 +0100
--- make.h	2009-01-19 19:32:03.000000000 +0100
***************
*** 609,611 ****
--- 609,614 ----
  
  #define ENULLLOOP(_v,_c)   do { errno = 0; (_v) = _c; } \
                             while((_v)==0 && errno==EINTR)
+ extern int enable_nested_output;
+ extern int stdout_nesting_level;
+ extern int stderr_nesting_level;
diff -rc reremake.c
*** remake.c	2006-03-20 03:36:37.000000000 +0100
--- remake.c	2009-01-19 19:39:40.000000000 +0100
***************
*** 1120,1126 ****
--- 1120,1137 ----
        /* The normal case: start some commands.  */
        if (!touch_flag || file->cmds->any_recurse)
  	{
+           if (enable_nested_output) 
+             {
+               log_working_directory (1);
+               fprintf(stderr, "\e[pbuilding %s\n", file->name);
+               stderr_nesting_level++;
+             }
  	  execute_file_commands (file);
+           if (enable_nested_output) 
+             {
+               fprintf(stderr, "\e[q");
+               stderr_nesting_level--;
+             }
  	  return;
  	}