Tweaks for Makefile.PL
[gitmo/Mouse.git] / Makefile.PL
1 use strict;
2 use warnings;
3 use inc::Module::Install;
4
5 system($^X, 'author/generate-mouse-tiny.pl', 'lib/Mouse/Tiny.pm') == 0
6     or warn "Cannot generate Mouse::Tiny: $!";
7
8 name     'Mouse';
9 all_from 'lib/Mouse.pm';
10
11 tests 't/*.t t/*/*.t';
12
13 # Scalar::Util < 1.14 has a bug.
14 # > Fixed looks_like_number(undef) to return false for perl >= 5.009002
15 requires 'Scalar::Util' => 1.14;
16
17 test_requires 'Test::More'      => 0.88;
18 test_requires 'Test::Exception' => 0.27;
19 # test_requires 'Test::Output'    => 0.16; # too many dependencies!
20
21 include 'Test::Exception'; # work around 0.27_0x (its use of diehook might be wrong)
22
23 recommends 'MRO::Compat' if $] < 5.010;
24
25 my $use_xs;
26
27 for (@ARGV) {
28     /^--pp$/ and $use_xs = 0;
29     /^--xs$/ and $use_xs = 1;
30 }
31
32 if(!defined $use_xs){
33     configure_requires 'ExtUtils::CBuilder';
34     require ExtUtils::CBuilder;
35     $use_xs = ExtUtils::CBuilder->new(quiet => 1)->have_compiler();
36 }
37
38 if($use_xs){
39     require Module::Install::XSUtil;
40     use_ppport(3.19);
41     cc_warnings();
42     cc_src_paths('xs-src');
43
44     print "Mouse configured in XS (--xs)\n";
45 }
46 else{
47     print "Mouse configured in Pure Perl (--pp)\n";
48 }
49
50 if ($Module::Install::AUTHOR) {
51     local @INC = ('lib', @INC);
52     require 'lib/Mouse/Spec.pm';
53     my $require_version = Mouse::Spec->MooseVersion;
54
55     if (eval{ require Moose; Moose->VERSION($require_version) }) {
56         if (eval 'use Module::Install::AuthorTests; 1') {
57             do 'author/create-moose-compatibility-tests.pl';
58             recursive_author_tests('xt');
59         } else {
60             print "you don't have a M::I::AuthorTests.\n";
61         }
62     } else {
63         print "you don't have Moose $require_version. skipping moose compatibility test\n";
64     }
65 }
66
67 clean_files 'lib/Mouse/Tiny.pm';
68
69 WriteAll check_nmake => 0;
70