commit
b57016c8c8
9 changed files with 55 additions and 35 deletions
|
@ -5,6 +5,7 @@
|
||||||
, langJava ? false
|
, langJava ? false
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -212,6 +213,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, langJava ? false
|
, langJava ? false
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -224,6 +225,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
, langJava ? false
|
, langJava ? false
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -126,7 +127,7 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
inherit patches;
|
inherit patches;
|
||||||
|
|
||||||
outputs = if langJava || langGo then ["out" "man" "info"]
|
outputs = if langJava || langGo || langJit then ["out" "man" "info"]
|
||||||
else [ "out" "lib" "man" "info" ];
|
else [ "out" "lib" "man" "info" ];
|
||||||
setOutputFlags = false;
|
setOutputFlags = false;
|
||||||
NIX_NO_SELF_RPATH = true;
|
NIX_NO_SELF_RPATH = true;
|
||||||
|
@ -136,21 +137,17 @@ stdenv.mkDerivation ({
|
||||||
hardeningDisable = [ "format" "pie" ];
|
hardeningDisable = [ "format" "pie" ];
|
||||||
|
|
||||||
prePatch =
|
prePatch =
|
||||||
(stdenv.lib.optionalString (langJava || langGo) ''
|
|
||||||
export lib=$out
|
|
||||||
'')
|
|
||||||
|
|
||||||
# This should kill all the stdinc frameworks that gcc and friends like to
|
# This should kill all the stdinc frameworks that gcc and friends like to
|
||||||
# insert into default search paths.
|
# insert into default search paths.
|
||||||
+ stdenv.lib.optionalString hostPlatform.isDarwin ''
|
stdenv.lib.optionalString hostPlatform.isDarwin ''
|
||||||
substituteInPlace gcc/config/darwin-c.c \
|
substituteInPlace gcc/config/darwin-c.c \
|
||||||
--replace 'if (stdinc)' 'if (0)'
|
--replace 'if (stdinc)' 'if (0)'
|
||||||
|
|
||||||
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
||||||
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
|
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
|
||||||
|
|
||||||
substituteInPlace libgfortran/configure \
|
substituteInPlace libgfortran/configure \
|
||||||
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
|
--replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postPatch =
|
postPatch =
|
||||||
|
@ -244,6 +241,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -90,7 +91,7 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
inherit patches;
|
inherit patches;
|
||||||
|
|
||||||
outputs = [ "out" "lib" "man" "info" ];
|
outputs = [ "out" "man" "info" ] ++ stdenv.lib.optional (!langJit) "lib";
|
||||||
setOutputFlags = false;
|
setOutputFlags = false;
|
||||||
NIX_NO_SELF_RPATH = true;
|
NIX_NO_SELF_RPATH = true;
|
||||||
|
|
||||||
|
@ -105,10 +106,10 @@ stdenv.mkDerivation ({
|
||||||
--replace 'if (stdinc)' 'if (0)'
|
--replace 'if (stdinc)' 'if (0)'
|
||||||
|
|
||||||
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
||||||
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
|
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
|
||||||
|
|
||||||
substituteInPlace libgfortran/configure \
|
substituteInPlace libgfortran/configure \
|
||||||
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
|
--replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -206,6 +207,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
} ++ optional (targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
|
} ++ optional (targetPlatform.isAarch64) "--enable-fix-cortex-a53-843419"
|
||||||
++ optional targetPlatform.isNetBSD "--disable-libcilkrts"
|
++ optional targetPlatform.isNetBSD "--disable-libcilkrts"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -82,7 +83,7 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
inherit patches;
|
inherit patches;
|
||||||
|
|
||||||
outputs = [ "out" "lib" "man" "info" ];
|
outputs = [ "out" "man" "info" ] ++ stdenv.lib.optional (!langJit) "lib";
|
||||||
setOutputFlags = false;
|
setOutputFlags = false;
|
||||||
NIX_NO_SELF_RPATH = true;
|
NIX_NO_SELF_RPATH = true;
|
||||||
|
|
||||||
|
@ -97,10 +98,10 @@ stdenv.mkDerivation ({
|
||||||
--replace 'if (stdinc)' 'if (0)'
|
--replace 'if (stdinc)' 'if (0)'
|
||||||
|
|
||||||
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
||||||
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
|
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
|
||||||
|
|
||||||
substituteInPlace libgfortran/configure \
|
substituteInPlace libgfortran/configure \
|
||||||
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
|
--replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -197,6 +198,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
, langObjCpp ? stdenv.targetPlatform.isDarwin
|
||||||
, langGo ? false
|
, langGo ? false
|
||||||
, profiledCompiler ? false
|
, profiledCompiler ? false
|
||||||
|
, langJit ? false
|
||||||
, staticCompiler ? false
|
, staticCompiler ? false
|
||||||
, enableShared ? true
|
, enableShared ? true
|
||||||
, enableLTO ? true
|
, enableLTO ? true
|
||||||
|
@ -85,7 +86,7 @@ stdenv.mkDerivation ({
|
||||||
|
|
||||||
inherit patches;
|
inherit patches;
|
||||||
|
|
||||||
outputs = [ "out" "lib" "man" "info" ];
|
outputs = [ "out" "man" "info" ] ++ stdenv.lib.optional (!langJit) "lib";
|
||||||
setOutputFlags = false;
|
setOutputFlags = false;
|
||||||
NIX_NO_SELF_RPATH = true;
|
NIX_NO_SELF_RPATH = true;
|
||||||
|
|
||||||
|
@ -100,10 +101,10 @@ stdenv.mkDerivation ({
|
||||||
--replace 'if (stdinc)' 'if (0)'
|
--replace 'if (stdinc)' 'if (0)'
|
||||||
|
|
||||||
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
substituteInPlace libgcc/config/t-slibgcc-darwin \
|
||||||
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
|
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name ''${!outputLib}/lib/\$(SHLIB_INSTALL_NAME)"
|
||||||
|
|
||||||
substituteInPlace libgfortran/configure \
|
substituteInPlace libgfortran/configure \
|
||||||
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
|
--replace "-install_name \\\$rpath/\\\$soname" "-install_name ''${!outputLib}/lib/\\\$soname"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -202,6 +203,7 @@ stdenv.mkDerivation ({
|
||||||
langGo
|
langGo
|
||||||
langObjC
|
langObjC
|
||||||
langObjCpp
|
langObjCpp
|
||||||
|
langJit
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -202,34 +202,34 @@ postConfigure() {
|
||||||
|
|
||||||
preInstall() {
|
preInstall() {
|
||||||
mkdir -p "$out/${targetConfig}/lib"
|
mkdir -p "$out/${targetConfig}/lib"
|
||||||
mkdir -p "$lib/${targetConfig}/lib"
|
mkdir -p "${!outputLib}/${targetConfig}/lib"
|
||||||
# Make ‘lib64’ symlinks to ‘lib’.
|
# Make ‘lib64’ symlinks to ‘lib’.
|
||||||
if [ -n "$is64bit" -a -z "$enableMultilib" ]; then
|
if [ -n "$is64bit" -a -z "$enableMultilib" ]; then
|
||||||
ln -s lib "$out/${targetConfig}/lib64"
|
ln -s lib "$out/${targetConfig}/lib64"
|
||||||
ln -s lib "$lib/${targetConfig}/lib64"
|
ln -s lib "${!outputLib}/${targetConfig}/lib64"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
postInstall() {
|
postInstall() {
|
||||||
# Move runtime libraries to $lib.
|
# Move runtime libraries to lib output.
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "${!outputLib}"
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la" "${!outputLib}"
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "${!outputLib}"
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "${!outputLib}"
|
||||||
moveToOutput "share/gcc-*/python" "$lib"
|
moveToOutput "share/gcc-*/python" "${!outputLib}"
|
||||||
|
|
||||||
for i in "$lib/${targetConfig}"/lib/*.{la,py}; do
|
for i in "${!outputLib}/${targetConfig}"/lib/*.{la,py}; do
|
||||||
substituteInPlace "$i" --replace "$out" "$lib"
|
substituteInPlace "$i" --replace "$out" "${!outputLib}"
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "$enableMultilib" ]; then
|
if [ -n "$enableMultilib" ]; then
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.so*" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.so*" "${!outputLib}"
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.la" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.la" "${!outputLib}"
|
||||||
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.dylib" "$lib"
|
moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.dylib" "${!outputLib}"
|
||||||
|
|
||||||
for i in "$lib/${targetConfig}"/lib64/*.{la,py}; do
|
for i in "${!outputLib}/${targetConfig}"/lib64/*.{la,py}; do
|
||||||
substituteInPlace "$i" --replace "$out" "$lib"
|
substituteInPlace "$i" --replace "$out" "${!outputLib}"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -251,10 +251,10 @@ postInstall() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if type "install_name_tool"; then
|
if type "install_name_tool"; then
|
||||||
for i in "$lib"/lib/*.*.dylib; do
|
for i in "${!outputLib}"/lib/*.*.dylib; do
|
||||||
install_name_tool -id "$i" "$i" || true
|
install_name_tool -id "$i" "$i" || true
|
||||||
for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do
|
for old_path in $(otool -L "$i" | grep "$out" | awk '{print $1}'); do
|
||||||
new_path=`echo "$old_path" | sed "s,$out,$lib,"`
|
new_path=`echo "$old_path" | sed "s,$out,${!outputLib},"`
|
||||||
install_name_tool -change "$old_path" "$new_path" "$i" || true
|
install_name_tool -change "$old_path" "$new_path" "$i" || true
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
, langGo
|
, langGo
|
||||||
, langObjC
|
, langObjC
|
||||||
, langObjCpp
|
, langObjCpp
|
||||||
|
, langJit
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert cloog != null -> stdenv.lib.versionOlder version "5";
|
assert cloog != null -> stdenv.lib.versionOlder version "5";
|
||||||
|
@ -121,6 +122,7 @@ let
|
||||||
++ lib.optional langObjC "objc"
|
++ lib.optional langObjC "objc"
|
||||||
++ lib.optional langObjCpp "obj-c++"
|
++ lib.optional langObjCpp "obj-c++"
|
||||||
++ lib.optionals crossDarwin [ "objc" "obj-c++" ]
|
++ lib.optionals crossDarwin [ "objc" "obj-c++" ]
|
||||||
|
++ lib.optional langJit "jit"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}"
|
}"
|
||||||
|
@ -173,7 +175,7 @@ let
|
||||||
"--disable-symvers"
|
"--disable-symvers"
|
||||||
"libat_cv_have_ifunc=no"
|
"libat_cv_have_ifunc=no"
|
||||||
"--disable-gnu-indirect-function"
|
"--disable-gnu-indirect-function"
|
||||||
]
|
] ++ lib.optional langJit "--enable-host-shared"
|
||||||
;
|
;
|
||||||
|
|
||||||
in configureFlags
|
in configureFlags
|
||||||
|
|
|
@ -8412,6 +8412,16 @@ in
|
||||||
profiledCompiler = false;
|
profiledCompiler = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
libgccjit = gcc9.cc.override {
|
||||||
|
name = "libgccjit";
|
||||||
|
langFortran = false;
|
||||||
|
langCC = false;
|
||||||
|
langC = false;
|
||||||
|
profiledCompiler = false;
|
||||||
|
langJit = true;
|
||||||
|
enableLTO = false;
|
||||||
|
};
|
||||||
|
|
||||||
gcj = gcj6;
|
gcj = gcj6;
|
||||||
gcj6 = wrapCC (gcc6.cc.override {
|
gcj6 = wrapCC (gcc6.cc.override {
|
||||||
name = "gcj";
|
name = "gcj";
|
||||||
|
|
Loading…
Reference in a new issue