Merge branch 'master' into oracle-jdk-remove-redundand-asserts
This commit is contained in:
@@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "arachne-pnr-${version}";
|
||||
version = "2017.11.05";
|
||||
version = "2017.12.06";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cseed";
|
||||
repo = "arachne-pnr";
|
||||
rev = "1e81432830c75c505c76e419619f605a6c4c7583";
|
||||
sha256 = "0lzblmi1klbsmd32h8nh027npm1z1a199lng13lcrqwr17lhb7my";
|
||||
rev = "a32dd2c137b2bb6ba6704b25109790ac76bc2f45";
|
||||
sha256 = "16pfm8spcm3nsrdsjdj22v7dddnwzlhbj1y71wflvvb84xnbga2y";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
, withContrib ? true }:
|
||||
|
||||
let
|
||||
versionPkg = "0.3.0" ;
|
||||
versionPkg = "0.3.7" ;
|
||||
|
||||
contrib = fetchurl {
|
||||
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-contrib-${versionPkg}.tgz" ;
|
||||
sha256 = "1s4yscisn9gsr692jmh4y5mz03012pv84cm7l5n51v83wc08fks0" ;
|
||||
sha256 = "1w59ir9ij5bvvnxj6fb1rvzycfqa57i31wmpwawxbsb10bqwzyr6";
|
||||
};
|
||||
|
||||
postInstallContrib = stdenv.lib.optionalString withContrib
|
||||
@@ -31,11 +31,9 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/ats2-lang/ATS2-Postiats-${version}.tgz";
|
||||
sha256 = "1knf03r8a5sis7n8rw54flf1lxfbr3prywxb1czcdp6hsbcd1v1d";
|
||||
sha256 = "19nxyi39fn42sp38kl14a6pvbxq9wr8y405wx0zz7mqb77r0m0h5";
|
||||
};
|
||||
|
||||
patches = [ ./install-postiats-contrib.patch ];
|
||||
|
||||
buildInputs = [ gmp ];
|
||||
|
||||
setupHook = with stdenv.lib;
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
Install the parts of the contrib that have been moved to Postiats.
|
||||
diff -Naur ATS2-Postiats-0.3.0-upstream/Makefile_dist ATS2-Postiats-0.3.0/Makefile_dist
|
||||
--- ATS2-Postiats-0.3.0-upstream/Makefile_dist 2017-01-20 10:23:54.000000000 -0400
|
||||
+++ ATS2-Postiats-0.3.0/Makefile_dist 2017-01-21 13:14:27.614723335 -0400
|
||||
@@ -124,12 +124,12 @@
|
||||
cd "$(abs_top_srcdir)" && \
|
||||
$(MKDIR_P) $(PATSLIBHOME2)/bin && \
|
||||
if [ ! -d $(bindir2) ] ; then $(MKDIR_P) $(bindir2) ; fi && \
|
||||
- for x in share ccomp prelude libc libats ; do \
|
||||
+ for x in share ccomp prelude libc libats contrib atscntrb ; do \
|
||||
find "$$x" -type d -exec $(MKDIR_P) $(PATSLIBHOME2)/\{} \; -print; \
|
||||
done
|
||||
|
||||
install_files_0: install_dirs ; \
|
||||
- for x in share ccomp/runtime prelude libc libats ; do \
|
||||
+ for x in share ccomp/runtime prelude libc libats contrib atscntrb ; do \
|
||||
cd "$(abs_top_srcdir)" && \
|
||||
$(INSTALL) -d $(PATSLIBHOME2)/"$$x" && \
|
||||
find "$$x" -type l -exec cp -d \{} $(PATSLIBHOME2)/\{} \; -print && \
|
||||
@@ -278,10 +278,12 @@ stdenv.mkDerivation rec {
|
||||
inherit phobosUnittests;
|
||||
name = "dmd-${version}";
|
||||
phases = "installPhase";
|
||||
buildInputs = dmdBuild.buildInputs;
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cp -r --symbolic-link ${dmdBuild}/* $out/
|
||||
'';
|
||||
meta = dmdBuild.meta;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,10 @@ stdenv, fetchurl
|
||||
let
|
||||
s =
|
||||
rec {
|
||||
version = "1.6";
|
||||
versionSuffix = ".0-0";
|
||||
version = "1.8.0";
|
||||
versionSuffix = "";
|
||||
url = "mirror://sourceforge/lazarus/Lazarus%20Zip%20_%20GZip/Lazarus%20${version}/lazarus-${version}${versionSuffix}.tar.gz";
|
||||
sha256 = "1a1w9yibi0rsr51bl7csnq6mr59x0934850kiabs80nr3sz05knb";
|
||||
sha256 = "0i58ngrr1vjyazirfmz0cgikglc02z1m0gcrsfw9awpi3ax8h21j";
|
||||
name = "lazarus-${version}";
|
||||
};
|
||||
buildInputs = [
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
|
||||
, stripped ? true
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -63,16 +64,26 @@ let version = "4.5.4";
|
||||
|
||||
javaAwtGtk = langJava && gtk2 != null;
|
||||
|
||||
/* Platform flags */
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
optional (gccAbi != null) "--with-abi=${gccAbi}" ++
|
||||
optional (gccFpu != null) "--with-fpu=${gccFpu}" ++
|
||||
optional (gccFloat != null) "--with-float=${gccFloat}" ++
|
||||
optional (gccMode != null) "--with-mode=${gccMode}";
|
||||
|
||||
/* Cross-gcc settings */
|
||||
gccArch = stdenv.lib.attrByPath [ "gcc" "arch" ] null targetPlatform;
|
||||
gccCpu = stdenv.lib.attrByPath [ "gcc" "cpu" ] null targetPlatform;
|
||||
gccAbi = stdenv.lib.attrByPath [ "gcc" "abi" ] null targetPlatform;
|
||||
crossMingw = (targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt");
|
||||
|
||||
crossConfigureFlags =
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
optional (gccAbi != null) "--with-abi=${gccAbi}" ++
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -248,6 +259,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -288,7 +301,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
|
||||
# Platform-specific flags
|
||||
@@ -299,72 +312,72 @@ stdenv.mkDerivation ({
|
||||
|
||||
targetConfig = if targetPlatform != hostPlatform then targetPlatform.config else null;
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = {
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, cross != null
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
optional (ppl != null) "--with-ppl=${ppl.crossDrv}" ++
|
||||
optional (cloogppl != null) "--with-cloog=${cloogppl.crossDrv}" ++
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (targetPlatform == hostPlatform && targetPlatform.isi686) "--with-arch=i686" ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags
|
||||
;
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
|
||||
dontStrip = true;
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
LD = "ld";
|
||||
CC = "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -375,39 +388,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru = { inherit langC langCC langAda langFortran langVhdl
|
||||
enableMultilib version; isGNU = true; };
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -33,6 +33,7 @@
|
||||
, gnused ? null
|
||||
, darwin ? null
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -108,13 +109,13 @@ let version = "4.8.5";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -127,8 +128,6 @@ let version = "4.8.5";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -318,6 +317,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -374,15 +375,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -406,62 +399,52 @@ stdenv.mkDerivation ({
|
||||
then "install-strip"
|
||||
else "install";
|
||||
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
optionals (cloog != null) ["--with-cloog=${cloog.crossDrv}" "--enable-cloog-backend=isl"] ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -469,18 +452,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -491,39 +477,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${libcCross.dev}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -33,6 +33,7 @@
|
||||
, gnused ? null
|
||||
, darwin ? null
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -99,13 +100,13 @@ let version = "4.9.4";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -118,8 +119,6 @@ let version = "4.9.4";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -316,6 +315,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -372,15 +373,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -405,62 +398,51 @@ stdenv.mkDerivation ({
|
||||
else "install";
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
optionals (cloog != null) ["--with-cloog=${cloog.crossDrv}" "--enable-cloog-backend=isl"] ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -468,18 +450,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -490,39 +475,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -103,13 +103,13 @@ let version = "5.5.0";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -122,8 +122,6 @@ let version = "5.5.0";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -331,6 +329,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -382,15 +382,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -415,61 +407,51 @@ stdenv.mkDerivation ({
|
||||
else "install";
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -477,18 +459,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -499,39 +484,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -34,6 +34,7 @@
|
||||
, cloog # unused; just for compat with gcc4, as we override the parameter on some places
|
||||
, darwin ? null
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -100,13 +101,13 @@ let version = "6.4.0";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -119,8 +120,6 @@ let version = "6.4.0";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -332,6 +331,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -383,15 +384,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -415,61 +408,51 @@ stdenv.mkDerivation ({
|
||||
else "install";
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -477,18 +460,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -499,39 +485,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -35,6 +35,7 @@
|
||||
, darwin ? null
|
||||
, flex ? null
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -98,13 +99,13 @@ let version = "7.2.0";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -117,8 +118,6 @@ let version = "7.2.0";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -325,6 +324,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -376,15 +377,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -409,61 +402,51 @@ stdenv.mkDerivation ({
|
||||
else "install";
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -471,18 +454,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -493,39 +479,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
source $stdenv/setup
|
||||
|
||||
|
||||
export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy
|
||||
mkdir $NIX_FIXINC_DUMMY
|
||||
oldOpts="$(shopt -po nounset)" || true
|
||||
set -euo pipefail
|
||||
|
||||
|
||||
export NIX_FIXINC_DUMMY="$NIX_BUILD_TOP/dummy"
|
||||
mkdir "$NIX_FIXINC_DUMMY"
|
||||
|
||||
|
||||
if test "$staticCompiler" = "1"; then
|
||||
@@ -13,141 +17,125 @@ fi
|
||||
|
||||
|
||||
# GCC interprets empty paths as ".", which we don't want.
|
||||
if test -z "$CPATH"; then unset CPATH; fi
|
||||
if test -z "$LIBRARY_PATH"; then unset LIBRARY_PATH; fi
|
||||
echo "\$CPATH is \`$CPATH'"
|
||||
echo "\$LIBRARY_PATH is \`$LIBRARY_PATH'"
|
||||
if test -z "${CPATH-}"; then unset CPATH; fi
|
||||
if test -z "${LIBRARY_PATH-}"; then unset LIBRARY_PATH; fi
|
||||
echo "\$CPATH is \`${CPATH-}'"
|
||||
echo "\$LIBRARY_PATH is \`${LIBRARY_PATH-}'"
|
||||
|
||||
if test "$noSysDirs" = "1"; then
|
||||
|
||||
if test -e $NIX_CC/nix-support/orig-libc; then
|
||||
declare \
|
||||
EXTRA_BUILD_FLAGS EXTRA_FLAGS EXTRA_TARGET_FLAGS \
|
||||
EXTRA_BUILD_LDFLAGS EXTRA_TARGET_LDFLAGS
|
||||
|
||||
# Figure out what extra flags to pass to the gcc compilers
|
||||
# being generated to make sure that they use our glibc.
|
||||
extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)"
|
||||
extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before || true)"
|
||||
for pre in 'BUILD_' ''; do
|
||||
curCC="NIX_${pre}CC"
|
||||
curFIXINC="NIX_${pre}FIXINC_DUMMY"
|
||||
|
||||
# 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).
|
||||
export NIX_FIXINC_DUMMY=$libc_dev/include
|
||||
|
||||
# The path to the Glibc binaries such as `crti.o'.
|
||||
glibc_libdir="$(cat $NIX_CC/nix-support/orig-libc)/lib"
|
||||
|
||||
else
|
||||
# Hack: support impure environments.
|
||||
extraFlags="-isystem /usr/include"
|
||||
extraLDFlags="-L/usr/lib64 -L/usr/lib"
|
||||
glibc_libdir="/usr/lib"
|
||||
export NIX_FIXINC_DUMMY=/usr/include
|
||||
fi
|
||||
|
||||
extraFlags="-I$NIX_FIXINC_DUMMY $extraFlags"
|
||||
extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags"
|
||||
|
||||
# BOOT_CFLAGS defaults to `-g -O2'; since we override it below,
|
||||
# make sure to explictly add them so that files compiled with the
|
||||
# bootstrap compiler are optimized and (optionally) contain
|
||||
# debugging information (info "(gccinstall) Building").
|
||||
if test -n "$dontStrip"; then
|
||||
extraFlags="-O2 -g $extraFlags"
|
||||
else
|
||||
# Don't pass `-g' at all; this saves space while building.
|
||||
extraFlags="-O2 $extraFlags"
|
||||
fi
|
||||
|
||||
EXTRA_FLAGS="$extraFlags"
|
||||
for i in $extraLDFlags; do
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i"
|
||||
done
|
||||
|
||||
if test -n "$targetConfig"; then
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build
|
||||
# the g++ compiler (after the specs for the cross-gcc are created).
|
||||
# Having LIBRARY_PATH= makes gcc read the specs from ., and the build
|
||||
# breaks. Having this variable comes from the default.nix code to bring
|
||||
# gcj in.
|
||||
unset LIBRARY_PATH
|
||||
unset CPATH
|
||||
else
|
||||
if test -z "$NIX_CC_CROSS"; then
|
||||
EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS"
|
||||
EXTRA_TARGET_CXXFLAGS="$EXTRA_FLAGS"
|
||||
EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS"
|
||||
else
|
||||
# This the case of cross-building the gcc.
|
||||
# We need special flags for the target, different than those of the build
|
||||
# Assertion:
|
||||
test -e $NIX_CC_CROSS/nix-support/orig-libc
|
||||
|
||||
# Figure out what extra flags to pass to the gcc compilers
|
||||
# being generated to make sure that they use our glibc.
|
||||
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)"
|
||||
declare -a extraFlags=() extraLDFlags=()
|
||||
if [[ -e "${!curCC}/nix-support/orig-libc" ]]; then
|
||||
# Figure out what extra flags to pass to the gcc compilers being
|
||||
# generated to make sure that they use our glibc.
|
||||
extraFlags=($(cat "${!curCC}/nix-support/libc-cflags"))
|
||||
extraLDFlags=($(cat "${!curCC}/nix-support/libc-ldflags") $(cat "${!curCC}/nix-support/libc-ldflags-before" || true))
|
||||
|
||||
# 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"
|
||||
glibc_devdir="$(cat $NIX_CC_CROSS/nix-support/orig-libc-dev)"
|
||||
configureFlags="$configureFlags --with-native-system-header-dir=$glibc_devdir/include"
|
||||
glibc_libdir="$(cat "${!curCC}/nix-support/orig-libc")/lib"
|
||||
glibc_devdir="$(cat "${!curCC}/nix-support/orig-libc-dev")"
|
||||
|
||||
# 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"
|
||||
|
||||
EXTRA_TARGET_CFLAGS="$extraFlags"
|
||||
for i in $extraLDFlags; do
|
||||
EXTRA_TARGET_LDFLAGS="$EXTRA_TARGET_LDFLAGS -Wl,$i"
|
||||
done
|
||||
# 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).
|
||||
declare NIX_${pre}FIXINC_DUMMY="$glibc_devdir/include"
|
||||
else
|
||||
# Hack: support impure environments.
|
||||
extraFlags=("-isystem" "/usr/include")
|
||||
extraLDFlags=("-L/usr/lib64" "-L/usr/lib")
|
||||
glibc_libdir="/usr/lib"
|
||||
declare NIX_${pre}FIXINC_DUMMY=/usr/include
|
||||
fi
|
||||
|
||||
extraFlags=("-I${!curFIXINC}"
|
||||
"${extraFlags[@]}")
|
||||
extraLDFlags=("-L$glibc_libdir" "-rpath" "$glibc_libdir"
|
||||
"${extraLDFlags[@]}")
|
||||
|
||||
# BOOT_CFLAGS defaults to `-g -O2'; since we override it below, make
|
||||
# sure to explictly add them so that files compiled with the bootstrap
|
||||
# compiler are optimized and (optionally) contain debugging information
|
||||
# (info "(gccinstall) Building").
|
||||
if test -n "${dontStrip-}"; then
|
||||
extraFlags=("-O2" "-g" "${extraFlags[@]}")
|
||||
else
|
||||
# Don't pass `-g' at all; this saves space while building.
|
||||
extraFlags=("-O2" "${extraFlags[@]}")
|
||||
fi
|
||||
|
||||
declare EXTRA_${pre}FLAGS="${extraFlags[*]}"
|
||||
for i in "${extraLDFlags[@]}"; do
|
||||
declare EXTRA_${pre}LDFLAGS+=" -Wl,$i"
|
||||
done
|
||||
done
|
||||
|
||||
if test -z "${targetConfig-}"; then
|
||||
# host = target, so the flags are the same
|
||||
EXTRA_TARGET_FLAGS="$EXTRA_FLAGS"
|
||||
EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS"
|
||||
fi
|
||||
|
||||
# CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
|
||||
# the startfiles.
|
||||
# FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
|
||||
# for the startfiles.
|
||||
makeFlagsArray+=( \
|
||||
NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
|
||||
SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
|
||||
CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
CXXFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
CFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
CXXFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
FLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
LDFLAGS_FOR_TARGET="$EXTRA_TARGET_LDFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
)
|
||||
makeFlagsArray+=(
|
||||
"BUILD_SYSTEM_HEADER_DIR=$NIX_BUILD_FIXINC_DUMMY"
|
||||
"SYSTEM_HEADER_DIR=$NIX_BUILD_FIXINC_DUMMY"
|
||||
"NATIVE_SYSTEM_HEADER_DIR=$NIX_FIXINC_DUMMY"
|
||||
|
||||
if test -z "$targetConfig"; then
|
||||
makeFlagsArray+=( \
|
||||
BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
|
||||
BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
|
||||
)
|
||||
"LDFLAGS_FOR_BUILD=$EXTRA_BUILD_LDFLAGS"
|
||||
#"LDFLAGS=$EXTRA_LDFLAGS"
|
||||
"LDFLAGS_FOR_TARGET=$EXTRA_TARGET_LDFLAGS"
|
||||
|
||||
"CFLAGS_FOR_BUILD=$EXTRA_BUILD_FLAGS $EXTRA_BUILD_LDFLAGS"
|
||||
"CXXFLAGS_FOR_BUILD=$EXTRA_BUILD_FLAGS $EXTRA_BUILD_LDFLAGS"
|
||||
"FLAGS_FOR_BUILD=$EXTRA_BUILD_FLAGS $EXTRA_BUILD_LDFLAGS"
|
||||
|
||||
# It seems there is a bug in GCC 5
|
||||
#"CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
|
||||
#"CXXFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
|
||||
|
||||
"CFLAGS_FOR_TARGET=$EXTRA_TARGET_FLAGS $EXTRA_TARGET_LDFLAGS"
|
||||
"CXXFLAGS_FOR_TARGET=$EXTRA_TARGET_FLAGS $EXTRA_TARGET_LDFLAGS"
|
||||
"FLAGS_FOR_TARGET=$EXTRA_TARGET_FLAGS $EXTRA_TARGET_LDFLAGS"
|
||||
)
|
||||
|
||||
if test -z "${targetConfig-}"; then
|
||||
makeFlagsArray+=(
|
||||
"BOOT_CFLAGS=$EXTRA_FLAGS $EXTRA_LDFLAGS"
|
||||
"BOOT_LDFLAGS=$EXTRA_TARGET_FLAGS $EXTRA_TARGET_LDFLAGS"
|
||||
)
|
||||
fi
|
||||
|
||||
if test -n "$targetConfig" -a "$crossStageStatic" == 1; then
|
||||
if test -n "${targetConfig-}" -a "$crossStageStatic" == 1; then
|
||||
# We don't want the gcc build to assume there will be a libc providing
|
||||
# limits.h in this stagae
|
||||
makeFlagsArray+=( \
|
||||
LIMITS_H_TEST=false \
|
||||
)
|
||||
makeFlagsArray+=(
|
||||
'LIMITS_H_TEST=false'
|
||||
)
|
||||
else
|
||||
makeFlagsArray+=( \
|
||||
LIMITS_H_TEST=true \
|
||||
)
|
||||
makeFlagsArray+=(
|
||||
'LIMITS_H_TEST=true'
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$targetConfig"; then
|
||||
if test -n "${targetConfig-}"; then
|
||||
# The host strip will destroy some important details of the objects
|
||||
dontStrip=1
|
||||
fi
|
||||
|
||||
eval "$oldOpts"
|
||||
|
||||
providedPreConfigure="$preConfigure";
|
||||
preConfigure() {
|
||||
if test -n "$newlibSrc"; then
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
, x11Support ? langJava
|
||||
, gnatboot ? null
|
||||
, enableMultilib ? false
|
||||
, enablePlugin ? true # whether to support user-supplied plug-ins
|
||||
, enablePlugin ? hostPlatform == buildPlatform # Whether to support user-supplied plug-ins
|
||||
, name ? "gcc"
|
||||
, libcCross ? null
|
||||
, crossStageStatic ? false
|
||||
@@ -35,6 +35,7 @@
|
||||
, darwin ? null
|
||||
, flex ? null
|
||||
, buildPlatform, hostPlatform, targetPlatform
|
||||
, buildPackages
|
||||
}:
|
||||
|
||||
assert langJava -> zip != null && unzip != null
|
||||
@@ -98,13 +99,13 @@ let version = "7-20170409";
|
||||
javaAwtGtk = langJava && x11Support;
|
||||
|
||||
/* Platform flags */
|
||||
mkPlatformFlags = platform: let
|
||||
gccArch = platform.gcc.arch or null;
|
||||
gccCpu = platform.gcc.cpu or null;
|
||||
gccAbi = platform.gcc.abi or null;
|
||||
gccFpu = platform.gcc.fpu or null;
|
||||
gccFloat = platform.gcc.float or null;
|
||||
gccMode = platform.gcc.mode or null;
|
||||
platformFlags = let
|
||||
gccArch = targetPlatform.platform.gcc.arch or null;
|
||||
gccCpu = targetPlatform.platform.gcc.cpu or null;
|
||||
gccAbi = targetPlatform.platform.gcc.abi or null;
|
||||
gccFpu = targetPlatform.platform.gcc.fpu or null;
|
||||
gccFloat = targetPlatform.platform.gcc.float or null;
|
||||
gccMode = targetPlatform.platform.gcc.mode or null;
|
||||
in
|
||||
optional (gccArch != null) "--with-arch=${gccArch}" ++
|
||||
optional (gccCpu != null) "--with-cpu=${gccCpu}" ++
|
||||
@@ -117,8 +118,6 @@ let version = "7-20170409";
|
||||
crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt";
|
||||
crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem";
|
||||
crossConfigureFlags =
|
||||
mkPlatformFlags targetPlatform ++
|
||||
|
||||
# Ensure that -print-prog-name is able to find the correct programs.
|
||||
[ "--with-as=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-as"
|
||||
"--with-ld=${targetPackages.stdenv.cc.bintools}/bin/${targetPlatform.config}-ld" ] ++
|
||||
@@ -312,6 +311,8 @@ stdenv.mkDerivation ({
|
||||
"--with-mpc=${libmpc}"
|
||||
] ++
|
||||
optional (libelf != null) "--with-libelf=${libelf}" ++
|
||||
optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
|
||||
|
||||
# Basic configuration
|
||||
[
|
||||
@@ -363,15 +364,7 @@ stdenv.mkDerivation ({
|
||||
# Ada
|
||||
optional langAda "--enable-libada" ++
|
||||
|
||||
# Cross-compilation
|
||||
optional (targetPlatform == hostPlatform) (
|
||||
let incDir = if hostPlatform.isDarwin
|
||||
then "${darwin.usr-include}"
|
||||
else "${getDev stdenv.cc.libc}/include";
|
||||
in "--with-native-system-header-dir=${incDir}"
|
||||
) ++
|
||||
|
||||
optional (targetPlatform == hostPlatform) (mkPlatformFlags stdenv.platform) ++
|
||||
platformFlags ++
|
||||
optional (targetPlatform != hostPlatform) crossConfigureFlags ++
|
||||
optional (!bootstrap) "--disable-bootstrap" ++
|
||||
|
||||
@@ -396,61 +389,51 @@ stdenv.mkDerivation ({
|
||||
else "install";
|
||||
|
||||
/* For cross-built gcc (build != host == target) */
|
||||
crossAttrs = let
|
||||
xgccArch = targetPlatform.gcc.arch or null;
|
||||
xgccCpu = targetPlatform.gcc.cpu or null;
|
||||
xgccAbi = targetPlatform.gcc.abi or null;
|
||||
xgccFpu = targetPlatform.gcc.fpu or null;
|
||||
xgccFloat = targetPlatform.gcc.float or null;
|
||||
in {
|
||||
crossAttrs = {
|
||||
AR_FOR_BUILD = "ar";
|
||||
AS_FOR_BUILD = "as";
|
||||
LD_FOR_BUILD = "ld";
|
||||
NM_FOR_BUILD = "nm";
|
||||
OBJCOPY_FOR_BUILD = "objcopy";
|
||||
OBJDUMP_FOR_BUILD = "objdump";
|
||||
RANLIB_FOR_BUILD = "ranlib";
|
||||
SIZE_FOR_BUILD = "size";
|
||||
STRINGS_FOR_BUILD = "strings";
|
||||
STRIP_FOR_BUILD = "strip";
|
||||
CC_FOR_BUILD = "gcc";
|
||||
CXX_FOR_BUILD = "g++";
|
||||
|
||||
AR = "${targetPlatform.config}-ar";
|
||||
AS = "${targetPlatform.config}-as";
|
||||
LD = "${targetPlatform.config}-ld";
|
||||
NM = "${targetPlatform.config}-nm";
|
||||
OBJCOPY = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP = "${targetPlatform.config}-objdump";
|
||||
RANLIB = "${targetPlatform.config}-ranlib";
|
||||
SIZE = "${targetPlatform.config}-size";
|
||||
STRINGS = "${targetPlatform.config}-strings";
|
||||
STRIP = "${targetPlatform.config}-strip";
|
||||
CC = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-gcc";
|
||||
CXX = "${targetPlatform.config}-g++";
|
||||
|
||||
AR_FOR_TARGET = "${targetPlatform.config}-ar";
|
||||
AS_FOR_TARGET = "${targetPlatform.config}-as";
|
||||
LD_FOR_TARGET = "${targetPlatform.config}-ld";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
NM_FOR_TARGET = "${targetPlatform.config}-nm";
|
||||
OBJCOPY_FOR_TARGET = "${targetPlatform.config}-objcopy";
|
||||
OBJDUMP_FOR_TARGET = "${targetPlatform.config}-objdump";
|
||||
RANLIB_FOR_TARGET = "${targetPlatform.config}-ranlib";
|
||||
SIZE_FOR_TARGET = "${targetPlatform.config}-size";
|
||||
STRINGS_FOR_TARGET = "${targetPlatform.config}-strings";
|
||||
STRIP_FOR_TARGET = "${targetPlatform.config}-strip";
|
||||
CC_FOR_TARGET = "${targetPlatform.config}-gcc";
|
||||
CXX_FOR_TARGET = "${targetPlatform.config}-g++";
|
||||
# If we are making a cross compiler, targetPlatform != hostPlatform
|
||||
NIX_CC_CROSS = optionalString (targetPlatform == hostPlatform) builtins.toString stdenv.cc;
|
||||
|
||||
dontStrip = true;
|
||||
configureFlags =
|
||||
optional (!enableMultilib) "--disable-multilib" ++
|
||||
optional (!enableShared) "--disable-shared" ++
|
||||
optional langJava "--with-ecj-jar=${javaEcj.crossDrv}" ++
|
||||
optional javaAwtGtk "--enable-java-awt=gtk" ++
|
||||
optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr.crossDrv}" ++
|
||||
[
|
||||
"--with-gmp=${gmp.crossDrv}"
|
||||
"--with-mpfr=${mpfr.crossDrv}"
|
||||
"--with-mpc=${libmpc.crossDrv}"
|
||||
"--disable-libstdcxx-pch"
|
||||
"--without-included-gettext"
|
||||
"--with-system-zlib"
|
||||
"--enable-languages=${
|
||||
concatStrings (intersperse ","
|
||||
( optional langC "c"
|
||||
++ optional langCC "c++"
|
||||
++ optional langFortran "fortran"
|
||||
++ optional langJava "java"
|
||||
++ optional langAda "ada"
|
||||
++ optional langVhdl "vhdl"
|
||||
++ optional langGo "go"
|
||||
)
|
||||
)
|
||||
}"
|
||||
] ++
|
||||
optional langAda "--enable-libada" ++
|
||||
optional (xgccArch != null) "--with-arch=${xgccArch}" ++
|
||||
optional (xgccCpu != null) "--with-cpu=${xgccCpu}" ++
|
||||
optional (xgccAbi != null) "--with-abi=${xgccAbi}" ++
|
||||
optional (xgccFpu != null) "--with-fpu=${xgccFpu}" ++
|
||||
optional (xgccFloat != null) "--with-float=${xgccFloat}"
|
||||
;
|
||||
buildFlags = "";
|
||||
};
|
||||
|
||||
NIX_BUILD_CC = buildPackages.stdenv.cc;
|
||||
|
||||
# Needed for the cross compilation to work
|
||||
AR = "ar";
|
||||
@@ -458,18 +441,21 @@ stdenv.mkDerivation ({
|
||||
# http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
|
||||
CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
|
||||
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
|
||||
# the library headers and binaries, regarless of the language being
|
||||
# compiled.
|
||||
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't
|
||||
# honor `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
|
||||
# add them to $CPATH and $LIBRARY_PATH in this case.
|
||||
# Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find the
|
||||
# library headers and binaries, regarless of the language being compiled.
|
||||
#
|
||||
# Note: When building the Java AWT GTK+ peer, the build system doesn't honor
|
||||
# `--with-gmp' et al., e.g., when building
|
||||
# `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just add
|
||||
# them to $CPATH and $LIBRARY_PATH in this case.
|
||||
#
|
||||
# Likewise, the LTO code doesn't find zlib.
|
||||
#
|
||||
# Cross-compiling, we need gcc not to read ./specs in order to build the g++
|
||||
# compiler (after the specs for the cross-gcc are created). Having
|
||||
# LIBRARY_PATH= makes gcc read the specs from ., and the build breaks.
|
||||
|
||||
CPATH = makeSearchPathOutput "dev" "include" ([]
|
||||
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
@@ -480,39 +466,38 @@ stdenv.mkDerivation ({
|
||||
# On GNU/Hurd glibc refers to Mach & Hurd
|
||||
# headers.
|
||||
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
|
||||
libcCross.propagatedBuildInputs);
|
||||
libcCross.propagatedBuildInputs
|
||||
));
|
||||
|
||||
LIBRARY_PATH = makeLibraryPath ([]
|
||||
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
|
||||
++ optional (zlib != null) zlib
|
||||
++ optional langJava boehmgc
|
||||
++ optionals javaAwtGtk xlibs
|
||||
++ optionals javaAwtGtk [ gmp mpfr ]
|
||||
++ optional (libpthread != null) libpthread);
|
||||
++ optional (libpthread != null) libpthread)
|
||||
);
|
||||
|
||||
EXTRA_TARGET_CFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
]
|
||||
++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]
|
||||
else null;
|
||||
EXTRA_TARGET_FLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-idirafter ${getDev libcCross}/include"
|
||||
] ++ optionals (! crossStageStatic) [
|
||||
"-B${libcCross.out}/lib"
|
||||
]);
|
||||
|
||||
EXTRA_TARGET_LDFLAGS =
|
||||
if targetPlatform != hostPlatform && libcCross != null then [
|
||||
"-Wl,-L${libcCross.out}/lib"
|
||||
]
|
||||
++ (if crossStageStatic then [
|
||||
EXTRA_TARGET_LDFLAGS = optionals
|
||||
(targetPlatform != hostPlatform && libcCross != null)
|
||||
([
|
||||
"-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;
|
||||
]) ++ optionals (libpthreadCross != null) [
|
||||
"-L${libpthreadCross}/lib"
|
||||
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
|
||||
]);
|
||||
|
||||
passthru =
|
||||
{ inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
# If enabled GHC will be build with the GPL-free but slower integer-simple
|
||||
# library instead of the faster but GPLed integer-gmp library.
|
||||
, enableIntegerSimple ? false, gmp
|
||||
, version ? "8.3.20170808"
|
||||
, version ? "8.5.20171209"
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -13,7 +13,7 @@ let
|
||||
|
||||
commonBuildInputs = [ ghc perl autoconf automake happy alex python3 ];
|
||||
|
||||
rev = "14457cf6a50f708eecece8f286f08687791d51f7";
|
||||
rev = "4335c07ca7e64624819b22644d7591853826bd75";
|
||||
|
||||
commonPreConfigure = ''
|
||||
echo ${version} >VERSION
|
||||
@@ -34,7 +34,7 @@ in stdenv.mkDerivation (rec {
|
||||
src = fetchgit {
|
||||
url = "git://git.haskell.org/ghc.git";
|
||||
inherit rev;
|
||||
sha256 = "08vj9ca7rq7rv8pjfl14fg2lg9d6zisrwlq6bi5vzr006816dy8y";
|
||||
sha256 = "19csad94sk0bw2nj97ppmnwh4c193jg0jmg5w2sx9rqm9ih4yg85";
|
||||
};
|
||||
|
||||
postPatch = "patchShebangs .";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchgit, fetchurl, cmake, pkgconfig, boost, libunwind, libmemcached
|
||||
{ stdenv, fetchgit, cmake, pkgconfig, boost, libunwind, libmemcached
|
||||
, pcre, libevent, gd, curl, libxml2, icu, flex, bison, openssl, zlib, php
|
||||
, expat, libcap, oniguruma, libdwarf, libmcrypt, tbb, gperftools, glog, libkrb5
|
||||
, bzip2, openldap, readline, libelf, uwimap, binutils, cyrus_sasl, pam, libpng
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "hhvm-${version}";
|
||||
version = "3.21";
|
||||
version = "3.23.2";
|
||||
|
||||
# use git version since we need submodules
|
||||
src = fetchgit {
|
||||
url = "https://github.com/facebook/hhvm.git";
|
||||
rev = "56483773e2edd9e61782f1901ce40e47959e71b8";
|
||||
sha256 = "0dmdk98nv04m0fv6909gfbsxqlkckn369yi7kadhir0r7vxsj7wa";
|
||||
rev = "HHVM-${version}";
|
||||
sha256 = "1nic49j8nghx82lgvz0b95r78sqz46qaaqv4nx48p8yrj9ysnd7i";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
@@ -29,10 +29,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
patches = [
|
||||
./flexible-array-members-gcc6.patch
|
||||
(fetchurl {
|
||||
url = https://github.com/facebook/hhvm/commit/b506902af2b7c53de6d6c92491c2086472292004.patch;
|
||||
sha256 = "1br7diczqks6b1xjrdsac599fc62m9l17gcx7dvkc0qj54lq7ys4";
|
||||
})
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -16,7 +16,7 @@ let drv = stdenv.mkDerivation rec {
|
||||
sha256 = "1768f02i3dxdbxn8n29d522h8v0mkgnhpb8ixzq5p54vwjmfl6md";
|
||||
}
|
||||
else
|
||||
abort "unsupported system: ${stdenv.system}";
|
||||
throw "unsupported system: ${stdenv.system}";
|
||||
|
||||
nativeBuildInputs = [ file ];
|
||||
|
||||
@@ -73,7 +73,7 @@ let drv = stdenv.mkDerivation rec {
|
||||
your own risk.
|
||||
'';
|
||||
homepage = "https://bintray.com/jetbrains/intellij-jdk/";
|
||||
licenses = licenses.gpl2;
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ edwtjo ];
|
||||
platforms = with platforms; [ "x86_64-linux" ];
|
||||
};
|
||||
|
||||
@@ -249,10 +249,13 @@ stdenv.mkDerivation rec {
|
||||
inherit ldcUnittests;
|
||||
name = "ldc-${version}";
|
||||
phases = "installPhase";
|
||||
buildInputs = ldcBuild.buildInputs;
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cp -r --symbolic-link ${ldcBuild}/* $out/
|
||||
'';
|
||||
|
||||
meta = ldcBuild.meta;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@ callPackage ./generic.nix (rec {
|
||||
inherit Foundation libobjc;
|
||||
version = "4.4.2.11";
|
||||
sha256 = "0cxnypw1j7s253wr5hy05k42ghgg2s9qibp10kndwnp5bv12q34h";
|
||||
enableParallelBuilding = false; # #32386, https://hydra.nixos.org/build/65565737
|
||||
})
|
||||
|
||||
@@ -4,4 +4,5 @@ callPackage ./generic.nix (rec {
|
||||
inherit Foundation libobjc;
|
||||
version = "4.6.2.16";
|
||||
sha256 = "190f7kcrm1y5x61s1xwdmjnwc3czsg50s3mml4xmix7byh3x2rc9";
|
||||
enableParallelBuilding = false; # #32386, https://hydra.nixos.org/build/65617511
|
||||
})
|
||||
|
||||
@@ -4,4 +4,5 @@ callPackage ./generic-cmake.nix (rec {
|
||||
inherit Foundation libobjc;
|
||||
version = "4.8.1.0";
|
||||
sha256 = "1vyvp2g28ihcgxgxr8nhzyzdmzicsh5djzk8dk1hj5p5f2k3ijqq";
|
||||
enableParallelBuilding = false; # #32386, https://hydra.nixos.org/build/65600645
|
||||
})
|
||||
|
||||
@@ -4,4 +4,5 @@ callPackage ./generic-cmake.nix (rec {
|
||||
inherit Foundation libobjc;
|
||||
version = "5.0.1.1";
|
||||
sha256 = "064pgsmanpybpbhpam9jv9n8aicx6mlyb7a91yzh3kcksmqsxmj8";
|
||||
enableParallelBuilding = false; # #32386, https://hydra.nixos.org/build/65820147
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? false, cacert, Foundation, libobjc, python, version, sha256, autoconf, libtool, automake, cmake, which }:
|
||||
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? false, cacert, Foundation, libobjc, python, version, sha256, autoconf, libtool, automake, cmake, which, enableParallelBuilding ? true }:
|
||||
|
||||
let
|
||||
llvm = callPackage ./llvm.nix { };
|
||||
@@ -45,9 +45,6 @@ stdenv.mkDerivation rec {
|
||||
# The file /nix/store/xxx-mono-2.4.2.1/lib/mscorlib.dll is an invalid CIL image
|
||||
dontStrip = true;
|
||||
|
||||
# Parallel building doesn't work, as shows http://hydra.nixos.org/build/2983601
|
||||
enableParallelBuilding = false;
|
||||
|
||||
# We want pkg-config to take priority over the dlls in the Mono framework and the GAC
|
||||
# because we control pkg-config
|
||||
patches = [ ./pkgconfig-before-gac.patch ];
|
||||
@@ -83,6 +80,8 @@ stdenv.mkDerivation rec {
|
||||
ln -s $out/bin/mcs $out/bin/gmcs
|
||||
'';
|
||||
|
||||
inherit enableParallelBuilding;
|
||||
|
||||
meta = {
|
||||
homepage = http://mono-project.com/;
|
||||
description = "Cross platform, open source .NET development framework";
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11, callPackage, ncurses, zlib, withLLVM ? false, cacert, Foundation, libobjc, python, version, sha256 }:
|
||||
{ stdenv, fetchurl, bison, pkgconfig, glib, gettext, perl, libgdiplus, libX11
|
||||
, callPackage, ncurses, zlib
|
||||
, cacert, Foundation, libobjc, python
|
||||
|
||||
, version, sha256
|
||||
, withLLVM ? false
|
||||
, enableParallelBuilding ? true
|
||||
}:
|
||||
|
||||
let
|
||||
llvm = callPackage ./llvm.nix { };
|
||||
@@ -40,9 +47,6 @@ stdenv.mkDerivation rec {
|
||||
# The file /nix/store/xxx-mono-2.4.2.1/lib/mscorlib.dll is an invalid CIL image
|
||||
dontStrip = true;
|
||||
|
||||
# Parallel building doesn't work, as shows http://hydra.nixos.org/build/2983601
|
||||
enableParallelBuilding = false;
|
||||
|
||||
# We want pkg-config to take priority over the dlls in the Mono framework and the GAC
|
||||
# because we control pkg-config
|
||||
patches = [ ./pkgconfig-before-gac.patch ];
|
||||
@@ -79,6 +83,8 @@ stdenv.mkDerivation rec {
|
||||
ln -s $out/bin/mcs $out/bin/gmcs
|
||||
'';
|
||||
|
||||
inherit enableParallelBuilding;
|
||||
|
||||
meta = {
|
||||
homepage = http://mono-project.com/;
|
||||
description = "Cross platform, open source .NET development framework";
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nasm-${version}";
|
||||
version = "2.13.01";
|
||||
version = "2.13.02";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.nasm.us/pub/nasm/releasebuilds/${version}/${name}.tar.bz2";
|
||||
sha256 = "1ylqs4sqh0paia970v6hpdgq5icxns9zlg21qql232bz1apppy88";
|
||||
sha256 = "1gmvjckxvkmx1kbglgrakc98qhy55xlqlk5flrdihz5yhv92hc4d";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ perl ];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, ncurses, xlibsWrapper }:
|
||||
{ stdenv, fetchurl, ncurses, libX11, xproto, buildEnv }:
|
||||
|
||||
let
|
||||
useX11 = stdenv.isi686 || stdenv.isx86_64;
|
||||
@@ -7,52 +7,65 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
|
||||
name = "ber-metaocaml-${version}";
|
||||
version = "003";
|
||||
|
||||
version = "104";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.2.tar.bz2";
|
||||
sha256 = "0hw1yp1mmfyn1pmda232d0ry69m7ln1z0fn5lgi8nz3y1mx3iww6";
|
||||
url = "http://caml.inria.fr/pub/distrib/ocaml-4.04/ocaml-4.04.0.tar.gz";
|
||||
sha256 = "1pi2hdm9lxhn45qvfqfss1hpa4jijm14qgmrgajsadxqdiplhqyb";
|
||||
};
|
||||
|
||||
metaocaml = fetchurl {
|
||||
url = "http://okmij.org/ftp/ML/ber-metaocaml.tar.gz";
|
||||
sha256 = "1kq1if25c1wvcdiy4g46xk05dkc1am2gc4qvmg4x19wvvaz09gzf";
|
||||
url = "http://okmij.org/ftp/ML/ber-metaocaml-104.tar.gz";
|
||||
sha256 = "1gmwlxairxqcmqa2r6kbf8b4dxc7pfhfbh48g1s14d3z20rj8nib";
|
||||
};
|
||||
|
||||
# Needed to avoid a SIGBUS on the final executable on mips
|
||||
NIX_CFLAGS_COMPILE = if stdenv.isMips then "-fPIC" else "";
|
||||
|
||||
patches = optionals stdenv.isDarwin [ ./gnused-on-osx-fix.patch ];
|
||||
x11env = buildEnv { name = "x11env"; paths = [libX11 xproto];};
|
||||
x11lib = x11env + "/lib";
|
||||
x11inc = x11env + "/include";
|
||||
|
||||
prefixKey = "-prefix ";
|
||||
configureFlags = ["-no-tk"] ++ optionals useX11 [ "-x11lib" xlibsWrapper ];
|
||||
buildFlags = "core coreboot all"; # "world" + optionalString useNativeCompilers " bootstrap world.opt";
|
||||
buildInputs = [ncurses] ++ optionals useX11 [ xlibsWrapper ];
|
||||
configureFlags = optionals useX11 [ "-x11lib" x11lib
|
||||
"-x11include" x11inc ];
|
||||
|
||||
dontStrip = true;
|
||||
buildInputs = [ncurses] ++ optionals useX11 [ libX11 xproto ];
|
||||
installFlags = "-i";
|
||||
installTargets = "install"; # + optionalString useNativeCompilers " installopt";
|
||||
prePatch = ''
|
||||
CAT=$(type -tp cat)
|
||||
sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang
|
||||
patch -p0 < ${./mips64.patch}
|
||||
'';
|
||||
|
||||
postConfigure = ''
|
||||
tar -xvzf $metaocaml
|
||||
cd ${name}
|
||||
make patch
|
||||
cd ..
|
||||
'';
|
||||
postBuild = ''
|
||||
buildPhase = ''
|
||||
make world
|
||||
make -i install
|
||||
|
||||
make bootstrap
|
||||
make opt.opt
|
||||
make installopt
|
||||
mkdir -p $out/include
|
||||
ln -sv $out/lib/ocaml/caml $out/include/caml
|
||||
'';
|
||||
postInstall = ''
|
||||
cd ${name}
|
||||
make all
|
||||
make install
|
||||
make install.opt
|
||||
cd ..
|
||||
'';
|
||||
installPhase = "";
|
||||
postBuild = ''
|
||||
'';
|
||||
checkPhase = ''
|
||||
cd ${name}
|
||||
make test
|
||||
make test-compile
|
||||
make test-native
|
||||
cd ..
|
||||
'';
|
||||
|
||||
@@ -67,6 +80,5 @@ stdenv.mkDerivation rec {
|
||||
A conservative extension of OCaml with the primitive type of code values,
|
||||
and three basic multi-stage expression forms: Brackets, Escape, and Run
|
||||
'';
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import ./jdk-linux-base.nix {
|
||||
downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
|
||||
sha256.i686-linux = "0w1snn9hxwvdnk77frhdzbsm6v30v99dy5zmpy8ij7yxd57z6ql0";
|
||||
sha256.x86_64-linux = "0zq2dxbxmshz080yskhc8y2wbqi0y0kl9girxjbb4rwk837010n7";
|
||||
sha256.armv7l-linux = "10r3nyssx8piyjaspravwgj2bnq4537041pn0lz4fk5b3473kgfb";
|
||||
sha256.armv7l-linux = "0fdkvg1al7g9lqbq10rlw400aqr0xxi2a802319sw5n0zipkrjic";
|
||||
sha256.aarch64-linux = "1xva22cjjpwa95h7x3xzyymn1bgxp1q67j5j304kn6cqah4k31j1";
|
||||
jceName = "jce_policy-8.zip";
|
||||
jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
|
||||
|
||||
@@ -4,7 +4,7 @@ import ./jdk-linux-base.nix {
|
||||
downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
|
||||
sha256.i686-linux = "0gjc7kcfx40f43z1w1qsn1fqxdz8d46wml2g11qgm55ishhv2q7w";
|
||||
sha256.x86_64-linux = "1gv1348hrgna9l3sssv3g9jzs37y1lkx05xq83chav9z1hs3p2r1";
|
||||
sha256.armv7l-linux = "10r3nyssx8piyjaspravwgj2bnq4537041pn0lz4fk5b3473kgfb";
|
||||
sha256.armv7l-linux = "1w0hwslsd3z0kvb3z7gmbh20xsyiz73vglmdqz2108y7alim7arm";
|
||||
sha256.aarch64-linux = "13qpxa8nxsnikmm7h6ysnsdqg5vl8j7hzfa8kgh20z8a17fhj9kk";
|
||||
jceName = "jce_policy-8.zip";
|
||||
jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
|
||||
|
||||
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
|
||||
doCheck = false;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
descripton = "A functional lisp";
|
||||
description = "A functional lisp";
|
||||
homepage = https://github.com/aoh/owl-lisp;
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ peterhoeg ];
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
|
||||
buildOcaml rec {
|
||||
name = "reason";
|
||||
version = "3.0.3";
|
||||
version = "3.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "facebook";
|
||||
repo = "reason";
|
||||
rev = version;
|
||||
sha256 = "19kp1cnxi6dq89xh07c14q7kzkawbxdkwrvn1rl48l78d04agnxx";
|
||||
sha256 = "15qhx85him5rr4j0ygj3jh3qv9ijrn82ibr9scbn0qrnn43kj047";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ menhir merlin_extend ppx_tools_versioned ];
|
||||
@@ -34,7 +34,7 @@ buildOcaml rec {
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://facebook.github.io/reason/;
|
||||
homepage = https://reasonml.github.io/;
|
||||
description = "Facebook's friendly syntax to OCaml";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.volth ];
|
||||
|
||||
@@ -4,22 +4,22 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "yosys-${version}";
|
||||
version = "2017.11.05";
|
||||
version = "2017.12.06";
|
||||
|
||||
srcs = [
|
||||
(fetchFromGitHub {
|
||||
owner = "cliffordwolf";
|
||||
repo = "yosys";
|
||||
rev = "4f31cb6daddedcee467d85797d81b79360ce1826";
|
||||
sha256 = "1a5n0g5kpjsy8f99f64w81gkrr450wvffp407r1pddl8pmb0c3r7";
|
||||
name = "yosys";
|
||||
owner = "cliffordwolf";
|
||||
repo = "yosys";
|
||||
rev = "8f2638ae2f12a48dcad14f24b0211c16ac724762";
|
||||
sha256 = "0synbskclgn97hp28myvl0hp8pqp66awp37z4cv7zl154ipysfl1";
|
||||
name = "yosys";
|
||||
})
|
||||
(fetchFromBitbucket {
|
||||
owner = "alanmi";
|
||||
repo = "abc";
|
||||
rev = "f6838749f234";
|
||||
sha256 = "0n7ywvih958h1c4n7a398a9w3qikhkv885fx5j3y2a0xwqc86m4y";
|
||||
name = "yosys-abc";
|
||||
owner = "alanmi";
|
||||
repo = "abc";
|
||||
rev = "31fc97b0aeed";
|
||||
sha256 = "0ljmclr4hfh3iiyfw7ji0fm8j983la8021xfpnfd20dyc807hh65";
|
||||
name = "yosys-abc";
|
||||
})
|
||||
];
|
||||
sourceRoot = "yosys";
|
||||
|
||||
Reference in New Issue
Block a user