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