Add the stage setting to zlib and zstd

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

View File

@ -14,29 +14,65 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
from pathlib import Path
from conan.tools.cmake import CMakeToolchain, CMakeDeps
from conan.tools.cmake import CMakeToolchain, CMakeDeps, CMake
from conf.base.zlib import ZlibBase
from conf.utils import get_version, with_musl_toolchain
from conf.utils import get_version, with_musl_toolchain, copy_dependency_tree
class Zlib(ZlibBase):
name = "zlib"
options = {
"stage": [1, 2],
}
default_options = {"stage": 1}
def build_requirements(self):
super().build_requirements()
self.tool_requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
if self.options.stage == 1:
self.requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
else:
self.requires(
f"clang/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
self.requires(f"musl/{get_version('musl')}@{self.user}/{self.channel}")
def generate(self):
tc = CMakeToolchain(self)
tc.variables["BUILD_SHARED_LIBS"] = False
with_musl_toolchain(self, tc, "TARGET")
self.buildenv_info.prepend_path("PATH", f"{self.build_folder}/sysroot")
with_musl_toolchain(self, tc, sysroot=f"{self.build_folder}/sysroot")
tc.generate()
deps = CMakeDeps(self)
deps.generate()
def create_sysroot(self):
sysroot = Path(self.build_folder) / "sysroot"
sysroot.mkdir()
clang = "clang-bootstrap" if self.options.stage == 1 else "clang"
copy_dependency_tree(self, [clang, "musl"], sysroot)
def build(self):
self.create_sysroot()
sysroot = f"{self.build_folder}/sysroot"
cmake = CMake(self)
cmake.configure(
{
"BUILD_SHARED_LIBS": False,
"CMAKE_POSITION_INDEPENDENT_CODE": "ON",
"CMAKE_SYSROOT": sysroot,
},
build_script_folder=f"zlib-{self.version}",
)
self.run("ninja zlibstatic")

View File

@ -15,24 +15,37 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
from pathlib import Path
from conan import ConanFile
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps
from conan.tools.files import get, copy
from conf.base.zstd import ZstdBase
from conf.utils import get_version, with_musl_toolchain
from conf.utils import get_version, with_musl_toolchain, copy_dependency_tree
class Zstd(ZstdBase):
name = "zstd"
options = {
"stage": [1, 2],
}
default_options = {"stage": 1}
def build_requirements(self):
super().build_requirements()
self.tool_requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
if self.options.stage == 1:
self.requires(
f"clang-bootstrap/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
else:
self.requires(
f"clang/{get_version('llvm')}@{self.user}/{self.channel}",
visible=False,
)
self.requires(f"musl/{get_version('musl')}@{self.user}/{self.channel}")
def generate(self):
@ -42,3 +55,31 @@ class Zstd(ZstdBase):
tc.generate()
deps = CMakeDeps(self)
deps.generate()
def create_sysroot(self):
sysroot = Path(self.build_folder) / "sysroot"
sysroot.mkdir()
clang = "clang-bootstrap" if self.options.stage == 1 else "clang"
copy_dependency_tree(self, [clang, "musl"], sysroot)
def build(self):
self.create_sysroot()
sysroot = f"{self.build_folder}/sysroot"
cmake = CMake(self)
cmake.configure(
{
"CMAKE_C_COMPILER": self.settings.compiler,
"CMAKE_CXX_COMPILER": self.settings.compiler,
"BUILD_SHARED_LIBS": False,
"ZSTD_BUILD_STATIC": True,
"ZSTD_BUILD_SHARED": False,
"CMAKE_POSITION_INDEPENDENT_CODE": "ON",
"CMAKE_SYSROOT": sysroot,
},
build_script_folder=f"zstd-{self.version}/build/cmake/",
)
cmake.build()
cmake.install()