aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-23 01:03:16 +0900
committerOphestra <cat@gensokyo.uk>2026-01-23 01:56:52 +0900
commit5c127a70350c19c99bca388c94a4518d885c3ac3 (patch)
tree60a6fe0b29894fde62e391f0825d88916c916e08
parent8a26521f5b10258f817b69ad71405ff2cba267a8 (diff)
internal/rosa: patch header search paths
This removes the need for reference CFLAGS in the standard toolchain. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--internal/rosa/go.go3
-rw-r--r--internal/rosa/llvm.go44
-rw-r--r--internal/rosa/perl.go2
-rw-r--r--internal/rosa/python.go3
-rw-r--r--internal/rosa/rosa.go22
-rw-r--r--internal/rosa/zlib.go2
6 files changed, 51 insertions, 25 deletions
diff --git a/internal/rosa/go.go b/internal/rosa/go.go
index 456cc9c1..d1dca758 100644
--- a/internal/rosa/go.go
+++ b/internal/rosa/go.go
@@ -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",
diff --git a/internal/rosa/llvm.go b/internal/rosa/llvm.go
index d10fb565..70752a52 100644
--- a/internal/rosa/llvm.go
+++ b/internal/rosa/llvm.go
@@ -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
`,
@@ -354,6 +363,33 @@ index 50fdce630255..4b4465a75617 100644
#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);
+`},
},
})
diff --git a/internal/rosa/perl.go b/internal/rosa/perl.go
index 169a64d1..be36bdf7 100644
--- a/internal/rosa/perl.go
+++ b/internal/rosa/perl.go
@@ -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' \
diff --git a/internal/rosa/python.go b/internal/rosa/python.go
index 8fbc74fd..7c059272 100644
--- a/internal/rosa/python.go
+++ b/internal/rosa/python.go
@@ -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
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index c6799407..795394c2 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -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",
diff --git a/internal/rosa/zlib.go b/internal/rosa/zlib.go
index 203514a4..4655f19a 100644
--- a/internal/rosa/zlib.go
+++ b/internal/rosa/zlib.go
@@ -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