]> git.vpit.fr Git - perl/modules/re-engine-Hooks.git/blob - Makefile.PL
No tabs please
[perl/modules/re-engine-Hooks.git] / Makefile.PL
1 use 5.010001;
2
3 use strict;
4 use warnings;
5 use ExtUtils::MakeMaker;
6
7 my $dist = 're-engine-Hooks';
8
9 (my $name = $dist) =~ s{-}{::}g;
10
11 (my $file = $dist) =~ s{-}{/}g;
12 $file = "lib/$file.pm";
13
14 my %PREREQ_PM = (
15  'Carp'       => 0,
16  'DynaLoader' => 0,
17 );
18
19 my %META = (
20  configure_requires => {
21   'ExtUtils::Depends'   => 0,
22   'ExtUtils::MakeMaker' => 0,
23   'File::Spec'          => 0,
24  },
25  build_requires => {
26   'ExtUtils::Depends'   => 0,
27   'ExtUtils::MakeMaker' => 0,
28   'File::Spec'          => 0,
29   'POSIX'               => 0,
30   'Test::More'          => 0,
31   'blib'                => 0,
32   %PREREQ_PM,
33  },
34  dynamic_config => 1,
35  resources => {
36   bugtracker => "http://rt.cpan.org/NoAuth/ReportBug.html?Queue=$dist",
37   homepage   => "http://search.cpan.org/dist/$dist/",
38   license    => 'http://dev.perl.org/licenses/',
39   repository => "http://git.profvince.com/?p=perl%2Fmodules%2F$dist.git",
40  },
41 );
42
43 sub versioned_file {
44  my ($file) = @_;
45
46  my $version = "$]";
47  $version    =~ s/\.//g;
48  my $len     = length $version;
49  if ($len > 7) {
50   die "Invalid perl version";
51  } else {
52   $version .= '0' x (7 - $len);
53  }
54
55  require File::Spec;
56  my $versioned_file = File::Spec->catfile('src', $version, $file);
57
58  return -e $versioned_file ? $versioned_file : undef;
59 }
60
61 unless (defined versioned_file('regcomp.c')) {
62  print STDERR <<EOF;
63      This version of perl ($]) is not supported by this version of
64      re::engine::Hooks. If your perl has been recently released,
65      make sure there isn't a newer version of the module available
66      on the CPAN.
67 EOF
68  exit 0;
69 }
70
71 my @DEFINES = qw<-DPERL_EXT_RE_BUILD -DPERL_EXT>;
72 @DEFINES    = (DEFINE => join ' ', @DEFINES) if @DEFINES;
73
74 use ExtUtils::Depends;
75
76 my $ed = ExtUtils::Depends->new($name);
77 $ed->add_c('re_comp.c');
78 $ed->add_c('re_exec.c');
79 $ed->add_xs('Hooks.xs');
80 $ed->add_pm($file => do { local $_ = $file; s/^lib/\$(INST_LIB)/; $_ });
81 $ed->install('re_engine_hooks.h');
82 $ed->save_config('Files.pm');
83
84 my %ed_vars = $ed->get_makefile_vars;
85 $ed_vars{clean}->{FILES} .= ' ' . join ' ', (
86  "$dist-*",
87  'Files.pm',
88  qw<*.gcov *.gcda *.gcno cover_db Debian_CPANTS.txt>,
89  qw<re_comp.c re_exec.c dquote_static.c>,
90 );
91
92 WriteMakefile(
93  NAME             => $name,
94  AUTHOR           => 'Vincent Pit <perl@profvince.com>',
95  LICENSE          => 'perl',
96  VERSION_FROM     => $file,
97  ABSTRACT_FROM    => $file,
98  PL_FILES         => {},
99  PREREQ_PM        => \%PREREQ_PM,
100  MIN_PERL_VERSION => '5.010001',
101  META_MERGE       => \%META,
102  dist             => {
103   PREOP    => "pod2text $file > \$(DISTVNAME)/README",
104   COMPRESS => 'gzip -9f', SUFFIX => 'gz'
105  },
106  XSPROTOARG       => '-noprototypes',
107  @DEFINES,
108  FUNCLIST         => [ qw<
109   boot_re__engine__Hooks
110   reh_register
111  > ],
112  %ed_vars,
113 );
114
115 {
116  my $args_dat = './args.dat';
117
118  open my $fh, '>', $args_dat or die "open(>$args_dat): $!";
119  for (@ARGV) {
120   my $arg = $_;
121   $arg =~ s{\s*(['"])\s*(.*)\s*\1\s*$}{$2}s;
122   $arg =~ s{([^=/.a-zA-Z0-9-])}{sprintf "[%d]", ord $1}ge;
123   print $fh "$arg\n";
124  }
125 }
126
127 package MY;
128
129 sub postamble {
130  my $regcomp_c       = main::versioned_file('regcomp.c');
131  my $regexec_c       = main::versioned_file('regexec.c');
132  my $dquote_static_c = main::versioned_file('dquote_static.c');
133
134  my $dquote_static_dep = defined $dquote_static_c ? 'dquote_static.c' : '';
135
136  my $rules = <<EOF;
137 re_comp.c : $regcomp_c
138         - \$(RM_F) re_comp.c
139         \$(CP) $regcomp_c re_comp.c
140
141 re_comp\$(OBJ_EXT) : re_comp.c $dquote_static_dep
142
143 re_exec.c : $regexec_c
144         - \$(RM_F) re_exec.c
145         \$(CP) $regexec_c re_exec.c
146
147 re_exec\$(OBJ_EXT) : re_exec.c
148
149 EOF
150
151  if (defined $dquote_static_c) {
152   $rules .= <<EOF;
153 dquote_static.c : $dquote_static_c
154         - \$(RM_F) dquote_static.c
155         \$(CP) $dquote_static_c dquote_static.c
156
157 EOF
158  }
159
160  $rules .= <<'EOF';
161 configure_test.pl: args.dat
162
163 t/re-engine-Hooks-TestDist/Makefile: configure_test.pl
164         $(FULLPERLRUN) configure_test.pl
165
166 all clean:: t/re-engine-Hooks-TestDist/Makefile
167         cd t/re-engine-Hooks-TestDist && $(MAKE) $@
168
169 clean::
170         $(RM_RF) args.dat
171
172 EOF
173
174  return $rules;
175 }