Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | package Inline::MakeMaker; |
2 | ||
3 | $VERSION = '0.44'; | |
4 | @EXPORT = qw(WriteMakefile WriteInlineMakefile); | |
5 | ||
6 | use strict; | |
7 | use base 'Exporter'; | |
8 | use ExtUtils::MakeMaker(); | |
9 | use Carp; | |
10 | ||
11 | sub WriteInlineMakefile { | |
12 | # warn <<END; | |
13 | # | |
14 | #Inline::MakeMaker::WriteInlineMakefile() is deprecated as of Inline-0.44. | |
15 | #Inline::MakeMaker::WriteMakefile() should be used instead. | |
16 | # | |
17 | #END | |
18 | goto &WriteMakefile; | |
19 | } | |
20 | ||
21 | sub WriteMakefile { | |
22 | my %args = @_; | |
23 | my $name = $args{NAME} | |
24 | or croak "Inline::MakeMaker::WriteMakefile requires the NAME parameter\n"; | |
25 | my $object = (split(/::/, $name))[-1]; | |
26 | my $version = ''; | |
27 | ||
28 | croak <<END unless (defined $args{VERSION} or defined $args{VERSION_FROM}); | |
29 | Inline::MakeMaker::WriteMakefile requires either the VERSION or VERSION_FROM | |
30 | parameter. | |
31 | END | |
32 | if (defined $args{VERSION}) { | |
33 | $version = $args{VERSION}; | |
34 | } | |
35 | else { | |
36 | $version = ExtUtils::MM_Unix->parse_version($args{VERSION_FROM}) | |
37 | or croak "Can't determine version for $name\n"; | |
38 | } | |
39 | croak <<END unless $version =~ /^\d\.\d\d$/; | |
40 | Invalid version '$version' for $name. | |
41 | Must be of the form '#.##'. (For instance '1.23') | |
42 | END | |
43 | ||
44 | # Provide a convenience rule to clean up Inline's messes | |
45 | $args{clean} = { FILES => "_Inline $object.inl" } | |
46 | unless defined $args{clean}; | |
47 | # Add Inline to the dependencies | |
48 | $args{PREREQ_PM}{Inline} = '0.44' unless defined $args{PREREQ_PM}{Inline}; | |
49 | ||
50 | &ExtUtils::MakeMaker::WriteMakefile(%args); | |
51 | ||
52 | open MAKEFILE, '>> Makefile' | |
53 | or croak "Inline::MakeMaker::WriteMakefile can't append to Makefile:\n$!"; | |
54 | ||
55 | print MAKEFILE <<MAKEFILE; | |
56 | # Well, not quite. Inline::MakeMaker is adding this: | |
57 | ||
58 | # --- MakeMaker inline section: | |
59 | ||
60 | .SUFFIXES: .pm .inl | |
61 | ||
62 | .pm.inl: | |
63 | \$(PERL) -Mblib -MInline=NOISY,_INSTALL_ -M$name -e1 $version \$(INST_ARCHLIB) | |
64 | ||
65 | pure_all :: $object.inl | |
66 | ||
67 | # The End is here. | |
68 | MAKEFILE | |
69 | ||
70 | close MAKEFILE; | |
71 | } | |
72 | ||
73 | 1; |