tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
minimal-bootstrap.gcc46-cxx: init at 4.6.4
Emily Trau
2 years ago
33cdcff7
12fe603c
+153
-37
4 changed files
expand all
collapse all
unified
split
pkgs
os-specific
linux
minimal-bootstrap
default.nix
gcc
4.6.cxx.nix
4.6.nix
libstdc++-target.patch
+8
pkgs/os-specific/linux/minimal-bootstrap/default.nix
···
91
91
# FIXME: not sure why new gawk doesn't work
92
92
gawk = gawk-mes;
93
93
};
94
94
+
gcc46-cxx = callPackage ./gcc/4.6.cxx.nix {
95
95
+
gcc = gcc46;
96
96
+
gnumake = gnumake-musl;
97
97
+
gnutar = gnutar-musl;
98
98
+
# FIXME: not sure why new gawk doesn't work
99
99
+
gawk = gawk-mes;
100
100
+
};
94
101
95
102
inherit (callPackage ./glibc {
96
103
bash = bash_2_05;
···
199
206
echo ${gcc2.tests.get-version}
200
207
echo ${gcc2-mes.tests.get-version}
201
208
echo ${gcc46.tests.get-version}
209
209
+
echo ${gcc46-cxx.tests.hello-world}
202
210
echo ${gnugrep.tests.get-version}
203
211
echo ${gnused.tests.get-version}
204
212
echo ${gnused-mes.tests.get-version}
+140
pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.cxx.nix
···
1
1
+
{ lib
2
2
+
, buildPlatform
3
3
+
, hostPlatform
4
4
+
, fetchurl
5
5
+
, bash
6
6
+
, coreutils
7
7
+
, gcc
8
8
+
, musl
9
9
+
, binutils
10
10
+
, gnumake
11
11
+
, gnupatch
12
12
+
, gnused
13
13
+
, gnugrep
14
14
+
, gawk
15
15
+
, diffutils
16
16
+
, findutils
17
17
+
, gnutar
18
18
+
, gzip
19
19
+
}:
20
20
+
let
21
21
+
pname = "gcc-cxx";
22
22
+
version = "4.6.4";
23
23
+
24
24
+
src = fetchurl {
25
25
+
url = "mirror://gnu/gcc/gcc-${version}/gcc-core-${version}.tar.gz";
26
26
+
sha256 = "173kdb188qg79pcz073cj9967rs2vzanyjdjyxy9v0xb0p5sad75";
27
27
+
};
28
28
+
29
29
+
ccSrc = fetchurl {
30
30
+
url = "mirror://gnu/gcc/gcc-${version}/gcc-g++-${version}.tar.gz";
31
31
+
sha256 = "1fqqk5zkmdg4vmqzdmip9i42q6b82i3f6yc0n86n9021cr7ms2k9";
32
32
+
};
33
33
+
34
34
+
gmpVersion = "4.3.2";
35
35
+
gmp = fetchurl {
36
36
+
url = "mirror://gnu/gmp/gmp-${gmpVersion}.tar.gz";
37
37
+
sha256 = "15rwq54fi3s11izas6g985y9jklm3xprfsmym3v1g6xr84bavqvv";
38
38
+
};
39
39
+
40
40
+
mpfrVersion = "2.4.2";
41
41
+
mpfr = fetchurl {
42
42
+
url = "mirror://gnu/mpfr/mpfr-${mpfrVersion}.tar.gz";
43
43
+
sha256 = "0dxn4904dra50xa22hi047lj8kkpr41d6vb9sd4grca880c7wv94";
44
44
+
};
45
45
+
46
46
+
mpcVersion = "1.0.3";
47
47
+
mpc = fetchurl {
48
48
+
url = "mirror://gnu/mpc/mpc-${mpcVersion}.tar.gz";
49
49
+
sha256 = "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1";
50
50
+
};
51
51
+
52
52
+
patches = [
53
53
+
# Remove hardcoded NATIVE_SYSTEM_HEADER_DIR
54
54
+
./no-system-headers.patch
55
55
+
];
56
56
+
in
57
57
+
bash.runCommand "${pname}-${version}" {
58
58
+
inherit pname version;
59
59
+
60
60
+
nativeBuildInputs = [
61
61
+
gcc
62
62
+
binutils
63
63
+
gnumake
64
64
+
gnupatch
65
65
+
gnused
66
66
+
gnugrep
67
67
+
gawk
68
68
+
diffutils
69
69
+
findutils
70
70
+
gnutar
71
71
+
gzip
72
72
+
];
73
73
+
74
74
+
passthru.tests.hello-world = result:
75
75
+
bash.runCommand "${pname}-simple-program-${version}" {
76
76
+
nativeBuildInputs = [ binutils musl result ];
77
77
+
} ''
78
78
+
cat <<EOF >> test.c
79
79
+
#include <stdio.h>
80
80
+
int main() {
81
81
+
printf("Hello World!\n");
82
82
+
return 0;
83
83
+
}
84
84
+
EOF
85
85
+
musl-gcc -o test test.c
86
86
+
./test
87
87
+
mkdir $out
88
88
+
'';
89
89
+
90
90
+
meta = with lib; {
91
91
+
description = "GNU Compiler Collection, version ${version}";
92
92
+
homepage = "https://gcc.gnu.org";
93
93
+
license = licenses.gpl3Plus;
94
94
+
maintainers = teams.minimal-bootstrap.members;
95
95
+
platforms = platforms.unix;
96
96
+
};
97
97
+
} ''
98
98
+
# Unpack
99
99
+
tar xzf ${src}
100
100
+
tar xzf ${ccSrc}
101
101
+
tar xzf ${gmp}
102
102
+
tar xzf ${mpfr}
103
103
+
tar xzf ${mpc}
104
104
+
cd gcc-${version}
105
105
+
106
106
+
ln -s ../gmp-${gmpVersion} gmp
107
107
+
ln -s ../mpfr-${mpfrVersion} mpfr
108
108
+
ln -s ../mpc-${mpcVersion} mpc
109
109
+
110
110
+
# Patch
111
111
+
${lib.concatMapStringsSep "\n" (f: "patch -Np1 -i ${f}") patches}
112
112
+
# doesn't recognise musl
113
113
+
sed -i 's|"os/gnu-linux"|"os/generic"|' libstdc++-v3/configure.host
114
114
+
115
115
+
# Configure
116
116
+
export CC="gcc -Wl,-dynamic-linker -Wl,${musl}/lib/libc.so"
117
117
+
export CFLAGS_FOR_TARGET="-Wl,-dynamic-linker -Wl,${musl}/lib/libc.so"
118
118
+
export C_INCLUDE_PATH="${musl}/include"
119
119
+
export CPLUS_INCLUDE_PATH="$C_INCLUDE_PATH"
120
120
+
export LIBRARY_PATH="${musl}/lib"
121
121
+
122
122
+
bash ./configure \
123
123
+
--prefix=$out \
124
124
+
--build=${buildPlatform.config} \
125
125
+
--host=${hostPlatform.config} \
126
126
+
--with-native-system-header-dir=${musl}/include \
127
127
+
--with-build-sysroot=${musl} \
128
128
+
--enable-languages=c,c++ \
129
129
+
--disable-bootstrap \
130
130
+
--disable-libmudflap \
131
131
+
--disable-libstdcxx-pch \
132
132
+
--disable-lto \
133
133
+
--disable-multilib
134
134
+
135
135
+
# Build
136
136
+
make -j $NIX_BUILD_CORES
137
137
+
138
138
+
# Install
139
139
+
make -j $NIX_BUILD_CORES install
140
140
+
''
+5
-5
pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix
···
29
29
sha256 = "1fqqk5zkmdg4vmqzdmip9i42q6b82i3f6yc0n86n9021cr7ms2k9";
30
30
};
31
31
32
32
-
patches = [
33
33
-
# Remove hardcoded NATIVE_SYSTEM_HEADER_DIR
34
34
-
./no-system-headers.patch
35
35
-
];
36
36
-
37
32
gmpVersion = "4.3.2";
38
33
gmp = fetchurl {
39
34
url = "mirror://gnu/gmp/gmp-${gmpVersion}.tar.gz";
···
51
46
url = "mirror://gnu/mpc/mpc-${mpcVersion}.tar.gz";
52
47
sha256 = "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1";
53
48
};
49
49
+
50
50
+
patches = [
51
51
+
# Remove hardcoded NATIVE_SYSTEM_HEADER_DIR
52
52
+
./no-system-headers.patch
53
53
+
];
54
54
in
55
55
bash.runCommand "${pname}-${version}" {
56
56
inherit pname version;
-32
pkgs/os-specific/linux/minimal-bootstrap/gcc/libstdc++-target.patch
···
1
1
-
Patch to make the target libraries 'configure' scripts find the proper CPP.
2
2
-
I noticed that building the mingw32 cross compiler.
3
3
-
Looking at the build script for mingw in archlinux, I think that only nixos
4
4
-
needs this patch. I don't know why.
5
5
-
diff --git a/Makefile.in b/Makefile.in
6
6
-
index 93f66b6..d691917 100644
7
7
-
--- a/Makefile.in
8
8
-
+++ b/Makefile.in
9
9
-
@@ -266,6 +266,7 @@ BASE_TARGET_EXPORTS = \
10
10
-
AR="$(AR_FOR_TARGET)"; export AR; \
11
11
-
AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
12
12
-
CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \
13
13
-
+ CPP="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CC; \
14
14
-
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
15
15
-
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
16
16
-
CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
17
17
-
@@ -291,11 +292,13 @@ BASE_TARGET_EXPORTS = \
18
18
-
RAW_CXX_TARGET_EXPORTS = \
19
19
-
$(BASE_TARGET_EXPORTS) \
20
20
-
CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
21
21
-
- CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX;
22
22
-
+ CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; \
23
23
-
+ CXXCPP="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CXX;
24
24
-
25
25
-
NORMAL_TARGET_EXPORTS = \
26
26
-
$(BASE_TARGET_EXPORTS) \
27
27
-
- CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX;
28
28
-
+ CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; \
29
29
-
+ CXXCPP="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CXX;
30
30
-
31
31
-
# Where to find GMP
32
32
-
HOST_GMPLIBS = @gmplibs@