mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
66 lines
1.9 KiB
C++
66 lines
1.9 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file LICENSE.rst or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include <iosfwd>
|
|
#include <string>
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
#include <cm/memory>
|
|
|
|
#include "cmBuildSbomBuilder.h"
|
|
#include "cmSbomArguments.h"
|
|
class cmExportSet;
|
|
class cmGeneratorTarget;
|
|
class cmLocalGenerator;
|
|
|
|
/** \class cmBuildSbomGenerator
|
|
* \brief Thin wrapper around cmBuildSbomBuilder for the build-tree SBOM case.
|
|
*
|
|
* Stored on cmMakefile at configure time. At generate time,
|
|
* ComputeBuildFileGenerators() calls Compute(lg) to resolve export set
|
|
* targets and supply the local generator — mirroring
|
|
* cmExportBuildFileGenerator.
|
|
*/
|
|
class cmBuildSbomGenerator
|
|
{
|
|
public:
|
|
cmBuildSbomGenerator(cmSbomArguments args,
|
|
std::vector<cmExportSet*> exportSets,
|
|
std::string outputFile)
|
|
: OutputFile(std::move(outputFile))
|
|
, Builder(cm::make_unique<cmBuildSbomBuilder>(std::move(args),
|
|
std::move(exportSets)))
|
|
{
|
|
}
|
|
|
|
void Compute(cmLocalGenerator* lg);
|
|
|
|
std::string const& GetOutputFile() const { return this->OutputFile; }
|
|
|
|
/** True if this SBOM directly describes `target`. Used by peer SBOMs to
|
|
* attribute cross-references when install(export) provenance is absent. */
|
|
bool CoversTarget(cmGeneratorTarget const* target) const
|
|
{
|
|
return this->Builder->CoversTarget(target);
|
|
}
|
|
|
|
bool GenerateForBuild(std::ostream& os, std::string const& config)
|
|
{
|
|
return this->Builder->Generate(os, config);
|
|
}
|
|
|
|
std::string const& GetPackageName() const
|
|
{
|
|
return this->Builder->GetPackageName();
|
|
}
|
|
|
|
/** Open the output file and write the SBOM document to it. */
|
|
bool GenerateForBuild(std::string const& config);
|
|
|
|
private:
|
|
std::string OutputFile;
|
|
std::unique_ptr<cmBuildSbomBuilder> Builder;
|
|
};
|