1{
2 lib,
3 stdenv,
4 gcc_meta,
5 release_version,
6 version,
7 getVersionFile,
8 monorepoSrc ? null,
9 fetchpatch,
10 autoreconfHook269,
11 runCommand,
12}:
13stdenv.mkDerivation (finalAttrs: {
14 pname = "libatomic";
15 inherit version;
16
17 src = runCommand "libatomic-src-${version}" { src = monorepoSrc; } ''
18 runPhase unpackPhase
19
20 mkdir -p "$out/gcc"
21 cp gcc/BASE-VER "$out/gcc"
22 cp gcc/DATESTAMP "$out/gcc"
23
24 cp -r libatomic "$out"
25
26 cp -r config "$out"
27 cp -r multilib.am "$out"
28 cp -r libtool.m4 "$out"
29
30 cp config.guess "$out"
31 cp config.rpath "$out"
32 cp config.sub "$out"
33 cp config-ml.in "$out"
34 cp ltmain.sh "$out"
35 cp install-sh "$out"
36 cp mkinstalldirs "$out"
37
38 [[ -f MD5SUMS ]]; cp MD5SUMS "$out"
39 '';
40
41 patches = [
42 (fetchpatch {
43 name = "custom-threading-model.patch";
44 url = "https://inbox.sourceware.org/gcc-patches/20250716204545.1063669-1-git@JohnEricson.me/raw";
45 hash = "sha256-kxNntY2r4i/+XHQSpf9bYV2Jg+FD/pD5TiMn5hd4ckk=";
46 includes = [
47 "config/*"
48 "libatomic/*"
49 ];
50 })
51 ];
52
53 postUnpack = ''
54 mkdir -p ./build
55 buildRoot=$(readlink -e "./build")
56 '';
57
58 preAutoreconf = ''
59 sourceRoot=$(readlink -e "./libatomic")
60 cd $sourceRoot
61 '';
62
63 enableParallelBuilding = true;
64
65 nativeBuildInputs = [
66 autoreconfHook269
67 ];
68
69 configurePlatforms = [
70 "build"
71 "host"
72 ];
73
74 configureFlags = [
75 "--disable-dependency-tracking"
76 "cross_compiling=true"
77 "--disable-multilib"
78 ];
79
80 preConfigure = ''
81 cd "$buildRoot"
82 configureScript=$sourceRoot/configure
83 '';
84
85 doCheck = true;
86
87 passthru = {
88 isGNU = true;
89 };
90
91 meta = gcc_meta // {
92 homepage = "https://gcc.gnu.org/";
93 };
94})