diff options
Diffstat (limited to 'conanfile.py')
| -rw-r--r-- | conanfile.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..4712156 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,54 @@ +from conan import ConanFile +from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout +from conan.tools.env import VirtualBuildEnv + +class KernelConan(ConanFile): + name = "kernel" + description = "The kernel of TeachOS" + version = "0.0.1" + package_type = "application" + homepage = "https://gitlab.ost.ch/teachos/kernel" + + settings = [ + "arch", + "build_type", + "compiler", + ] + + tool_requires = [ + "cmake/[~3.27]", + "gcc/13.2.0@teachos/stable", + ] + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def generate(self): + build_environment = VirtualBuildEnv(self) + build_environment.generate() + + dependencies = CMakeDeps(self) + dependencies.generate() + + toolchain = CMakeToolchain(self) + toolchain.cache_variables["CMAKE_TRY_COMPILE_TARGET_TYPE"] = "STATIC_LIBRARY" + toolchain.variables["TEACHOS_DESCRIPTION"] = self.description + toolchain.variables["TEACHOS_HOMEPAGE_URL"] = self.homepage + toolchain.variables["TEACHOS_VERSION"] = self.version + toolchain.blocks["teachos_platform"] = PlatformIncludeBlock + toolchain.blocks["teachos_platform"].values["platform"] = self.settings.arch + toolchain.blocks.remove("cmake_flags_init") + toolchain.blocks.remove("arch_flags") + toolchain.generate() + + def layout(self): + cmake_layout(self, src_folder="source") + +class PlatformIncludeBlock: + template = "include(\"../cmake/Platforms/{{platform}}.cmake\")" + +def context(self): + return { "platform": None } + |
