$NetBSD: patch-aa,v 1.5 2010/03/10 09:24:52 sno Exp $ --- Makefile.PL.orig 2010-03-03 21:26:10.000000000 +0000 +++ Makefile.PL @@ -2,9 +2,6 @@ use ExtUtils::MakeMaker; use Config '%Config'; -BEGIN {unshift @INC, 'utils'} -use Math::PariBuild; - # Uncomment and change this line if I fail to find it # $paridir = ".."; @@ -16,137 +13,16 @@ unless (-t STDOUT) { # Better reports i select $odef; } -my $ok23 = 0; -grep {/^machine=(.*)$/i and $common::machine = $1} @ARGV; -grep {/^configure$/i and $common::do_configure = 1} @ARGV; -grep {/^paridir=(.*?)[\/\\]?$/i and $paridir = $1} @ARGV; -grep {/^pari_tgz=(.*?)[\/\\]?$/i and $parisrc = $1} @ARGV; -grep {/^force_download$/i and $force_download = 1} @ARGV; -grep {/^parilib=(.*)$/i and $common::parilib = $1} @ARGV; -grep {/^version23_ok=(.*)$/i and $ok23 = $1} @ARGV; - -# The REx should anchored-match versions to skip -$common::skip_versions = $ok23 ? '(?!)' : '2\.(?:[3-9]|\d\d+)\.'; - -@ARGV = grep !/^((machine|paridir|pari_tgz|parilib|version23_ok)=.*|configure|force_download)$/i, @ARGV; - -$paridir = find_pari_dir() unless defined $paridir or $parisrc or $force_download; -($paridir, my @patch_rc) = download_and_patch_pari($parisrc, $force_download) - if !$paridir or $force_download; -my %patchrc = (patchrc => $patch_rc[0]) if @patch_rc; - -die <= 5.009; -$libs = "-lm"; -$libs .= " $common::parilib" if $common::parilib; -$noexp2 = ''; # Should be used for generation of paricfg.h - -if ($os eq "solaris") { - # Some older versions needed -lsunmath to import exp2(). This is - # probably not needed anymore (though can speed things up). - - # Below -R specifies the path to search for this file when the - # program will run, -L the path to search when the program is linked -# @sc_dirs = '/opt/SUNWspro/lib' if -d '/opt/SUNWspro/lib'; -# @sc_dirs = unless @sc_dirs; -# if (@sc_dirs) { -# $libs .= " -R$sc_dirs[-1] -L$sc_dirs[-1] -lsunmath -lm"; -# } else { -# #warn "Cannot find SUNWspro dirs, needed for -lsunmath, using NOEXP2.\n"; - $noexp2 = 1; -# } -} elsif ($os eq "os2") { - $noexp2 = 1; - $define .= " -DMALLOC_PROCS"; -} elsif ($os eq 'linux') { - $noexp2 = 1; -} +my $pariprefix; +my $addlibs; +my $libpari = "pari"; + +grep {/^pariprefix=(.*)$/i and $pariprefix = $1} @ARGV; +grep {/^addlibs=(.*)$/i and $addlibs = $1} @ARGV; +grep {/^libpari=(.*)$/i and $libpari = $1} @ARGV; -my %opts; -unless ($common::parilib) { - build_tests $paridir; # Convert the test suite - make_pod 'libPARI.pod', '-to_pod', $paridir; # Now the docs - make_pod 'libPARI.dumb.pod', '-to_dumb_pod', $paridir; - # ... and paricfg.h - %opts = build_paricfg($paridir, $common::do_configure, $pari_version); - - if ($ENV{MATH_PARI_REPORT_CODES}) { - # Check the correspondence between string interfaces and numeric interfaces - my %codes; - my %names; - ep_in_version($pari_version); - ep_codes_from_file("$paridir/src/language/init.c", %codes, %names); - ep_codes_from_file("$paridir/src/gp/highlvl.c", %codes, %names); - # EpValence reworked in 2.2.7; when exactly was it redone??? XXXX - unless ($pari_version > 2002006 or ep_hash_report(%codes)) { - print STDERR "Problems with numeric interface codes noted:\n"; - ep_hash_report(%codes, %names, \*STDERR); - } - } -} +@ARGV = grep !/^((pariprefix|addlibs|libpari)=.*)$/i, @ARGV; +my $define = "-DPARI_VERSION_EXP=" . get_pari_formatted_version(); # We want to find the offset of the least significant byte # of SV.flags inside an SV. @@ -164,67 +40,40 @@ my $perl_int_size = $Config{'ivsize'} || $define .= ' -DLONG_SHORTER_THAN_IV' if $perl_int_size > $longsize; $define .= ' -Derr=pari_err'; # On linux it can get a wrong dynamic loading -$define .= ' -DHAVE_LADD' if $opts{have_ladd}; $define .= ' -DGCC_INLINE' if $Config{gccversion} and not $Config{optimize} =~ /-g\b/; -$define .= ' -DHAVE_PARIPRIV' if -f "$paridir/src/headers/paripriv.h"; -#$define .= ' -DNO_GRAPHICS_PARI' unless -f "$paridir/src/graph/plotgnuplot.c"; - -# XXXX otherwise segfaults trying to install highlevel functions??? -# XXXX because functions_hash = NULL??? -# $define .= ' -DNO_HIGHLEVEL_PARI' if $pari_version >= 2003000; -$define .= ' -DNO_GRAPHICS_PARI' if $pari_version >= 2003000; - -# This is done in Makefile in GP/PARI, and in paricfg.h without do_configure -$define .= ' -DDL_DFLT_NAME=NULL' if $common::do_configure; -my $extra_inc = extra_includes($paridir); +$define .= " -DNO_HIGHLEVEL_PARI"; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile being created. &WriteMakefile( - LIBS => $libs, - INC => $extra_inc . ' -I $(PARI_DIR)/src/headers -I $(PARI_DIR)/src -I ./libPARI', + LIBS => join( " ", "-L${pariprefix}/lib -l${libpari}", $addlibs ), + INC => $extra_inc . " -I ${pariprefix}/include -I ${pariprefix}/src", NAME => 'Math::Pari', - ($common::parilib ? () : - (MYEXTLIB => 'libPARI/libPARI$(LIB_EXT)')), VERSION_FROM => 'Pari.pm', ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'Pari.pm', # retrieve abstract from module AUTHOR => 'Ilya Zakharevich ') : ()), DEFINE => $define, dist => {COMPRESS=>'gzip -9f', SUFFIX=>'gz'}, - clean => { FILES => 'pari.ps test_eng/ex.t- libPARI.dumb.pod libPARI.pod t/55_*.t ftp-cmd' }, - macro => { %patchrc, - PARI_DIR => $paridir, - }, +# clean => { FILES => 'pari.ps test_eng/ex.t- libPARI.dumb.pod libPARI.pod t/55_*.t ftp-cmd' }, +# macro => { %patchrc, +# PARI_DIR => $paridir, +# }, ); - -# Remake POD if the source changed. -# Go to a subdirectory to build the headers and the library. -# XXX With -j4 goes twice to a subdir in parallel, both times without -j4... -sub xMY::postamble { - ' -AUTOGEN_HEADERS = libPARI/pariinl.h - -Pari$(OBJ_EXT) : $(AUTOGEN_HEADERS) - -$(AUTOGEN_HEADERS): $(MYEXTLIB) - -$(MYEXTLIB): libPARI/Makefile FORCE - cd libPARI && $(MAKE) $(PASTHRU) - -libPARI.pod: $(PARI_DIR)/doc/usersch3.tex libPARI/gphelp - $(PERL) libPARI/gphelp -to_pod $(PARI_DIR)/doc/usersch3.tex > pod_tmp && mv pod_tmp $@ - -libPARI.dumb.pod: $(PARI_DIR)/doc/usersch3.tex libPARI/gphelp - $(PERL) libPARI/gphelp -to_dumb_pod $(PARI_DIR)/doc/usersch3.tex > pod_tmp && mv pod_tmp $@ - -build_tests: - -$(RM_F) test_eng/ex.t- - $(FULLPERL) -Iutils -MMath::PariBuild -e "build_tests shift" $(PARI_DIR) - -'; +sub get_pari_formatted_version() +{ + my $fh; + my $formatted_version; + open( $fh, "<", "${pariprefix}/include/pari/paricfg.h" ) or die $!; + while( my $line = <$fh> ) + { + next unless ( $line =~ m/^#define\s+PARIVERSION.*(\d+)\.(\d+)\.(\d+)/ ); + $formatted_version = sprintf( "%d%03d%03d", $1, $2, $3 ); + } + close($fh); + return $formatted_version; } # Rewrite pic option to PIC in CCCDLFLAGS,