internal/rosa: patch header search paths
All checks were successful
Test / Create distribution (push) Successful in 49s
Test / Sandbox (push) Successful in 2m35s
Test / ShareFS (push) Successful in 4m0s
Test / Hpkg (push) Successful in 4m41s
Test / Sandbox (race detector) (push) Successful in 5m6s
Test / Hakurei (race detector) (push) Successful in 6m11s
Test / Hakurei (push) Successful in 2m39s
Test / Flake checks (push) Successful in 3m50s

This removes the need for reference CFLAGS in the standard toolchain.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-01-23 01:03:16 +09:00
parent 8a26521f5b
commit 5c127a7035
6 changed files with 51 additions and 25 deletions

View File

@@ -31,7 +31,7 @@ rm \
syscall/creds_test.go \ syscall/creds_test.go \
net/multicast_test.go net/multicast_test.go
CC="${CC} ${LDFLAGS}" ./all.bash CC="cc -Qunused-arguments ${LDFLAGS}" ./all.bash
`, pkg.Path(AbsUsrSrc.Append("go1.4-bootstrap"), false, pkg.NewHTTPGetTar( `, pkg.Path(AbsUsrSrc.Append("go1.4-bootstrap"), false, pkg.NewHTTPGetTar(
nil, "https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz", nil, "https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz",
mustDecode(checksum), mustDecode(checksum),
@@ -48,6 +48,7 @@ func (t Toolchain) newGo(
return t.New("go"+version, []pkg.Artifact{ return t.New("go"+version, []pkg.Artifact{
boot, boot,
}, nil, slices.Concat([]string{ }, nil, slices.Concat([]string{
"CC=cc",
"GOCACHE=/tmp/gocache", "GOCACHE=/tmp/gocache",
"GOROOT_BOOTSTRAP=/system/go", "GOROOT_BOOTSTRAP=/system/go",
"CGO_" + ldflags(false) + " -O2 -g", "CGO_" + ldflags(false) + " -O2 -g",

View File

@@ -310,13 +310,19 @@ ln -s \
}, },
}) })
var clangExtraEnv []string
if t == toolchainStage3 {
clangExtraEnv = []string{
"CFLAGS=" + earlyCFLAGS,
"CXXFLAGS=" + earlyCXXFLAGS(),
}
}
clang = t.newLLVM("clang", &llvmAttr{ clang = t.newLLVM("clang", &llvmAttr{
flags: llvmProjectClang | llvmProjectLld, flags: llvmProjectClang | llvmProjectLld,
env: []string{ env: slices.Concat(clangExtraEnv, []string{
"CFLAGS=" + cflags,
"CXXFLAGS=" + cxxflags(),
ldflags(false), ldflags(false),
}, }),
cmake: slices.Concat([][2]string{ cmake: slices.Concat([][2]string{
{"LLVM_TARGETS_TO_BUILD", target}, {"LLVM_TARGETS_TO_BUILD", target},
{"CMAKE_CROSSCOMPILING", "OFF"}, {"CMAKE_CROSSCOMPILING", "OFF"},
@@ -329,6 +335,9 @@ ln -s \
t.NewGit(), t.NewGit(),
}, },
script: ` script: `
ln -s clang /work/system/bin/cc
ln -s clang++ /work/system/bin/c++
ninja check-all ninja check-all
`, `,
@@ -353,6 +362,33 @@ index 50fdce630255..4b4465a75617 100644
/// Verify timestamps that gets embedded in the module /// Verify timestamps that gets embedded in the module
#include <c-header.h> #include <c-header.h>
`},
{"path-system-include", `diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index cdbf21fb9026..dd052858700d 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -773,6 +773,12 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
addExternCSystemInclude(
DriverArgs, CC1Args,
concat(SysRoot, "/usr/include", MultiarchIncludeDir));
+ if (!MultiarchIncludeDir.empty() &&
+ D.getVFS().exists(concat(SysRoot, "/system/include", MultiarchIncludeDir)))
+ addExternCSystemInclude(
+ DriverArgs, CC1Args,
+ concat(SysRoot, "/system/include", MultiarchIncludeDir));
+
if (getTriple().getOS() == llvm::Triple::RTEMS)
return;
@@ -783,6 +789,7 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/include"));
addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/usr/include"));
+ addExternCSystemInclude(DriverArgs, CC1Args, concat(SysRoot, "/system/include"));
if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
`}, `},
}, },
}) })

View File

@@ -16,7 +16,7 @@ chmod -R +w /usr/src/perl && cd /usr/src/perl
./Configure \ ./Configure \
-des \ -des \
-Dprefix=/system \ -Dprefix=/system \
-Dcc="${CC}" \ -Dcc="clang" \
-Dcflags='--std=gnu99' \ -Dcflags='--std=gnu99' \
-Dldflags="${LDFLAGS}" \ -Dldflags="${LDFLAGS}" \
-Doptimize='-O2 -fno-strict-aliasing' \ -Doptimize='-O2 -fno-strict-aliasing' \

View File

@@ -46,7 +46,8 @@ chmod -R +w /usr/src/python/
export HOME="$(mktemp -d)" export HOME="$(mktemp -d)"
cd "$(mktemp -d)" cd "$(mktemp -d)"
/usr/src/python/configure \ /usr/src/python/configure \
--prefix=/system --prefix=/system \
--build="${ROSA_TRIPLE}"
make "-j$(nproc)" make "-j$(nproc)"
make test make test
make DESTDIR=/work install make DESTDIR=/work install

View File

@@ -63,10 +63,6 @@ func triplet() string {
const ( const (
// EnvTriplet holds the return value of triplet. // EnvTriplet holds the return value of triplet.
EnvTriplet = "ROSA_TRIPLE" EnvTriplet = "ROSA_TRIPLE"
// EnvRefCFLAGS holds toolchain-specific reference CFLAGS.
EnvRefCFLAGS = "ROSA_CFLAGS"
// EnvRefCXXFLAGS holds toolchain-specific reference CXXFLAGS.
EnvRefCXXFLAGS = "ROSA_CXXFLAGS"
) )
// ldflags returns LDFLAGS corresponding to triplet. // ldflags returns LDFLAGS corresponding to triplet.
@@ -85,13 +81,13 @@ func ldflags(static bool) string {
return s return s
} }
// cflags is reference CFLAGS for the Rosa OS toolchain. // earlyCFLAGS is reference CFLAGS for the stage3 toolchain.
const cflags = "-Qunused-arguments " + const earlyCFLAGS = "-Qunused-arguments " +
"-isystem/system/include" "-isystem/system/include"
// cxxflags returns reference CXXFLAGS for the Rosa OS toolchain corresponding // earlyCXXFLAGS returns reference CXXFLAGS for the stage3 toolchain
// to [runtime.GOARCH]. // corresponding to [runtime.GOARCH].
func cxxflags() string { func earlyCXXFLAGS() string {
return "--start-no-unused-arguments " + return "--start-no-unused-arguments " +
"-stdlib=libc++ " + "-stdlib=libc++ " +
"--end-no-unused-arguments " + "--end-no-unused-arguments " +
@@ -203,9 +199,6 @@ ln -vs ../usr/bin /work/bin
env = fixupEnviron(env, []string{ env = fixupEnviron(env, []string{
EnvTriplet + "=" + triplet(), EnvTriplet + "=" + triplet(),
lcMessages, lcMessages,
EnvRefCFLAGS + "=" + cflags,
EnvRefCXXFLAGS + "=" + cxxflags(),
ldflags(true), ldflags(true),
}, "/system/bin", }, "/system/bin",
"/usr/bin", "/usr/bin",
@@ -227,11 +220,6 @@ ln -vs ../usr/bin /work/bin
EnvTriplet + "=" + triplet(), EnvTriplet + "=" + triplet(),
lcMessages, lcMessages,
// autotools projects act up with CFLAGS
"CC=clang " + cflags,
EnvRefCFLAGS + "=" + cflags,
"CXX=clang++ " + cxxflags(),
EnvRefCXXFLAGS + "=" + cxxflags(),
ldflags(false), ldflags(false),
"AR=ar", "AR=ar",

View File

@@ -12,7 +12,7 @@ func (t Toolchain) NewZlib() pkg.Artifact {
t.NewMake(), t.NewMake(),
}, nil, nil, ` }, nil, nil, `
cd "$(mktemp -d)" cd "$(mktemp -d)"
CFLAGS="${CFLAGS} -fPIC" /usr/src/zlib/configure \ CC="clang -fPIC" /usr/src/zlib/configure \
--prefix /system --prefix /system
make "-j$(nproc)" test make "-j$(nproc)" test
make DESTDIR=/work install make DESTDIR=/work install