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 \
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(
nil, "https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz",
mustDecode(checksum),
@@ -48,6 +48,7 @@ func (t Toolchain) newGo(
return t.New("go"+version, []pkg.Artifact{
boot,
}, nil, slices.Concat([]string{
"CC=cc",
"GOCACHE=/tmp/gocache",
"GOROOT_BOOTSTRAP=/system/go",
"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{
flags: llvmProjectClang | llvmProjectLld,
env: []string{
"CFLAGS=" + cflags,
"CXXFLAGS=" + cxxflags(),
env: slices.Concat(clangExtraEnv, []string{
ldflags(false),
},
}),
cmake: slices.Concat([][2]string{
{"LLVM_TARGETS_TO_BUILD", target},
{"CMAKE_CROSSCOMPILING", "OFF"},
@@ -329,6 +335,9 @@ ln -s \
t.NewGit(),
},
script: `
ln -s clang /work/system/bin/cc
ln -s clang++ /work/system/bin/c++
ninja check-all
`,
@@ -353,6 +362,33 @@ index 50fdce630255..4b4465a75617 100644
/// Verify timestamps that gets embedded in the module
#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 \
-des \
-Dprefix=/system \
-Dcc="${CC}" \
-Dcc="clang" \
-Dcflags='--std=gnu99' \
-Dldflags="${LDFLAGS}" \
-Doptimize='-O2 -fno-strict-aliasing' \

View File

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

View File

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

View File

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