#!/usr/bin/perl -w use 5.005; use ExtUtils::MakeMaker; use File::Spec::Functions 'catfile'; use strict; 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; write_header( 'refcounted_he.h' => extract_refcounted_he(catfile($Config{archlib}, 'CORE', 'hv.h')) ); WriteMakefile1( OPTIMIZE => "-g", NAME => 'Devel::SizeMe', VERSION_FROM => 'lib/Devel/SizeMe.pm', DEFINE => "-DALIGN_BITS=$ptr_bits", PREREQ_PM => { 'Test::More' => 0, 'JSON::XS' => 0, 'HTML::Entities' => 0, # Removed for now as it stops people using SizeMe with 5.8 # sizeme_graph.pl will eventually become a separate module #'Mojolicious::Lite' => 0, 'Devel::Dwarn' => 0, 'XSLoader' => 0, 'ORLite' => 0, }, EXE_FILES => [ 'bin/sizeme_store.pl', 'bin/sizeme_graph.pl' ], clean => { FILES => 'refcounted_he.h', }, META_MERGE => { resources => { repository => { type => 'git', url => 'git://github.com/timbunce/devel-sizeme.git', web => 'https://github.com/timbunce/devel-sizeme', }, bugtracker => { web => 'https://github.com/timbunce/devel-sizeme/issues', }, homepage => 'https://github.com/timbunce/devel-sizeme', }, }, MIN_PERL_VERSION => '5.008', LICENSE => 'perl', ); sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade. my %params = @_; my $eumm_version = $ExtUtils::MakeMaker::VERSION; $eumm_version = eval $eumm_version; die "EXTRA_META is deprecated" if ( exists( $params{EXTRA_META} ) ); die "License not specified" if ( !exists( $params{LICENSE} ) ); if ( $params{BUILD_REQUIRES} and ( $eumm_version < 6.5503 ) ) { #EUMM 6.5502 has problems with BUILD_REQUIRES $params{PREREQ_PM} = { %{ $params{PREREQ_PM} || {} }, %{ $params{BUILD_REQUIRES} } }; delete $params{BUILD_REQUIRES}; } # more or less taken from Moose' Makefile.PL if ( $params{CONFLICTS} ) { my $ok = CheckConflicts(%params); exit(0) if ( $params{PREREQ_FATAL} and not $ok ); my $cpan_smoker = grep { $_ =~ m/(?:CR_SMOKER|CPAN_REPORTER|AUTOMATED_TESTING)/ } keys %ENV; unless ( $cpan_smoker || $ENV{PERL_MM_USE_DEFAULT} ) { sleep 4 unless ($ok); } %{$params{META_MERGE}{conflicts}} = %{$params{CONFLICTS}}; delete $params{CONFLICTS}; } delete $params{CONFIGURE_REQUIRES} if ( $eumm_version < 6.52 ); delete $params{MIN_PERL_VERSION} if ( $eumm_version < 6.48 ); delete $params{META_MERGE} if ( $eumm_version < 6.46 ); delete $params{META_ADD} if ( $eumm_version < 6.46 ); delete $params{LICENSE} if ( $eumm_version < 6.31 ); WriteMakefile(%params); } my $conflictMsg = <) { next unless /struct refcounted_he \{/ .. /\};/; $def .= $_; } close $fh or die $!; return $def; } sub write_header { my ($filename, $contents) = @_; my $guard_name = uc $filename; $guard_name =~ tr/./_/; open my $fh, '>', $filename or die $!; print { $fh } "#ifndef ${guard_name}\n"; print { $fh } "#define ${guard_name}\n"; print { $fh } $contents if defined $contents; print { $fh } "#endif /* ${guard_name} */\n"; close $fh or die $!; } # ===================================================================== package MY; sub postamble { return qq{ ptest: all \t prove --blib --jobs 4 --shuffle \n}; }