package gcc { description = "The GNU Compiler Collection"; website = "https://www.gnu.org/software/gcc"; anitya = 6502; version* = "16.1.0"; source = remoteTar { url = "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+ "gcc-"+version+"/gcc-"+version+".tar.gz"; checksum = "4ASoWbxaA2FW7PAB0zzHDPC5XnNhyaAyjtDPpGzceSLeYnEIXsNYZR3PA_Zu5P0K"; compress = gzip; }; patches = [ "musl-off64_t-loff_t.patch", "musl-legacy-lfs.patch", ]; // GCC spends most of its time in its many configure scripts, however // it also saturates the CPU for a consequential amount of time. exclusive = true; exec = make { configure = { "disable-multilib"; "enable-default-pie"; "disable-nls"; "with-gnu-as"; "with-gnu-ld"; "with-system-zlib"; "enable-languages": "c,c++,go"; "with-native-system-header-dir": "/system/include"; "with-multilib-list": arch { amd64, arm64 = "''"; default = unset; }; }; make = [ "BOOT_CFLAGS='-O2 -g'", noop { key = value; }, "bootstrap", ]; // This toolchain is hacked to pieces, it is not expected to ever work // well in its current state. That does not matter as long as the // toolchain it produces passes its own test suite. skip-check = true; }; inputs = [ binutils, mpc, zlib, libucontext, kernel-headers, ]; }