Improving detection of ccache on Mac

Before this commit, ccache where only used on Mac when
`OSXCROSS_ROOT` was defined. Now, it could be used even
when that envirnment variable is not defined.
This commit is contained in:
Pablo Andres Fuente 2024-10-04 10:19:06 -03:00 committed by Pablo Andres Fuente
parent 19e003bc08
commit 7c4c1100e0
2 changed files with 14 additions and 13 deletions

View File

@ -657,12 +657,14 @@ def detect_darwin_sdk_path(platform, env):
def is_apple_clang(env):
import shlex
if env["platform"] not in ["macos", "ios"]:
return False
if not using_clang(env):
return False
try:
version = subprocess.check_output([env.subst(env["CXX"]), "--version"]).strip().decode("utf-8")
version = subprocess.check_output(shlex.split(env.subst(env["CXX"])) + ["--version"]).strip().decode("utf-8")
except (subprocess.CalledProcessError, OSError):
print_warning("Couldn't parse CXX environment variable to infer compiler version.")
return False
@ -677,6 +679,8 @@ def get_compiler_version(env):
- metadata1, metadata2: Extra information
- date: Date of the build
"""
import shlex
ret = {
"major": -1,
"minor": -1,
@ -727,7 +731,7 @@ def get_compiler_version(env):
# Clang used to return hardcoded 4.2.1: # https://reviews.llvm.org/D56803
try:
version = subprocess.check_output(
[env.subst(env["CXX"]), "--version"], shell=(os.name == "nt"), encoding="utf-8"
shlex.split(env.subst(env["CXX"])) + ["--version"], shell=(os.name == "nt"), encoding="utf-8"
).strip()
except (subprocess.CalledProcessError, OSError):
print_warning("Couldn't parse CXX environment variable to infer compiler version.")

View File

@ -108,6 +108,10 @@ def configure(env: "SConsEnvironment"):
env.Append(CCFLAGS=["-fobjc-arc"])
ccache_path = os.environ.get("CCACHE", "")
if ccache_path != "":
ccache_path = ccache_path + " "
if "osxcross" not in env: # regular native build
if env["macports_clang"] != "no":
mpprefix = os.environ.get("MACPORTS_PREFIX", "/opt/local")
@ -118,8 +122,8 @@ def configure(env: "SConsEnvironment"):
env["RANLIB"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-ranlib"
env["AS"] = mpprefix + "/libexec/llvm-" + mpclangver + "/bin/llvm-as"
else:
env["CC"] = "clang"
env["CXX"] = "clang++"
env["CC"] = ccache_path + "clang"
env["CXX"] = ccache_path + "clang++"
detect_darwin_sdk_path("macos", env)
env.Append(CCFLAGS=["-isysroot", "$MACOS_SDK_PATH"])
@ -132,15 +136,8 @@ def configure(env: "SConsEnvironment"):
else:
basecmd = root + "/target/bin/x86_64-apple-" + env["osxcross_sdk"] + "-"
ccache_path = os.environ.get("CCACHE")
if ccache_path is None:
env["CC"] = basecmd + "cc"
env["CXX"] = basecmd + "c++"
else:
# there aren't any ccache wrappers available for macOS cross-compile,
# to enable caching we need to prepend the path to the ccache binary
env["CC"] = ccache_path + " " + basecmd + "cc"
env["CXX"] = ccache_path + " " + basecmd + "c++"
env["CC"] = ccache_path + basecmd + "cc"
env["CXX"] = ccache_path + basecmd + "c++"
env["AR"] = basecmd + "ar"
env["RANLIB"] = basecmd + "ranlib"
env["AS"] = basecmd + "as"