tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
minimal-bootstrap.gcc46: build with tinycc-musl
Emily Trau
2 years ago
29b98b0f
a680950c
+36
-35
3 changed files
expand all
collapse all
unified
split
pkgs
os-specific
linux
minimal-bootstrap
default.nix
gcc
4.6.nix
no-system-headers.patch
+6
-2
pkgs/os-specific/linux/minimal-bootstrap/default.nix
···
73
73
};
74
74
75
75
gcc46 = callPackage ./gcc/4.6.nix {
76
76
-
gcc = gcc2;
77
77
-
glibc = glibc22;
76
76
+
coreutils = coreutils-musl;
77
77
+
tinycc = tinycc-musl;
78
78
+
gnumake = gnumake-musl;
79
79
+
gnutar = gnutar-musl;
80
80
+
# FIXME: not sure why new gawk doesn't work
81
81
+
gawk = gawk-mes;
78
82
};
79
83
80
84
inherit (callPackage ./glibc {
+19
-33
pkgs/os-specific/linux/minimal-bootstrap/gcc/4.6.nix
···
3
3
, hostPlatform
4
4
, fetchurl
5
5
, bash
6
6
-
, gcc
7
7
-
, glibc
8
8
-
, linux-headers
6
6
+
, coreutils
7
7
+
, tinycc
9
8
, binutils
10
9
, gnumake
11
10
, gnupatch
···
32
31
};
33
32
34
33
patches = [
35
35
-
# This patch enables building gcc-4.6.4 using gcc-2.95.3 and glibc-2.2.5
36
36
-
# * Tweak Makefile to allow overriding NATIVE_SYSTEM_HEADER_DIR using #:makeflags
37
37
-
# * Add missing limits.h include.
38
38
-
# * Add SSIZE_MAX define. The SSIZE_MAX define has been added to Mes
39
39
-
# upstream and can be removed with the next Mes release.
40
40
-
# * Remove -fbuilding-libgcc flag, it assumes features being present from a
41
41
-
# newer gcc or glibc.
42
42
-
# * [MES_BOOTSTRAP_GCC]: Disable threads harder.
43
43
-
(fetchurl {
44
44
-
url = "https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/patches/gcc-boot-4.6.4.patch?id=50249cab3a98839ade2433456fe618acc6f804a5";
45
45
-
sha256 = "1zzd8gnihw6znrgb6c6pfsmm0vix89xw3giv1nnsykm57j0v3z0d";
46
46
-
})
47
47
-
./libstdc++-target.patch
34
34
+
# Remove hardcoded NATIVE_SYSTEM_HEADER_DIR
35
35
+
./no-system-headers.patch
48
36
];
49
37
50
50
-
# To reduce the set of pre-built bootstrap inputs, build
51
51
-
# GMP & co. from GCC.
52
38
gmpVersion = "4.3.2";
53
39
gmp = fetchurl {
54
40
url = "mirror://gnu/gmp/gmp-${gmpVersion}.tar.gz";
···
71
57
inherit pname version;
72
58
73
59
nativeBuildInputs = [
74
74
-
gcc
60
60
+
coreutils
61
61
+
tinycc.compiler
75
62
binutils
76
63
gnumake
77
64
gnupatch
···
84
71
gzip
85
72
];
86
73
87
87
-
# condition in ./libcpp/configure requires `env` which is not available in this coreutils
88
88
-
am_cv_CXX_dependencies_compiler_type = "gcc";
89
89
-
am_cv_CC_dependencies_compiler_type = "gcc";
90
90
-
91
74
passthru.tests.get-version = result:
92
75
bash.runCommand "${pname}-get-version-${version}" {} ''
93
76
${result}/bin/gcc --version
···
118
101
${lib.concatMapStringsSep "\n" (f: "patch -Np1 -i ${f}") patches}
119
102
120
103
# Configure
121
121
-
export C_INCLUDE_PATH="${gcc}/lib/gcc-lib/${hostPlatform.config}/${gcc.version}/include:${linux-headers}/include:${glibc}/include:$(pwd)/mpfr/src"
104
104
+
export CC="tcc -B ${tinycc.libs}/lib"
105
105
+
export C_INCLUDE_PATH="${tinycc.libs}/include:$(pwd)/mpfr/src"
122
106
export CPLUS_INCLUDE_PATH="$C_INCLUDE_PATH"
123
123
-
export LDFLAGS="-B${glibc}/lib -Wl,-dynamic-linker -Wl,${glibc}"
124
124
-
export LDFLAGS_FOR_TARGET=$LDFLAGS
125
125
-
export LIBRARY_PATH="${glibc}/lib:${gcc}/lib"
126
126
-
export LIBS="-lc -lnss_files -lnss_dns -lresolv"
107
107
+
108
108
+
# Avoid "Link tests are not allowed after GCC_NO_EXECUTABLES"
109
109
+
export lt_cv_shlibpath_overrides_runpath=yes
110
110
+
export ac_cv_func_memcpy=yes
111
111
+
export ac_cv_func_strerror=yes
112
112
+
127
113
bash ./configure \
128
114
--prefix=$out \
129
115
--build=${buildPlatform.config} \
130
116
--host=${hostPlatform.config} \
131
131
-
--with-native-system-header-dir=${glibc}/include \
132
132
-
--with-build-sysroot=${glibc}/include \
117
117
+
--with-native-system-header-dir=${tinycc.libs}/include \
118
118
+
--with-build-sysroot=${tinycc.libs}/include \
133
119
--disable-bootstrap \
134
120
--disable-decimal-float \
135
121
--disable-libatomic \
···
146
132
--disable-multilib \
147
133
--disable-plugin \
148
134
--disable-threads \
149
149
-
--enable-languages=c,c++ \
135
135
+
--enable-languages=c \
150
136
--enable-static \
151
137
--disable-shared \
152
138
--enable-threads=single \
···
154
140
--disable-build-with-cxx
155
141
156
142
# Build
157
157
-
make
143
143
+
make -j $NIX_BUILD_CORES
158
144
159
145
# Install
160
160
-
make install
146
146
+
make -j $NIX_BUILD_CORES install
161
147
''
+11
pkgs/os-specific/linux/minimal-bootstrap/gcc/no-system-headers.patch
···
1
1
+
--- a/gcc/Makefile.in
2
2
+
+++ b/gcc/Makefile.in
3
3
+
@@ -440,7 +440,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h
4
4
+
LTO_SYMTAB_H = $(srcdir)/../include/lto-symtab.h
5
5
+
6
6
+
# Default native SYSTEM_HEADER_DIR, to be overridden by targets.
7
7
+
-NATIVE_SYSTEM_HEADER_DIR = /usr/include
8
8
+
+# NATIVE_SYSTEM_HEADER_DIR = /usr/include
9
9
+
# Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
10
10
+
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
11
11
+