···
···
33
-
"sys/crypto/chacha20"
37
-
"contrib/libc-pwcache"
39
-
"contrib/tzcode/stdtime"
29
+
"lib/libc_nonshared"
39
+
"sys/crypto/chacha20"
43
+
"contrib/libc-pwcache"
45
+
"contrib/tzcode/stdtime"
51
+
"lib/csu/common/crtbrand.S"
52
+
"lib/csu/common/notes.h"
59
-
# Hack around broken propogating MAKEFLAGS to submake, just inline logic
60
-
/${patchesRoot}/libc-msun-arch-subdir.patch
66
+
# libgcc and friends
69
+
"lib/libcompiler_rt"
70
+
"contrib/llvm-project/libunwind"
71
+
"contrib/llvm-project/compiler-rt"
72
+
#"contrib/llvm-project/libcxx"
62
-
# Don't force -lcompiler-rt, we don't actually call it that
63
-
/${patchesRoot}/libc-no-force--lcompiler-rt.patch
79
+
++ lib.optionals (stdenv.hostPlatform.isx86_32) [ "lib/libssp_nonshared" ]
82
+
"contrib/libexecinfo"
65
-
# Fix extra include dir to get rpcsvc headers.
66
-
/${patchesRoot}/librpcsvc-include-subdir.patch
85
+
"sys" # ummmmmmmmmm libkvm wants arch-specific headers from the kernel tree
90
+
"sys/contrib/openzfs"
99
+
"contrib/elftoolchain"
101
+
"lib/libiconv_modules"
substituteInPlace $COMPONENT_PATH/Makefile --replace '.include <src.opts.mk>' ""
111
+
substituteInPlace $BSDSRCDIR/include/paths.h \
112
+
--replace '/usr/lib/i18n' '${builtins.placeholder "out"}/lib/i18n' \
113
+
--replace '/usr/share/i18n' '${builtins.placeholder "out"}/share/i18n'
···
88
-
env.NIX_CFLAGS_COMPILE = "-B${csu}/lib";
90
-
# Suppress lld >= 16 undefined version errors
91
-
# https://github.com/freebsd/freebsd-src/commit/2ba84b4bcdd6012e8cfbf8a0d060a4438623a638
92
-
env.NIX_LDFLAGS = lib.optionalString (stdenv.targetPlatform.linker == "lld") "--undefined-version";
133
+
env.NIX_CFLAGS_COMPILE = toString [
135
+
# These are supposed to have _RTLD_COMPAT_LIB_SUFFIX so we can get things like "lib32"
136
+
# but that's unnecessary
137
+
"-DSTANDARD_LIBRARY_PATH=\"${builtins.placeholder "out"}/lib\""
138
+
"-D_PATH_RTLD=\"${builtins.placeholder "out"}/libexec/ld-elf.so.1\""
"STRIP=-s" # flag to install, not command
···
103
-
MK_ICONV = "no"; # TODO make srctop
MK_INET6_SUPPORT = "yes";
···
MK_MALLOC_PRODUCTION = "yes";
163
+
MK_DETECT_TZ_CHANGES = "no";
164
+
MK_MACHDEP_OPTIMIZATIONS = "yes";
118
-
find . -type d -exec mkdir -p $out/\{} \;
119
-
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
123
-
find . -type d -exec mkdir -p $out/\{} \;
124
-
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
170
+
preBuild = lib.optionalString (stdenv.hostPlatform.isx86_32) ''
171
+
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags
172
+
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags install
127
-
sed -i -e 's| [^ ]*/libc_nonshared.a||' $out/lib/libc.so
178
+
find . -type d -exec mkdir -p $out/\{} \;
179
+
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
129
-
$CC -nodefaultlibs -lgcc -shared -o $out/lib/libgcc_s.so
183
+
find . -type d -exec mkdir -p $out/\{} \;
184
+
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
131
-
NIX_CFLAGS_COMPILE+=" -B$out/lib"
132
-
NIX_CFLAGS_COMPILE+=" -I$out/include"
133
-
NIX_LDFLAGS+=" -L$out/lib"
187
+
mkdir $BSDSRCDIR/lib/libcompiler_rt/i386
188
+
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags
189
+
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags install
135
-
make -C $BSDSRCDIR/lib/libthr $makeFlags
136
-
make -C $BSDSRCDIR/lib/libthr $makeFlags install
191
+
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags
192
+
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags install
138
-
make -C $BSDSRCDIR/lib/msun $makeFlags
139
-
make -C $BSDSRCDIR/lib/msun $makeFlags install
194
+
ln -s $BSDSRCDIR/lib/libc/libc.so.7 $BSDSRCDIR/lib/libc/libc.so # not sure
195
+
mkdir $BSDSRCDIR/lib/libgcc_s/i386
196
+
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags
197
+
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags install
141
-
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
142
-
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
199
+
NIX_CFLAGS_COMPILE+=" -B$out/lib"
200
+
NIX_CFLAGS_COMPILE+=" -I$out/include"
201
+
NIX_LDFLAGS+=" -L$out/lib"
144
-
make -C $BSDSRCDIR/lib/libutil $makeFlags
145
-
make -C $BSDSRCDIR/lib/libutil $makeFlags install
203
+
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags
204
+
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags install
147
-
make -C $BSDSRCDIR/lib/librt $makeFlags
148
-
make -C $BSDSRCDIR/lib/librt $makeFlags install
206
+
mkdir $BSDSRCDIR/lib/libmd/sys
207
+
make -C $BSDSRCDIR/lib/libmd $makeFlags
208
+
make -C $BSDSRCDIR/lib/libmd $makeFlags install
150
-
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
151
-
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
210
+
make -C $BSDSRCDIR/lib/libthr $makeFlags
211
+
make -C $BSDSRCDIR/lib/libthr $makeFlags install
213
+
make -C $BSDSRCDIR/lib/msun $makeFlags
214
+
make -C $BSDSRCDIR/lib/msun $makeFlags install
216
+
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
217
+
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
219
+
make -C $BSDSRCDIR/lib/libutil $makeFlags
220
+
make -C $BSDSRCDIR/lib/libutil $makeFlags install
222
+
make -C $BSDSRCDIR/lib/librt $makeFlags
223
+
make -C $BSDSRCDIR/lib/librt $makeFlags install
225
+
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
226
+
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
228
+
make -C $BSDSRCDIR/lib/libelf $makeFlags
229
+
make -C $BSDSRCDIR/lib/libelf $makeFlags install
231
+
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags
232
+
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags install
234
+
make -C $BSDSRCDIR/lib/libkvm $makeFlags
235
+
make -C $BSDSRCDIR/lib/libkvm $makeFlags install
237
+
make -C $BSDSRCDIR/lib/libmemstat $makeFlags
238
+
make -C $BSDSRCDIR/lib/libmemstat $makeFlags install
240
+
make -C $BSDSRCDIR/lib/libprocstat $makeFlags
241
+
make -C $BSDSRCDIR/lib/libprocstat $makeFlags install
243
+
make -C $BSDSRCDIR/lib/libdevstat $makeFlags
244
+
make -C $BSDSRCDIR/lib/libdevstat $makeFlags install
246
+
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags
247
+
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags SHLIBDIR=${builtins.placeholder "out"}/lib/i18n install
249
+
make -C $BSDSRCDIR/lib/libdl $makeFlags
250
+
make -C $BSDSRCDIR/lib/libdl $makeFlags install
252
+
make -C $BSDSRCDIR/share/i18n $makeFlags
253
+
make -C $BSDSRCDIR/share/i18n $makeFlags ESDBDIR=${builtins.placeholder "out"}/share/i18n/esdb CSMAPPERDIR=${builtins.placeholder "out"}/share/i18n/csmapper install
256
+
+ lib.optionalString stdenv.hostPlatform.isx86_32 ''
257
+
$CC -c $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.c -o $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o
258
+
ORIG_NIX_LDFLAGS="$NIX_LDFLAGS"
259
+
NIX_LDFLAGS+=" $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o"
262
+
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags
263
+
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags install
264
+
rm -f $out/libexec/ld-elf.so.1
265
+
mv $out/bin/ld-elf.so.1 $out/libexec
268
+
# libc should not be allowed to refer to anything other than itself
270
+
find $out -type f | xargs -n1 ${buildPackages.patchelf}/bin/patchelf --shrink-rpath --allowed-rpath-prefixes $out || true
meta.platforms = lib.platforms.freebsd;
275
+
# definitely a bad idea to enable stack protection on the stack protection initializers
276
+
hardeningDisable = [ "stackprotector" ];