gcc: Remove target junk

This commit is contained in:
Ross Smyth 2025-10-02 19:03:25 -04:00 committed by Victor Fuentes
parent f9b7a00988
commit 238dddb970
Signed by: vlinkz
GPG key ID: DF727B8D5AF99C64
6 changed files with 61 additions and 36 deletions

View file

@ -51,7 +51,6 @@ in
}
{
build = "x86_64-linux";
target = "@linux";
}
];

View file

@ -14,12 +14,11 @@ let
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.platform.target;
};
prefix = lib.strings.when (
platform.build.triple != platform.target.triple
) "${platform.target.triple}-";
platform.build.triple != config.target.triple
) "${config.target.triple}-";
patches = [
../patches/libstdc++-target.patch
@ -30,9 +29,9 @@ let
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--with-as=${config.deps.build.target.binutils.package}/bin/${prefix}as"
"--with-ld=${config.deps.build.target.binutils.package}/bin/${prefix}ld"
"--target=${config.target.triple}"
"--with-as=${config.deps.build.host.binutils.package}/bin/${prefix}as"
"--with-ld=${config.deps.build.host.binutils.package}/bin/${prefix}ld"
"--enable-languages=c,c++"
"--disable-bootstrap"
"--disable-libsanitizer"
@ -74,6 +73,11 @@ in
type = lib.types.string;
description = "Version of isl.";
};
target.triple = lib.options.create {
type = lib.types.string;
description = "Target of the compiler"
};
};
config = {
@ -86,16 +90,15 @@ in
platforms = [
{
build = "i686-linux";
target = "x86_64-linux";
host = "x86_64-linux";
}
{
build = "x86_64-linux";
target = "@linux";
host = "@linux";
}
];
builder = builders.foundation.basic;
target.triple = platforms.host.triple;
gmp.version = "6.3.0";
mpfr.version = "4.2.1";
mpc.version = "1.3.1";
@ -163,7 +166,7 @@ in
xz = packages.foundation.xz.versions."5.4.3-stage1-passthrough";
binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough";
};
target = {
host = {
binutils = packages.foundation.binutils.versions."2.41-stage1";
};
};

View file

