aboutsummaryrefslogtreecommitdiff
path: root/conanfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'conanfile.py')
-rw-r--r--conanfile.py54
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 }
+