from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout import shutil import os import git class LightRecipe(ConanFile): name = "Light Engine" settings = "os", "compiler", "build_type", "arch" generators = "CMakeDeps" options = { "enable_tests": [True, False], "enable_llvm_coverage": [True, False], "enable_static_analysis": [True, False], "use_mold": [True, False], "export_compile_commands": [True, False], } default_options = { "enable_tests": True, "enable_llvm_coverage": False, "enable_static_analysis": False, "use_mold": False, "export_compile_commands": True, } def requirements(self): self.requires("imgui/1.92.0-docking") self.requires("entt/3.15.0") self.requires("glfw/3.4") self.requires("stb/cci.20240531") self.requires("yaml-cpp/0.8.0") self.requires("lz4/1.10.0") def layout(self): cmake_layout(self) def generate(self): tc = CMakeToolchain(self) tc.variables["CMAKE_BUILD_TYPE"] = self.settings.build_type if self.options.use_mold: tc.cache_variables["CMAKE_LINKER_TYPE"] = "MOLD" tc.cache_variables["CMAKE_EXPORT_COMPILE_COMMANDS"] = self.options.export_compile_commands tc.cache_variables["ENABLE_TESTS"] = self.options.enable_tests tc.cache_variables["ENABLE_LLVM_COVERAGE"] = self.options.enable_llvm_coverage tc.cache_variables["ENABLE_STATIC_ANALYSIS"] = self.options.enable_static_analysis repo = git.Repo(search_parent_directories=True) tc.cache_variables["GIT_HASH"] = repo.head.object.hexsha tc.generate() def build(self): cmake = CMake(self) cmake.configure() cmake.build()