@ -14,7 +14,6 @@ let
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.platform.target;
};
prefix = lib.strings.when (
@ -41,17 +40,17 @@ let
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--with-as=${config.deps.build.target.binutils.package}/bin/${prefix}as"
"--with-ld=${config.deps.build.target.binutils.package}/bin/${prefix}ld"
"--target=${config.target.triple}"
"--with-as=${config.deps.build.host.binutils.package}/bin/${prefix}as"
"--with-ld=${config.deps.build.host.binutils.package}/bin/${prefix}ld"
"--enable-languages=c,c++"
"--disable-libsanitizer"
"--disable-lto"
"--disable-multilib"
"--with-headers=${config.deps.target.target.glibc.package}/include"
"--with-headers=${config.deps.host.host.glibc.package}/include"
"--with-build-sysroot=/"
"--with-native-system-header-dir=${config.deps.target.target.glibc.package}/include"
"--with-build-time-tools=${config.deps.build.target.binutils.package}/bin"
"--with-native-system-header-dir=${config.deps.host.host.glibc.package}/include"
"--with-build-time-tools=${config.deps.build.host.binutils.package}/bin"
];
in
{
@ -75,6 +74,11 @@ in
type = lib.types.string;
description = "Version of isl.";
};
target.triple = lib.options.create {
type = lib.types.string;
description = "Target of GCC";
};
};
config = {
@ -87,16 +91,15 @@ in
platforms = [
{
build = "i686-linux";
target = "x86_64-linux";
}
{
build = "x86_64-linux";
target = "@linux";
}
];
builder = builders.foundation.basic;
target.triple = config.platforms.host;
gmp.version = "6.3.0";
mpfr.version = "4.2.1";
mpc.version = "1.3.1";
@ -165,22 +168,22 @@ in
binutils = packages.foundation.binutils.versions."2.41-stage1-passthrough";
};
target = {
host = {
binutils = packages.foundation.binutils.versions."2.41-stage1";
};
};
target = {
target = {
host = {
host = {
glibc = packages.foundation.glibc.versions."2.38-stage1";
};
};
};
env = {
CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.target.target.glibc.dynamicLinker} -B${config.deps.target.target.glibc.package}/lib";
LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.target.triple}/libgcc -L${config.deps.target.target.glibc.package}/lib";
LIBRARY_PATH = "${config.deps.target.target.glibc.package}/lib";
CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker} -B${config.deps.host.host.glibc.package}/lib";
LDFLAGS_FOR_TARGET = "-L$(pwd)/${config.target.triple}/libgcc -L${config.deps.host.host.glibc.package}/lib";
LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib";
};
hooks = ctx: {
@ -230,9 +233,9 @@ in
# TODO(vlinkz) Hack to fix missing crti.o and crtn.o. Figure out how to properly find their paths.
mkdir gcc
ln -sv ${config.deps.target.target.glibc.package}/lib/{crti.o,crtn.o} gcc
mkdir -p ${platform.target.triple}/libstdc++-v3/src
ln -sv ${config.deps.target.target.glibc.package}/lib/{crti.o,crtn.o} ${platform.target.triple}/libstdc++-v3/src
ln -sv ${config.deps.host.host.glibc.package}/lib/{crti.o,crtn.o} gcc
mkdir -p ${platform.host.host}/libstdc++-v3/src
ln -sv ${config.deps.host.host.glibc.package}/lib/{crti.o,crtn.o} ${platform.host.host}/libstdc++-v3/src
bash ../configure ${builtins.concatStringsSep " " configureFlags}
'';

View file

@ -11,10 +11,9 @@ let
package = packages.foundation.gcc.versions."13.2.0-stage3".extend {
platform = {
build = lib.modules.overrides.force (
if config.platform.target == "x86_64-linux" then "i686-linux" else "x86_64-linux"
if config.target.triple == "x86_64-linux" then "i686-linux" else "x86_64-linux"
);
host = lib.modules.overrides.force config.platform.host;
target = lib.modules.overrides.force config.platform.target;
};
};
in

View file

@ -14,9 +14,12 @@ let
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.platform.target;
};
prefix = lib.strings.when (
platform.build.triple != platform.target.triple
) "${platform.target.triple}-";
patches = [
../patches/libstdc++-target.patch
];
@ -25,6 +28,8 @@ let
"-Wl,-dynamic-linker=${config.deps.host.host.glibc.dynamicLinker}"
"-L${config.deps.host.host.glibc.package}/lib"
"-B${config.deps.host.host.glibc.package}/lib"
]
++ lib.lists.when (config.platform.target == "riscv64-linux") [
"-L${config.package.outPath}/lib"
"-B${config.package.outPath}/lib"
];
@ -33,7 +38,7 @@ let
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--target=${config.target.triple}"
"--enable-languages=c,c++"
"--disable-lto"
"--disable-bootstrap"
@ -65,6 +70,11 @@ in
type = lib.types.string;
description = "Version of isl.";
};
target.triple = lib.options.create {
type = lib.types.string;
description = "Target of GCC";
};
};
config = {
@ -87,6 +97,7 @@ in
builder = builders.foundation.basic;
target.triple = config.platform.host.triple;
gmp.version = "6.3.0";
mpfr.version = "4.2.1";
mpc.version = "1.3.1";
@ -159,6 +170,9 @@ in
host = {
gcc = packages.foundation.gcc.versions."13.2.0-stage2";
};
target = {
binutils = packages.foundation.binutils.versions."2.41-stage1";
};
};
@ -175,6 +189,8 @@ in
LDFLAGS_FOR_BUILD = "-L${config.deps.build.build.gcc.package}/lib -L${config.deps.build.build.glibc.package}/lib -Wl,-rpath,${config.deps.build.build.gcc.package}/lib -Wl,-rpath,${config.deps.build.build.glibc.package}/lib";
CFLAGS_FOR_TARGET = "-Wl,-dynamic-linker -Wl,${config.deps.host.host.glibc.dynamicLinker} -B${config.deps.host.host.glibc.package}/lib";
LDFLAGS_FOR_TARGET = "-L$(pwd)/${platform.target.triple}/libgcc -L${config.deps.host.host.glibc.package}/lib";
CC = CC_FOR_TARGET;
CXX = CXX_FOR_TARGET;
CFLAGS = CFLAGS_FOR_TARGET;
LDFLAGS = LDFLAGS_FOR_TARGET;
LIBRARY_PATH = "${config.deps.host.host.glibc.package}/lib";

View file

@ -14,7 +14,6 @@ let
platform = {
build = lib.systems.withBuildInfo config.platform.build;
host = lib.systems.withBuildInfo config.platform.host;
target = lib.systems.withBuildInfo config.platform.target;
};
patches = [
@ -33,7 +32,7 @@ let
"--prefix=${builtins.placeholder "out"}"
"--build=${platform.build.triple}"
"--host=${platform.host.triple}"
"--target=${platform.target.triple}"
"--target=${config.target.triple}"
"--enable-languages=c,c++"
"--disable-lto"
"--disable-bootstrap"
@ -64,6 +63,11 @@ in
type = lib.types.string;
description = "Version of isl.";
};
target.triple = lib.options.create {
type = lib.types.string;
description = "Target platform of GCC";
};
};
config = {
@ -77,6 +81,7 @@ in
builder = builders.foundation.basic;
target.triple = config.platform.host;
gmp.version = "6.3.0";
mpfr.version = "4.2.1";
mpc.version = "1.3.1";