GCC 4.5: Add support for a separate libpthread; rearrange target flags handling.
svn path=/nixpkgs/trunk/; revision=21905
This commit is contained in:
parent
91e3147622
commit
63abc2ed86
@ -54,14 +54,9 @@ if test "$noSysDirs" = "1"; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i"
|
||||
done
|
||||
|
||||
if test -n "$targetConfig"; then
|
||||
if test -z "$crossStageStatic" -o -n "$crossMingw"; then
|
||||
EXTRA_FLAGS_TARGET="-g0 -O2 -B${libcCross}/lib -idirafter ${libcCross}/include"
|
||||
EXTRA_LDFLAGS_TARGET="-Wl,-L${libcCross}/lib"
|
||||
fi
|
||||
else
|
||||
EXTRA_FLAGS_TARGET="$EXTRA_FLAGS"
|
||||
EXTRA_LDFLAGS_TARGET="$EXTRA_LDFLAGS"
|
||||
if test -z "$targetConfig"; then
|
||||
EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS"
|
||||
EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS"
|
||||
fi
|
||||
|
||||
# CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
|
||||
@ -73,17 +68,17 @@ if test "$noSysDirs" = "1"; then
|
||||
NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
|
||||
SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
|
||||
CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
CFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
|
||||
FLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
|
||||
CFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS" \
|
||||
FLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
LDFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
|
||||
LDFLAGS_FOR_TARGET="$EXTRA_TARGET_LDFLAGS" \
|
||||
)
|
||||
|
||||
if test -z "$targetConfig"; then
|
||||
makeFlagsArray=( \
|
||||
"${makeFlagsArray[@]}" \
|
||||
BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
BOOT_LDFLAGS="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
|
||||
BOOT_LDFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
)
|
||||
fi
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? true
|
||||
, gnat ? null
|
||||
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
|
||||
}:
|
||||
|
||||
assert langTreelang -> bison != null && flex != null;
|
||||
@ -212,15 +213,29 @@ stdenv.mkDerivation ({
|
||||
(optionals (zlib != null) [ zlib ]
|
||||
++ optionals langJava [ boehmgc ]
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ])));
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread
|
||||
++ optional (libpthreadCross != null) libpthreadCross)));
|
||||
|
||||
LIBRARY_PATH = concatStrings
|
||||
(intersperse ":" (map (x: x + "/lib")
|
||||
(optionals (zlib != null) [ zlib ]
|
||||
++ optionals langJava [ boehmgc ]
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ])));
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-g0 -O2 -idirafter ${libcCross}/include"
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}")
|
||||
else null;
|
||||
|
||||
passthru = { inherit langC langCC langAda langFortran langTreelang langVhdl
|
||||
enableMultilib; };
|
||||
|
@ -2103,7 +2103,13 @@ let
|
||||
};
|
||||
|
||||
gccCrossStageFinal = wrapGCCCross {
|
||||
gcc = forceBuildDrv gcc_realCross;
|
||||
gcc = forceBuildDrv (gcc_realCross.override {
|
||||
libpthreadCross =
|
||||
# FIXME: Don't explicitly refer to `i586-pc-gnu'.
|
||||
if crossSystem != null && crossSystem.config == "i586-pc-gnu"
|
||||
then hurdLibpthreadCross
|
||||
else null;
|
||||
});
|
||||
libc = libcCross;
|
||||
binutils = binutilsCross;
|
||||
cross = assert crossSystem != null; crossSystem;
|
||||
|
Loading…
Reference in New Issue
Block a user