1push @ExtUtils::MakeMaker::Overridable, qw(pm_to_blib);
2my $verb = $AM_DEFAULT_VERBOSITY;
3{ package MY;
4    sub _center {
5	my $z = shift;
6	(length $z == 2 ? "  $z   " : length $z == 4 ? " $z  " : " $z ").'   '
7    }
8    sub _silent_cmd {
9	my $z = shift;
10	$z =~ s{\t(?:- ?)?\K(?=\$\((?|(CC)CMD|(XS)UBPPRUN|(LD|MV|CHMOD)|(RM)_R?F|(CP)_NONEMPTY|FULL_(AR)\)))}{\$(PL_AM_V_$1)}g;
11	$z
12    }
13    sub c_o { _silent_cmd(shift->SUPER::c_o(@_)) }
14    sub xs_c { _silent_cmd(shift->SUPER::xs_c(@_)) }
15    sub xs_o { _silent_cmd(shift->SUPER::xs_o(@_)) }
16    sub dynamic_lib { _silent_cmd(shift->SUPER::dynamic_lib(@_)) }
17    sub static_lib { _silent_cmd(shift->SUPER::static_lib(@_)) }
18    sub dynamic_bs {
19	my $ret = shift->SUPER::dynamic_bs(@_);
20	$ret =~ s{Running Mkbootstrap for}{\$(PL_AM_V_BS_Text)}g;
21	_silent_cmd($ret)
22    }
23    sub pm_to_blib {
24	my $ret = shift->SUPER::pm_to_blib(@_);
25	$ret =~ s{^(\t(?:- ?)?)(?:\$\(NOECHO\) ?)?(.*-e ['"]pm_to_blib(.*\\\n)*.*)$}{$1\$(PL_AM_V_BLIB)$2\$(PL_AM_V_BLIB_Hide)}mg;
26	$ret
27    }
28    sub post_constants {
29	my $ret = shift->SUPER::post_constants(@_);
30	my @terse = qw(cc xs ld chmod cp ar blib);
31	my @silent = qw(mv rm);
32	my @special = qw(BLIB_Hide);
33
34	#default verbosity from command line parameter
35	$ret .= "
36AM_DEFAULT_VERBOSITY = @{[$verb ? 1 : 0]}
37";
38	#default options forward
39	$ret .= "
40PL_AM_V_${_} = \$(pl_am__v_${_}_\$(V))
41pl_am__v_${_}_ = \$(pl_am__v_${_}_\$(AM_DEFAULT_VERBOSITY))
42" for @special, map uc, @terse, @silent;
43
44	#quoted plain text needs extra quotes
45	$ret .= "
46PL_AM_V_BS_Text = \"\$(pl_am__v_BS_Text_\$(V))\"
47pl_am__v_BS_Text_ = \$(pl_am__v_BS_Text_\$(AM_DEFAULT_VERBOSITY))
48"
49	#hide pm_to_blib output
50. "
51pl_am__v_BLIB_Hide_0 = \$(DEV_NULL)
52pl_am__v_BLIB_Hide_1 =
53"
54	#text for Mkbootstrap
55. "
56pl_am__v_BS_Text_0 = \"@{[_center('BS')]}\"
57pl_am__v_BS_Text_1 = \"Running Mkbootstrap for\"
58";
59	#"terse" output
60	$ret .= "
61pl_am__v_${_}_0 = \$(NOECHO)echo \"@{[_center($_)]}\" \$\@;
62" for map uc, @terse;
63
64	#no output
65	$ret .= "
66pl_am__v_${_}_0 = \$(NOECHO)
67" for map uc, @silent;
68
69	#in verbose mode the "terse" echo expands to nothing
70	$ret .= "
71pl_am__v_${_}_1 =
72" for map uc, @terse, @silent;
73	$ret
74    }
75}
761;
77