| 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; |