diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-23 01:03:16 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-23 01:56:52 +0900 |
| commit | 5c127a70350c19c99bca388c94a4518d885c3ac3 (patch) | |
| tree | 60a6fe0b29894fde62e391f0825d88916c916e08 /internal/rosa/llvm.go | |
| parent | 8a26521f5b10258f817b69ad71405ff2cba267a8 (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>
Diffstat (limited to 'internal/rosa/llvm.go')
| -rw-r--r-- | internal/rosa/llvm.go | 44 |
1 files changed, 40 insertions, 4 deletions
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); +`}, }, }) |
