/** * @file rex/codegen/project_recompiler.h * @brief Project-level recompiler driving manifest-based multi-binary codegen * * @copyright Copyright (c) 2026 Tom Clay * All rights reserved. * * @license BSD 3-Clause License * See LICENSE file in the project root for full license text. */ #pragma once #include #include #include #include #include namespace rex::codegen { struct ProjectRecompilerOptions { std::vector targets; // empty = all bool force = false; bool enableExceptionHandlers = false; ProgressReporter* reporter = nullptr; }; class ProjectRecompiler { public: explicit ProjectRecompiler(ManifestConfig manifest); Result Run(const ProjectRecompilerOptions& opts); /** * Aggregated basenames of files removed across all modules during the most * recent Run() call. Empty until Run() completes successfully. */ const std::vector& deletedFiles() const { return deletedFiles_; } /** * Aggregated basenames of files written across all modules during the most * recent Run() call. Empty until Run() completes successfully. */ const std::vector& writtenFiles() const { return writtenFiles_; } private: ManifestConfig manifest_; std::vector deletedFiles_; std::vector writtenFiles_; }; } // namespace rex::codegen