From: Tony Cook Date: Fri, 15 Apr 2016 05:35:29 +0000 (+1000) Subject: probe to check if $Config{ivdformat} is correct for the built-in sprintf X-Git-Tag: v1.004_004~3 X-Git-Url: http://git.imager.perl.org/imager.git/commitdiff_plain/7afb6f7f9111483cc06bbe2389443c58c5029a6e probe to check if $Config{ivdformat} is correct for the built-in sprintf --- diff --git a/Makefile.PL b/Makefile.PL index abf50602..aa5c8c14 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -277,7 +277,9 @@ if ($MM_ver >= 6.46) { }; } -make_imconfig(\@defines); +my $ivdformat = probe_ivdformat(); + +make_imconfig(\@defines, $ivdformat); if ($VERBOSE) { print Dumper(\%opts); } mkdir('testout',0777); # since we cannot include it in the archive. @@ -556,7 +558,7 @@ sub setenv { } sub make_imconfig { - my ($defines) = @_; + my ($defines, $ivdformat) = @_; open CONFIG, "> imconfig.h" or die "Cannot create imconfig.h: $!\n"; @@ -609,7 +611,7 @@ EOS This is intended for formatting i_img_dim values. */ typedef $Config{ivtype} i_dim_format_t; -#define i_DF $Config{ivdformat} +#define i_DF $ivdformat EOS print CONFIG "\n#endif\n"; @@ -641,6 +643,37 @@ EOS } +# at least one CPAN tester has an incorrect ivdformat, make sure it's +# valid +sub probe_ivdformat { + if (_test_ivdformat($Config{ivdformat})) { + return $Config{ivdformat}; + } + die "OS unsupported: Invalid ivdformat ($Config{ivdformat}) in this perl\n"; +} + +sub _test_ivdformat { + my ($fmt) = @_; + require Devel::CheckLib; + my $good = + Devel::CheckLib::check_lib + ( + debug => $VERBOSE, + LIBS => [], + INC => "", + header => [ "stdio.h", "string.h" ], + function => <