/** * Copyright (c) 2025, Jayden Grubb * * SPDX-License-Identifier: BSD-3-Clause */ #include "drivers/linux/system_driver.h" // IWYU pragma: keep #include "drivers/windows/system_driver.h" // IWYU pragma: keep #include #include #include using namespace Nova; static std::unique_ptr s_driver; void System::init() { NOVA_AUTO_TRACE(); NOVA_ASSERT(!s_driver); #ifdef NOVA_WINDOWS s_driver = std::make_unique(); #elif NOVA_LINUX s_driver = LinuxSystemDriver::get_default_driver(); #else throw std::runtime_error("Unsupported platform"); #endif } void System::shutdown() { NOVA_AUTO_TRACE(); s_driver.reset(); } SystemDriver* System::get_driver() { NOVA_ASSERT(s_driver); return s_driver.get(); }