41aaab6ff1fec3631ed051e06ca5f8187849f1b7
[gitmo/Class-MOP.git] / Makefile.PL
1 use strict;
2 use warnings;
3 use inc::Module::Install;
4 use 5.008001;
5
6 name 'Class-MOP';
7 perl_version '5.008001';
8 all_from 'lib/Class/MOP.pm';
9 license 'perl';
10
11 my %conflicts = (
12     'Moose' => '1.04',
13 );
14
15 check_conflicts(%conflicts);
16
17 require Config;
18 my $ccflags = ( $Config::Config{ccflags} || '' ) . ' -I.';
19
20 if ( -d '.git' || $ENV{MAINTAINER_MODE} ) {
21     $ccflags .= ' -Wall -Wdeclaration-after-statement';
22 }
23
24 requires 'Carp';
25 requires 'Data::OptList';
26 requires 'Devel::GlobalDestruction';
27 requires 'List::MoreUtils' => '0.12';
28 requires 'MRO::Compat'  => '0.05';
29 requires 'Package::DeprecationManager' => '0.04';
30 requires 'Package::Stash';
31 requires 'Scalar::Util' => '1.18';
32 requires 'Sub::Name'    => '0.04';
33 requires 'Try::Tiny'    => '0.02';
34 requires 'Task::Weaken';
35
36 test_requires 'File::Spec';
37 test_requires 'Test::More'      => '0.88';
38 test_requires 'Test::Exception' => '0.27';
39
40 repository 'git://git.moose.perl.org/Class-MOP.git';
41 add_metadata(x_authority => 'cpan:STEVAN');
42
43 extra_tests();
44
45 makemaker_args( CCFLAGS => $ccflags );
46
47 {
48     my (@clean, @OBJECT, %XS);
49
50     for my $xs (<xs/*.xs>) {
51         (my $c = $xs) =~ s/\.xs$/.c/i;
52         (my $o = $xs) =~ s/\.xs$/\$(OBJ_EXT)/i;
53
54         $XS{$xs} = $c;
55         push @OBJECT, $o;
56         push @clean, $o;
57     }
58
59     for my $c (<*.c>) {
60         (my $o = $c) =~ s/\.c$/\$(OBJ_EXT)/i;
61         push @OBJECT, $o;
62         push @clean, $o;
63     }
64
65     makemaker_args(
66         clean  => { FILES => join(q{ }, @clean) },
67         OBJECT => join (q{ }, @OBJECT),
68         XS     => \%XS,
69     );
70 }
71
72 postamble(<<'EOM');
73 $(OBJECT) : mop.h
74 EOM
75
76 WriteAll();
77
78 package MY;
79
80 use Config;
81
82 sub const_cccmd {
83     my $ret = shift->SUPER::const_cccmd(@_);
84     return q{} unless $ret;
85
86     if ($Config{cc} =~ /^cl\b/i) {
87         warn 'you are using MSVC... my condolences.';
88         $ret .= ' /Fo$@';
89     }
90     else {
91         $ret .= ' -o $@';
92     }
93
94     return $ret;
95 }