diff --git a/internal/rosa/go.go b/internal/rosa/go.go index 456cc9c..d1dca75 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 d10fb56..70752a5 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 `, @@ -353,6 +362,33 @@ index 50fdce630255..4b4465a75617 100644 /// Verify timestamps that gets embedded in the module #include +`}, + + {"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 169a64d..be36bdf 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 8fbc74f..7c05927 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 c679940..795394c 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 203514a..4655f19 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