Merge branch 'staging'
This includes a security update of expat.
This commit is contained in:
@@ -179,11 +179,11 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
sed -i gcc/config/t-gnu \
|
||||
-es'|NATIVE_SYSTEM_HEADER_DIR.*$|NATIVE_SYSTEM_HEADER_DIR = ${libc}/include|g'
|
||||
-es'|NATIVE_SYSTEM_HEADER_DIR.*$|NATIVE_SYSTEM_HEADER_DIR = ${libc.dev}/include|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -197,7 +197,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -205,10 +205,10 @@ stdenv.mkDerivation ({
|
||||
inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic
|
||||
libcCross crossMingw;
|
||||
|
||||
nativeBuildInputs = [ texinfo which ]
|
||||
nativeBuildInputs = [ texinfo which gettext ]
|
||||
++ optional (perl != null) perl;
|
||||
|
||||
buildInputs = [ gmp mpfr libmpc libelf gettext ]
|
||||
buildInputs = [ gmp mpfr libmpc libelf ]
|
||||
++ (optional (ppl != null) ppl)
|
||||
++ (optional (cloogppl != null) cloogppl)
|
||||
++ (optional (zlib != null) zlib)
|
||||
@@ -284,6 +284,7 @@ stdenv.mkDerivation ({
|
||||
${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
|
||||
--with-gmp=${gmp.crossDrv}
|
||||
--with-mpfr=${mpfr.crossDrv}
|
||||
--with-mpc=${libmpc.crossDrv}
|
||||
--disable-libstdcxx-pch
|
||||
--without-included-gettext
|
||||
--with-system-zlib
|
||||
@@ -346,15 +347,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru = { inherit langC langCC langAda langFortran langVhdl
|
||||
|
||||
@@ -209,7 +209,9 @@ postInstall() {
|
||||
# Move runtime libraries to $lib.
|
||||
mkdir -p $lib/lib
|
||||
ln -s lib $lib/lib64
|
||||
mv -v $out/lib/lib*.so $out/lib/lib*.so.*[0-9] $out/lib/*.la $lib/lib/
|
||||
moveToOutput "lib/lib*.so" "$lib"
|
||||
moveToOutput "lib/lib*.so.*[0-9]" "$lib"
|
||||
moveToOutput "lib/*.la" "$lib"
|
||||
for i in $lib/lib/*.la; do
|
||||
substituteInPlace $i --replace $out $lib
|
||||
done
|
||||
|
||||
@@ -170,7 +170,7 @@ let version = "4.6.4";
|
||||
"-stage-final";
|
||||
crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
|
||||
|
||||
bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips;
|
||||
bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips && !stdenv.isDarwin;
|
||||
|
||||
in
|
||||
|
||||
@@ -229,11 +229,11 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
sed -i gcc/config/t-gnu \
|
||||
-es'|NATIVE_SYSTEM_HEADER_DIR.*$|NATIVE_SYSTEM_HEADER_DIR = ${libc}/include|g'
|
||||
-es'|NATIVE_SYSTEM_HEADER_DIR.*$|NATIVE_SYSTEM_HEADER_DIR = ${libc.dev}/include|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -247,7 +247,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -357,6 +357,7 @@ stdenv.mkDerivation ({
|
||||
${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
|
||||
--with-gmp=${gmp.crossDrv}
|
||||
--with-mpfr=${mpfr.crossDrv}
|
||||
--with-mpc=${libmpc.crossDrv}
|
||||
--disable-libstdcxx-pch
|
||||
--without-included-gettext
|
||||
--with-system-zlib
|
||||
@@ -421,15 +422,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru = { inherit langC langCC langAda langFortran langVhdl
|
||||
|
||||
@@ -70,7 +70,8 @@ let version = "4.8.5";
|
||||
# The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
|
||||
# target libraries and tools.
|
||||
++ optional langAda ../gnat-cflags.patch
|
||||
++ optional langFortran ../gfortran-driving.patch;
|
||||
++ optional langFortran ../gfortran-driving.patch
|
||||
++ optional stdenv.isDarwin ../gfortran-darwin-NXConstStr.patch;
|
||||
|
||||
javaEcj = fetchurl {
|
||||
# The `$(top_srcdir)/ecj.jar' file is automatically picked up at
|
||||
@@ -164,8 +165,8 @@ let version = "4.8.5";
|
||||
" --disable-libatomic " + # libatomic requires libc
|
||||
" --disable-decimal-float" # libdecnumber requires libc
|
||||
else
|
||||
(if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
|
||||
else " --with-headers=${libcCross}/include") +
|
||||
(if crossDarwin then " --with-sysroot=${libcCross.out}/share/sysroot"
|
||||
else " --with-headers=${libcCross.dev}/include") +
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
(stdenv.lib.optionalString (crossMingw || crossDarwin) (
|
||||
" --with-as=${binutilsCross}/bin/${cross.config}-as" +
|
||||
@@ -197,7 +198,7 @@ let version = "4.8.5";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
|
||||
|
||||
bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips;
|
||||
bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips && !stdenv.isDarwin;
|
||||
|
||||
in
|
||||
|
||||
@@ -255,9 +256,9 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -271,7 +272,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -304,15 +305,6 @@ stdenv.mkDerivation ({
|
||||
export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
|
||||
export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
|
||||
export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
|
||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
|
||||
configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
|
||||
makeFlagsArray+=( \
|
||||
CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
|
||||
CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
)
|
||||
fi
|
||||
'';
|
||||
|
||||
dontDisableStatic = true;
|
||||
@@ -415,6 +407,7 @@ stdenv.mkDerivation ({
|
||||
${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
|
||||
--with-gmp=${gmp.crossDrv}
|
||||
--with-mpfr=${mpfr.crossDrv}
|
||||
--with-mpc=${libmpc.crossDrv}
|
||||
--disable-libstdcxx-pch
|
||||
--without-included-gettext
|
||||
--with-system-zlib
|
||||
@@ -482,15 +475,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru =
|
||||
|
||||
@@ -166,8 +166,8 @@ let version = "4.9.3";
|
||||
" --disable-libatomic " + # libatomic requires libc
|
||||
" --disable-decimal-float" # libdecnumber requires libc
|
||||
else
|
||||
(if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
|
||||
else " --with-headers=${libcCross}/include") +
|
||||
(if crossDarwin then " --with-sysroot=${libcCross.out}/share/sysroot"
|
||||
else " --with-headers=${libcCross.dev}/include") +
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
(stdenv.lib.optionalString (crossMingw || crossDarwin) (
|
||||
" --with-as=${binutilsCross}/bin/${cross.config}-as" +
|
||||
@@ -199,7 +199,7 @@ let version = "4.9.3";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
|
||||
|
||||
bootstrap = cross == null;
|
||||
bootstrap = cross == null && !stdenv.isDarwin;
|
||||
|
||||
in
|
||||
|
||||
@@ -258,9 +258,9 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -274,7 +274,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -307,15 +307,6 @@ stdenv.mkDerivation ({
|
||||
export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
|
||||
export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
|
||||
export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
|
||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
|
||||
configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
|
||||
makeFlagsArray+=( \
|
||||
CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
|
||||
CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
)
|
||||
fi
|
||||
''
|
||||
+ stdenv.lib.optionalString (langJava || langGo) ''
|
||||
export lib=$out;
|
||||
@@ -422,6 +413,7 @@ stdenv.mkDerivation ({
|
||||
${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
|
||||
--with-gmp=${gmp.crossDrv}
|
||||
--with-mpfr=${mpfr.crossDrv}
|
||||
--with-mpc=${libmpc.crossDrv}
|
||||
--disable-libstdcxx-pch
|
||||
--without-included-gettext
|
||||
--with-system-zlib
|
||||
@@ -489,15 +481,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru =
|
||||
|
||||
@@ -58,7 +58,8 @@ assert langGo -> langCC;
|
||||
with stdenv.lib;
|
||||
with builtins;
|
||||
|
||||
let version = "5.3.0";
|
||||
let version = "5.4.0";
|
||||
sha256 = "0fihlcy5hnksdxk0sn6bvgnyq8gfrgs8m794b1jxwd1dxinzg3b0";
|
||||
|
||||
# Whether building a cross-compiler for GNU/Hurd.
|
||||
crossGNU = cross != null && cross.config == "i586-pc-gnu";
|
||||
@@ -165,8 +166,8 @@ let version = "5.3.0";
|
||||
" --disable-libatomic " + # libatomic requires libc
|
||||
" --disable-decimal-float" # libdecnumber requires libc
|
||||
else
|
||||
(if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
|
||||
else " --with-headers=${libcCross}/include") +
|
||||
(if crossDarwin then " --with-sysroot=${getLib libcCross}/share/sysroot"
|
||||
else " --with-headers=${getDev libcCross}/include") +
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
(stdenv.lib.optionalString (crossMingw || crossDarwin) (
|
||||
" --with-as=${binutilsCross}/bin/${cross.config}-as" +
|
||||
@@ -198,7 +199,7 @@ let version = "5.3.0";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
|
||||
|
||||
bootstrap = cross == null;
|
||||
bootstrap = cross == null && !stdenv.isDarwin;
|
||||
|
||||
in
|
||||
|
||||
@@ -212,7 +213,7 @@ stdenv.mkDerivation ({
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
|
||||
sha256 = "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
inherit patches;
|
||||
@@ -256,9 +257,9 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -272,7 +273,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -306,15 +307,6 @@ stdenv.mkDerivation ({
|
||||
export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
|
||||
export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
|
||||
export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
|
||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
|
||||
configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
|
||||
makeFlagsArray+=( \
|
||||
CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
|
||||
CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
)
|
||||
fi
|
||||
'';
|
||||
|
||||
dontDisableStatic = true;
|
||||
@@ -415,6 +407,7 @@ stdenv.mkDerivation ({
|
||||
${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
|
||||
--with-gmp=${gmp.crossDrv}
|
||||
--with-mpfr=${mpfr.crossDrv}
|
||||
--with-mpc=${libmpc.crossDrv}
|
||||
--disable-libstdcxx-pch
|
||||
--without-included-gettext
|
||||
--with-system-zlib
|
||||
@@ -482,15 +475,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru =
|
||||
|
||||
@@ -165,8 +165,8 @@ let version = "6.1.0";
|
||||
" --disable-libatomic " + # libatomic requires libc
|
||||
" --disable-decimal-float" # libdecnumber requires libc
|
||||
else
|
||||
(if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
|
||||
else " --with-headers=${libcCross}/include") +
|
||||
(if crossDarwin then " --with-sysroot=${libcCross.out}/share/sysroot"
|
||||
else " --with-headers=${libcCross.dev}/include") +
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
(stdenv.lib.optionalString (crossMingw || crossDarwin) (
|
||||
" --with-as=${binutilsCross}/bin/${cross.config}-as" +
|
||||
@@ -198,7 +198,7 @@ let version = "6.1.0";
|
||||
stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
|
||||
crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
|
||||
|
||||
bootstrap = cross == null;
|
||||
bootstrap = cross == null && !stdenv.isDarwin;
|
||||
|
||||
in
|
||||
|
||||
@@ -256,9 +256,9 @@ stdenv.mkDerivation ({
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
|
||||
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
|
||||
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
|
||||
sed -i "${gnu_h}" \
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
|
||||
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
|
||||
''
|
||||
else if cross != null || stdenv.cc.libc != null then
|
||||
# On NixOS, use the right path to the dynamic linker instead of
|
||||
@@ -272,7 +272,7 @@ stdenv.mkDerivation ({
|
||||
grep -q LIBC_DYNAMIC_LINKER "$header" || continue
|
||||
echo " fixing \`$header'..."
|
||||
sed -i "$header" \
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
|
||||
-e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc.out}\3"|g'
|
||||
done
|
||||
''
|
||||
else null;
|
||||
@@ -306,15 +306,6 @@ stdenv.mkDerivation ({
|
||||
export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
|
||||
export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
|
||||
export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
|
||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||
if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
|
||||
configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
|
||||
makeFlagsArray+=( \
|
||||
CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
|
||||
CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
|
||||
)
|
||||
fi
|
||||
'';
|
||||
|
||||
dontDisableStatic = true;
|
||||
@@ -482,15 +473,28 @@ stdenv.mkDerivation ({
|
||||
++ optional (libpthread != null) libpthread)));
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-idirafter ${libcCross}/include"
|
||||
if cross != null && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if cross != null && libcCross != null
|
||||
then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
|
||||
(optionalString (libpthreadCross != null)
|
||||
" -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
|
||||
if cross != null && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
"-B${libcCross.out}/lib"
|
||||
] else [
|
||||
"-Wl,-rpath,${libcCross.out}/lib"
|
||||
"-Wl,-rpath-link,${libcCross.out}/lib"
|
||||
])
|
||||
++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]
|
||||
else null;
|
||||
|
||||
passthru =
|
||||
|
||||
@@ -70,10 +70,6 @@ if test "$noSysDirs" = "1"; then
|
||||
# gcj in.
|
||||
unset LIBRARY_PATH
|
||||
unset CPATH
|
||||
if test -z "$crossStageStatic"; then
|
||||
EXTRA_TARGET_CFLAGS="-B${libcCross}/lib -idirafter ${libcCross}/include"
|
||||
EXTRA_TARGET_LDFLAGS="-Wl,-L${libcCross}/lib -Wl,-rpath,${libcCross}/lib -Wl,-rpath-link,${libcCross}/lib"
|
||||
fi
|
||||
else
|
||||
if test -z "$NIX_CC_CROSS"; then
|
||||
EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS"
|
||||
@@ -90,15 +86,16 @@ if test "$noSysDirs" = "1"; then
|
||||
extraFlags="$(cat $NIX_CC_CROSS/nix-support/libc-cflags)"
|
||||
extraLDFlags="$(cat $NIX_CC_CROSS/nix-support/libc-ldflags) $(cat $NIX_CC_CROSS/nix-support/libc-ldflags-before)"
|
||||
|
||||
# Use *real* header files, otherwise a limits.h is generated
|
||||
# that does not include Glibc's limits.h (notably missing
|
||||
# SSIZE_MAX, which breaks the build).
|
||||
NIX_FIXINC_DUMMY_CROSS=$(cat $NIX_CC_CROSS/nix-support/orig-libc)/include
|
||||
|
||||
# The path to the Glibc binaries such as `crti.o'.
|
||||
glibc_dir="$(cat $NIX_CC_CROSS/nix-support/orig-libc)"
|
||||
glibc_libdir="$glibc_dir/lib"
|
||||
configureFlags="$configureFlags --with-native-system-header-dir=$glibc_dir/include"
|
||||
glibc_devdir="$(cat $NIX_CC_CROSS/nix-support/orig-libc-dev)"
|
||||
configureFlags="$configureFlags --with-native-system-header-dir=$glibc_devdir/include"
|
||||
|
||||
# Use *real* header files, otherwise a limits.h is generated
|
||||
# that does not include Glibc's limits.h (notably missing
|
||||
# SSIZE_MAX, which breaks the build).
|
||||
NIX_FIXINC_DUMMY_CROSS="$glibc_devdir/include"
|
||||
|
||||
extraFlags="-I$NIX_FIXINC_DUMMY_CROSS $extraFlags"
|
||||
extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags"
|
||||
@@ -229,19 +226,21 @@ postInstall() {
|
||||
# More dependencies with the previous gcc or some libs (gccbug stores the build command line)
|
||||
rm -rf $out/bin/gccbug
|
||||
|
||||
# Take out the bootstrap-tools from the rpath, as it's not needed at all having $out
|
||||
for i in $(find "$out"/libexec/gcc/*/*/* -type f -a \! -name '*.la'); do
|
||||
PREV_RPATH=`patchelf --print-rpath "$i"`
|
||||
NEW_RPATH=`echo "$PREV_RPATH" | sed 's,:[^:]*bootstrap-tools/lib,,g'`
|
||||
patchelf --set-rpath "$NEW_RPATH" "$i" && echo OK
|
||||
done
|
||||
if type "patchelf"; then
|
||||
# Take out the bootstrap-tools from the rpath, as it's not needed at all having $out
|
||||
for i in $(find "$out"/libexec/gcc/*/*/* -type f -a \! -name '*.la'); do
|
||||
PREV_RPATH=`patchelf --print-rpath "$i"`
|
||||
NEW_RPATH=`echo "$PREV_RPATH" | sed 's,:[^:]*bootstrap-tools/lib,,g'`
|
||||
patchelf --set-rpath "$NEW_RPATH" "$i" && echo OK
|
||||
done
|
||||
|
||||
# For some reason the libs retain RPATH to $out
|
||||
for i in "$lib"/lib/{libtsan,libasan,libubsan}.so.*.*.*; do
|
||||
PREV_RPATH=`patchelf --print-rpath "$i"`
|
||||
NEW_RPATH=`echo "$PREV_RPATH" | sed "s,:${out}[^:]*,,g"`
|
||||
patchelf --set-rpath "$NEW_RPATH" "$i" && echo OK
|
||||
done
|
||||
# For some reason the libs retain RPATH to $out
|
||||
for i in "$lib"/lib/{libtsan,libasan,libubsan}.so.*.*.*; do
|
||||
PREV_RPATH=`patchelf --print-rpath "$i"`
|
||||
NEW_RPATH=`echo "$PREV_RPATH" | sed "s,:${out}[^:]*,,g"`
|
||||
patchelf --set-rpath "$NEW_RPATH" "$i" && echo OK
|
||||
done
|
||||
fi
|
||||
|
||||
# Get rid of some "fixed" header files
|
||||
rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux}
|
||||
|
||||
Reference in New Issue
Block a user