From 97ab4c05b2df1d978ebec84e8fa7d524ab07c3c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 13 Jul 2010 16:32:26 +0000 Subject: [PATCH] GCC 4.5: Fix pthread support for GNU. svn path=/nixpkgs/trunk/; revision=22583 --- pkgs/development/compilers/gcc-4.5/default.nix | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/gcc-4.5/default.nix b/pkgs/development/compilers/gcc-4.5/default.nix index 1dcae1f2b69e..d420582ede50 100644 --- a/pkgs/development/compilers/gcc-4.5/default.nix +++ b/pkgs/development/compilers/gcc-4.5/default.nix @@ -150,19 +150,28 @@ stdenv.mkDerivation ({ || (cross != null && cross.config == "i586-pc-gnu" && libcCross != null)) then - # On GNU/Hurd glibc refers to Hurd & Mach headers so add the right `-I' - # flags to the default spec string. + # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not + # in glibc, so add the right `-I' flags to the default spec string. let libc = if cross != null then libcCross else stdenv.glibc; config_h = "gcc/config/i386/gnu.h"; + extraCPPDeps = + libc.propagatedBuildInputs + ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross + ++ stdenv.lib.optional (libpthread != null) libpthread; extraCPPSpec = concatStrings (intersperse " " - (map (x: "-I${x}/include") - libc.propagatedBuildInputs)); + (map (x: "-I${x}/include") extraCPPDeps)); + pthreadLib = + if libpthreadCross != null then libpthreadCross else libpthread; in '' echo "augmenting \`CPP_SPEC' in \`${config_h}' with \`${extraCPPSpec}'..." sed -i "${config_h}" \ -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g' + + echo "augmenting \`LIB_SPEC' in \`${config_h}' for libpthread at \`${pthreadLib}'..." + sed -i "${config_h}" \ + -es'|-lpthread|-L${pthreadLib}/lib -lpthread|g' '' else null;