Better solution to silencing prereq warnings from threads's
[p5sagit/p5-mst-13.2.git] / ext / threads / Makefile.PL
1 # Module makefile for threads (using ExtUtils::MakeMaker)
2
3 require 5.008;
4
5 use strict;
6 use warnings;
7
8 use ExtUtils::MakeMaker;
9
10
11 # Used to check for a 'C' compiler
12 sub check_cc
13 {
14     require File::Spec;
15
16     my $cmd = $_[0];
17     if (-x $cmd or MM->maybe_command($cmd)) {
18         return (1);       # CC command found
19     }
20     for my $dir (File::Spec->path(), '.') {
21         my $abs = File::Spec->catfile($dir, $cmd);
22         if (-x $abs or MM->maybe_command($abs)) {
23             return (1);   # CC command found
24         }
25     }
26     return;
27 }
28
29 sub have_cc
30 {
31     eval { require Config_m; };     # ExtUtils::FakeConfig (+ ActivePerl)
32     if ($@) {
33         eval { require Config; };   # Everyone else
34     }
35     my @chunks = split(/ /, $Config::Config{cc});
36     # $Config{cc} may contain args; try to find out the program part
37     while (@chunks) {
38         if (check_cc("@chunks")) {
39             return (1);   # CC command found
40         }
41         pop(@chunks);
42     }
43     return;
44 }
45
46
47 # Build options for different environments
48 my @conditional_params;
49 if (grep { $_ eq 'PERL_CORE=1' } @ARGV) {
50     # Core
51     push(@conditional_params, 'MAN3PODS' => {},
52                               'NORECURS' => 1);
53 } else {
54     # CPAN
55
56     # Verify that a 'C' compiler is available
57     if (! have_cc()) {
58         die("No 'C' compiler found to build 'threads'\n");
59     }
60
61     push(@conditional_params, 'DEFINE' => '-DHAS_PPPORT_H');
62 }
63
64 my $prereqs;
65
66 if (!$ENV{PERL_CORE}) {
67     my $prereqs = {
68         'strict'          => 0,
69         'warnings'        => 0,
70         'overload'        => 0,
71         'Config'          => 0,
72         'Carp'            => 0,
73         'XSLoader'        => 0,
74
75         'ExtUtils::testlib' => 0,
76         'Hash::Util'      => 0,
77         'IO::File'        => 0,
78     };
79 }
80
81 # Create Makefile
82 WriteMakefile(
83     'NAME'              => 'threads',
84     'AUTHOR'            => 'Artur Bergman, Jerry D. Hedden <jdhedden AT cpan DOT org>',
85     'VERSION_FROM'      => 'threads.pm',
86     'ABSTRACT_FROM'     => 'threads.pm',
87     'PM' => {
88         'threads.pm'    => '$(INST_LIBDIR)/threads.pm',
89     },
90     'PREREQ_PM'         => $prereqs,
91     'INSTALLDIRS'       => 'perl',
92
93     ((ExtUtils::MakeMaker->VERSION() lt '6.25') ?
94         ('PL_FILES' => { })            : ()),
95     ((ExtUtils::MakeMaker->VERSION() gt '6.30') ?
96         ('LICENSE'  => 'perl')         : ()),
97
98     @conditional_params
99 );
100
101 # EOF