summaryrefslogtreecommitdiff
blob: d3902ac5d4701c55e3443f89a8e0247959f79b6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
From c169041dfa888ec3815aa5bacc97bcc0f21dc318 Mon Sep 17 00:00:00 2001
From: Kent Fredric <kentfredric@gmail.com>
Date: Sun, 11 Jun 2017 13:05:59 +1200
Subject: [PATCH] Disable -flto as it breaks compile.

LTO seems to be bad for static/shared libraries or something.

Turning it off until somebody works out how to make it not cause
a compile failure, on top of all the crap Pari does.
---
 Makefile.PL | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/Makefile.PL b/Makefile.PL
index f3025bd..c32eb6a 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -42,18 +42,23 @@ Could not find GP/PARI build directory, please run Makefile.PL
 with paridir=/directory option.
 EOD
 
+my $optimize = $Config{optimize};
+my $ldflags  = $Config{ldflags};
+
+s/(^|\s)-flto(\s|$)/$1$2/ for $optimize, $ldflags;
+
 my $gcc_version
   = defined($Config{gccversion}) ? ", gccversion=$Config{gccversion}" : "";
 print <<EOP;
 Setting up Math::Pari with Perl $] on $^O version $Config{osvers};
    cc=$Config{cc}$gcc_version, cccdlflags='$Config{cccdlflags}',
    ccflags='$Config{ccflags}',
-   optimize='$Config{optimize}',
-   ld=$Config{ld}, ldflags='$Config{ldflags}'.
+   optimize='$optimize',
+   ld=$Config{ld}, ldflags='$ldflags'.
 EOP
 
 if ($^O eq 'solaris' and $Config{cc} eq 'gcc'
-    and (    $Config{optimize}   =~ s/(?<!\S)(-xarch=386|-xildoff)(?!\S)//g
+    and (    $optimize   =~ s/(?<!\S)(-xarch=386|-xildoff)(?!\S)//g
           or $Config{cccdlflags} =~ s/(?<!\S)-KPIC(?!\S)/-fPIC/ )) {
   # Vendor's Perl has major problems with building extensions; try to fix this
   # One way is to use perlgcc; but it does not work with 5.8.4
@@ -61,7 +66,7 @@ if ($^O eq 'solaris' and $Config{cc} eq 'gcc'
   print <<EOP;
 
 ... Broken config of gcc-on-Solaris detected!  I would try to work around this.
-... Reset: cccdlflags --> '$Config{cccdlflags}',   optimize -> '$Config{optimize}'.
+... Reset: cccdlflags --> '$Config{cccdlflags}',   optimize -> '$optimize'.
 
 EOP
 }
@@ -181,7 +186,7 @@ $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 .= ' -DGCC_INLINE' if $Config{gccversion} and not $optimize =~ /-g\b/;
 $define .= ' -DHAVE_PARIPRIV' if -f "$paridir/src/headers/paripriv.h";
 #$define .= ' -DNO_GRAPHICS_PARI' unless -f "$paridir/src/graph/plotgnuplot.c";
 
@@ -200,6 +205,8 @@ my $extra_inc = extra_includes($paridir);
 &WriteMakefile(
 	       LIBS	     =>  $libs,
 	       INC	     => $extra_inc . ' -I $(PARI_DIR)/src/headers -I $(PARI_DIR)/src -I ./libPARI',
+         OPTIMIZE  => $optimize,
+         LDFLAGS   => $ldflags,
 	       NAME	     => 'Math::Pari',
 	       ($common::parilib ? () :
 		 (MYEXTLIB   =>  'libPARI/libPARI$(LIB_EXT)')),
-- 
2.13.1