Add the stage setting to musl

This commit is contained in:
Sameer Rahmani 2023-04-23 10:34:12 +01:00
parent 7362583790
commit e8bedba2cb
Signed by: lxsameer
GPG Key ID: B0A4AF28AB9FD90B
1 changed files with 33 additions and 9 deletions

View File

@ -27,17 +27,27 @@ from conf.utils import copy_tree, get_version
class Musl(ConanFile):
name = "musl"
settings = "os", "arch", "build_type"
settings = "os", "arch", "build_type", "compiler"
version = get_version("musl")
options = {
"stage": [1, 2],
}
default_options = {"stage": 1}
def build_requirements(self):
self.requires(
f"kernel-headers/{get_version('kernel')}@{self.user}/{self.channel}"
)
self.tool_requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}"
)
if self.options.stage == 1:
self.tool_requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}"
)
else:
self.tool_requires(
f"clang/{get_version('llvm')}@{self.user}/{self.channel}"
)
@property
def target(self):
@ -52,7 +62,10 @@ class Musl(ConanFile):
def generate(self):
tc = AutotoolsToolchain(self, prefix=f"{self.package_folder}/")
env = tc.environment()
buildenv = self.dependencies.build["clang-bootstrap"].buildenv_info.vars(self)
clang = "clang-bootstrap" if self.options.stage == 1 else "clang"
clang_root = Path(self.dependencies.build[clang].package_folder)
tc.update_configure_args(
{
@ -63,11 +76,22 @@ class Musl(ConanFile):
}
)
libcc_dir = Path(buildenv["LIBCC_GNU"])
if "musl" in self.target:
libcc_dir = Path(buildenv["LIBCC_MUSL"])
libcc = (
clang_root
/ "lib"
/ "clang"
/ get_version("llvm_major")
/ "lib"
/ self.target
/ "libclang_rt.builtins.a"
)
env.define("LIBCC", str(libcc_dir / "libclang_rt.builtins.a"))
env.define(
"LIBCC",
str(libcc),
)
env.define("CC", "clang")
env.prepend_path("PATH", str(clang_root / "bin"))
# We will strip the debug data later
tc.extra_cflags = ["-g", f"--target={self.target}"]
tc.generate(env)