X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile.PL;h=2f911012529d9ed674442811d83b61f822716a0f;hb=901d4b6c755efa5f11f7e57fab9da76e39efce3b;hp=7dfbe9cb0799d7854cd5b14d0620c8ed5b4e9177;hpb=b76217297a5f92982c29177d97eb655b52d164eb;p=p5sagit%2FDevel-Size.git diff --git a/Makefile.PL b/Makefile.PL index 7dfbe9c..2f91101 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -1,31 +1,50 @@ - +#!/usr/bin/perl -w +use 5.008; +use ExtUtils::MakeMaker; use strict; -# require at least 5.006, it doesn't even compile under 5.005 -require 5.006; - -# Load the Module::Install bundled in ./inc/ -use inc::Module::Install; - -name 'Devel-Size'; - -# Get most of the details from the primary module -all_from 'lib/Devel/Size.pm'; - -requires 'DynaLoader' => 0; -requires 'perl' => 5.006; - -recommends 'Devel::Size::Report' => 0.11; - -test_requires 'Test::More' => 0.42; - -license 'perl'; # from 5.8.8 - -# It seems not to be possible to specifiy two authors here :/ -# Nor does a "maintainer" property exist -author 'Tels '; - -# Do not index these -no_index directory => 'examples'; -# Generate the Makefile -WriteAll; +use Config; +(unpack "B*", pack "N", $Config{ptrsize}) =~ /^0+1(0+)$/ + or die "Your pointer size of $Config{ptrsize} is very confusing"; +my $ptr_bits = length $1; + +my $svh = "$Config{archlibexp}/CORE/perl.h"; +my $vtable_file = 'vtables.inc'; + +my %vtables; +open FH, "<$svh" + or die "Can't open $svh ($!) - is your perl install missing its headers?"; +while () { + next unless /^\s+(PL_vtbl_[a-z]+),\s*$/ or /^EXT MGVTBL (PL_vtbl_[a-z]+) =/; + ++$vtables{$1}; +} +warn "Didn't find any vtable names in $svh" unless %vtables; +close FH; + + +my %special = ( + PL_vtbl_collxfrm => 'USE_LOCALE_COLLATE', + PL_vtbl_mutex => 'USE_5005THREADS', +); + +open FH, ">$vtable_file" or die "Can't open $vtable_file: $!"; +foreach (sort keys %vtables) { + print FH "#ifdef $special{$_}\n" if ($special{$_}); + if ($Config{gccversion}) { + print FH " &$_,\n"; + } else { + print FH " check_new(st, &$_);\n"; + } + print FH "#endif\n" if ($special{$_}); +} + +close FH or die "Error closing $vtable_file: $!"; + +WriteMakefile( + NAME => 'Devel::Size', + VERSION_FROM => 'lib/Devel/Size.pm', + DEFINE => "-DALIGN_BITS=$ptr_bits", + (eval $ExtUtils::MakeMaker::VERSION >= 6.47 ? (MIN_PERL_VERSION => '5.008') : ()), + (eval $ExtUtils::MakeMaker::VERSION >= 6.31 ? (LICENSE => 'perl') : ()), + realclean => {FILES=> $vtable_file}, +);