GCC 4.7.2 + updated libraries compiles on Illumos/SmartOS!

- Add solaris native ld support to GCC build wrapper
- Add solaris ld wrapper that fixes -L argument order
This commit is contained in:
Danny Wilson
2013-02-23 13:59:59 +00:00
committed by Danny Wilson
parent bcaea92a12
commit 15e865ac09
10 changed files with 141 additions and 24 deletions

View File

@@ -10,7 +10,7 @@ stdenv.mkDerivation (rec {
patches = [ ./no-gets.patch ];
LDFLAGS = if stdenv.isSunOS then "-lsec -lavl" else "";
LDFLAGS = if stdenv.isSunOS then "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec" else "";
configureFlags = [ "--disable-csharp" ]
++ (stdenv.lib.optionals stdenv.isCygwin

View File

@@ -1,6 +1,6 @@
{stdenv, fetchurl, gmp}:
stdenv.mkDerivation (rec {
stdenv.mkDerivation rec {
name = "mpfr-3.1.1";
src = fetchurl {
@@ -35,16 +35,14 @@ stdenv.mkDerivation (rec {
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = stdenv.lib.platforms.all;
};
configureFlags =
/* Work around a FreeBSD bug that otherwise leads to segfaults in
the test suite:
http://hydra.bordeaux.inria.fr/build/34862
http://websympa.loria.fr/wwsympa/arc/mpfr/2011-10/msg00015.html
http://www.freebsd.org/cgi/query-pr.cgi?pr=161344
*/
stdenv.lib.optional (stdenv.isSunOS or stdenv.isFreeBSD) "--disable-thread-safe" ++
stdenv.lib.optional stdenv.is64bit "--with-pic";
}
//
(stdenv.lib.optionalAttrs (stdenv.isSunOS or stdenv.isFreeBSD) {
/* Work around a FreeBSD bug that otherwise leads to segfaults in
the test suite:
http://hydra.bordeaux.inria.fr/build/34862
http://websympa.loria.fr/wwsympa/arc/mpfr/2011-10/msg00015.html
http://www.freebsd.org/cgi/query-pr.cgi?pr=161344
*/
configureFlags = [ "--disable-thread-safe" ];
}))

View File

@@ -0,0 +1,42 @@
https://bugs.gentoo.org/show_bug.cgi?id=447928
--- ppl-1.0/src/p_std_bits.cc.org 2012-12-30 00:37:03.033948083 +0100
+++ ppl-1.0/src/mp_std_bits.cc 2012-12-30 00:44:12.893019313 +0100
@@ -25,6 +25,9 @@
#include "ppl-config.h"
#include "mp_std_bits.defs.hh"
+#if __GNU_MP_VERSION < 5 \
+ || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
const bool std::numeric_limits<mpz_class>::is_specialized;
const int std::numeric_limits<mpz_class>::digits;
const int std::numeric_limits<mpz_class>::digits10;
@@ -70,3 +73,6 @@
const bool std::numeric_limits<mpq_class>::traps;
const bool std::numeric_limits<mpq_class>::tininess_before;
const std::float_round_style std::numeric_limits<mpq_class>::round_style;
+
+#endif // __GNU_MP_VERSION < 5
+ // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
--- ppl-1.0/src/mp_std_bits.defs.hh.org 2012-12-30 00:37:03.037948187 +0100
+++ ppl-1.0/src/mp_std_bits.defs.hh 2012-12-30 00:42:32.002424189 +0100
@@ -38,6 +38,9 @@
#endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
void swap(mpq_class& x, mpq_class& y);
+#if __GNU_MP_VERSION < 5 \
+ || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
namespace std {
#ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
@@ -164,6 +167,9 @@
} // namespace std
+#endif // __GNU_MP_VERSION < 5
+ // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+
#include "mp_std_bits.inlines.hh"
#endif // !defined(PPL_mp_std_bits_defs_hh)