generate CCFLAGS correctly
Jesse Luehrs [Mon, 3 Jan 2011 22:57:54 +0000 (16:57 -0600)]
Makefile.PL
inc/MMHelper.pm
inc/MakeMaker.pm

index 6eb0b0f..0a7006b 100644 (file)
@@ -28,5 +28,6 @@ eval MMHelper::my_package_subs();
 WriteMakefile(
     NAME => 'Moose',
     test => { TESTS => 't/*.t t/*/*.t' },
-    MMHelper::mm_args('dev'),
+    CCFLAGS => MMHelper::ccflags_static('dev'),
+    MMHelper::mm_args(),
 );
index a63cd59..02bf893 100644 (file)
@@ -7,15 +7,23 @@ use Config;
 use Cwd qw( abs_path );
 use File::Basename qw( dirname );
 
-sub mm_args {
+sub ccflags_dyn {
     my $is_dev = shift;
 
-    my $ccflags = ( $Config::Config{ccflags} || '' ) . ' -I.';
-    $ccflags .= ' -Wall -Wdeclaration-after-statement'
+    my $ccflags = q<( $Config::Config{ccflags} || '' ) . ' -I.'>;
+    $ccflags .= q< . ' -Wall -Wdeclaration-after-statement'>
         if $is_dev;
 
-    my %mm = ( CCFLAGS => $ccflags );
+    return $ccflags;
+}
+
+sub ccflags_static {
+    my $is_dev = shift;
 
+    return eval(ccflags_dyn($is_dev));
+}
+
+sub mm_args {
     my ( @object, %xs );
 
     for my $xs ( glob "xs/*.xs" ) {
@@ -32,7 +40,6 @@ sub mm_args {
     }
 
     return (
-        CCFLAGS => $ccflags,
         clean   => { FILES => join( q{ }, @object ) },
         OBJECT => join( q{ }, @object ),
         XS     => \%xs,
index 4c5f55d..5263fd3 100644 (file)
@@ -13,6 +13,9 @@ override _build_MakeFile_PL_template => sub {
 
     my $tmpl = super();
 
+    my $ccflags = MMHelper::ccflags_dyn();
+    $tmpl =~ s/^(WriteMakefile\()/\$WriteMakefileArgs{CCFLAGS} = $ccflags;\n\n$1/m;
+
     return $tmpl . "\n\n" . MMHelper::my_package_subs();
 };