DEKI/ENGINE docs
Deki 0.19.0
Modular C++ 2D engine for embedded displays and desktop
Loading...
Searching...
No Matches
CMakeGenUtils.h File Reference

Classes

struct  DekiEditor::CMakeGen::FrameworkDependency
 One thing a package needs from a build framework, from package.json: "dependencies": { "<framework id>": [ "bare-name", { "name": "...", ... } ] }. More...
struct  DekiEditor::CMakeGen::FeatureEntry
 One entry of a package's "features": a compile definition the package brings, the component types it provides, and whether it may be left out. More...
struct  DekiEditor::CMakeGen::PackageEntry
 Package manifest data, parsed from package.json and package.cmake. More...

Namespaces

namespace  DekiEditor
namespace  DekiEditor::CMakeGen

Enumerations

enum class  DekiEditor::CMakeGen::TransformWidth { DekiEditor::CMakeGen::None = 0 , DekiEditor::CMakeGen::TwoD = 2 , DekiEditor::CMakeGen::ThreeD = 3 }
 The transform width a build compiles into Deki::Object (see deki-engine/include/deki/Object.h and COMPATIBILITY.md). More...

Functions

std::vector< std::string > DekiEditor::CMakeGen::MissingCapabilities (const PackageEntry &pkg, const std::set< std::string > &platformCapabilities)
 What pkg needs that platformCapabilities does not offer.
bool DekiEditor::CMakeGen::PackageSupportsPlatform (const PackageEntry &pkg, const std::set< std::string > &platformCapabilities)
 True when MissingCapabilities is empty.
std::vector< PackageEntry > DekiEditor::CMakeGen::ScanPackageManifests (const std::string &projectPath)
 Reads every package manifest in the project's packages/ directory.
bool DekiEditor::CMakeGen::FeatureInBuild (const FeatureEntry &feature, const std::vector< std::string > &packageDefines)
 Whether a feature is compiled into a build with these defines: always when no feature plan is in force (the editor's own build), else when its define is.
std::vector< std::string > DekiEditor::CMakeGen::RequiredPackagesInBuild (const PackageEntry &pkg, const std::vector< std::string > &packageDefines)
 The packages pkg needs in a build with these defines: the package's own requires plus those of each feature in the build.
std::set< std::string > DekiEditor::CMakeGen::ResolveActivePackages (const std::vector< PackageEntry > &allPackages, const std::vector< std::string > &packageDefines, const std::set< std::string > &platformCapabilities={})
 The packages active for these build defines, transitive dependencies included.
std::vector< std::string > DekiEditor::CMakeGen::ReadProjectTags (const std::string &projectPath)
 deki.json "tags", or an empty list when there is none.
TransformWidth DekiEditor::CMakeGen::ResolveTransformWidth (const std::vector< PackageEntry > &allPackages, const std::set< std::string > &activeIds, const std::vector< std::string > &projectTags, std::string *why=nullptr)
 The widest transform anything active declares.
TransformWidth DekiEditor::CMakeGen::ResolveProjectTransformWidth (const std::vector< PackageEntry > &allPackages, const std::vector< std::string > &projectTags, std::string *why=nullptr)
 The width for a project, which is what a build must compile.
std::vector< std::string > DekiEditor::CMakeGen::TransformDefines (TransformWidth width)
 The compile definitions for a width: none, DEKI_TRANSFORM_2D, or both.
void DekiEditor::CMakeGen::EmitEngineCoreSourceCollection (std::ostream &out, const std::vector< std::string > &extraExclusions={})
 Writes the CMake that collects the engine core sources (GLOB_RECURSE plus the standard exclusions).
std::string DekiEditor::CMakeGen::CMakeIdentifier (const std::string &name)
 A name as CMake spells it after string(MAKE_C_IDENTIFIER): every character outside [A-Za-z0-9] becomes '', and a leading digit gets a '' in front.
std::string DekiEditor::CMakeGen::EscapeCppString (const std::string &s)
 s escaped to sit between double quotes in generated C++: backslashes, quotes and newlines escaped.
std::string DekiEditor::CMakeGen::EscapeCMakeString (const std::string &s)
 s escaped to sit between double quotes in generated CMake: backslashes, quotes, $ and ; escaped so it stays one literal argument.
void DekiEditor::CMakeGen::EmitActivePackageSources (std::ostream &out, const std::vector< PackageEntry > &allPackages, const std::set< std::string > &activePackageIds, const std::vector< std::string > &sourceExcludeRegexes={}, bool excludeGenerated=false)
 Writes one GLOB_RECURSE per active package, leaving out editor/.
void DekiEditor::CMakeGen::EmitGeneratedFileSources (std::ostream &out, const std::string &enginePath, const std::vector< PackageEntry > &allPackages, const std::set< std::string > &activePackageIds)
 Writes the .gen.cpp sources of the active packages only.
void DekiEditor::CMakeGen::EmitProjectSourceCollection (std::ostream &out, const std::string &relPath="${DEKI_PROJECT_PATH}/src", bool excludePluginExports=false)
 Writes the CMake that collects the project's own sources from src/.
void DekiEditor::CMakeGen::EmitPlatformDefines (std::ostream &out, const std::string &targetName, const PlatformConfig &config, const std::vector< std::string > &packageDefines, const std::vector< std::string > &skipDefines={})
 Writes the target_compile_definitions block.
void DekiEditor::CMakeGen::EmitIncludePaths (std::ostream &out, const std::string &targetName, const std::string &projectSrcRelPath="${DEKI_PROJECT_PATH}/src", const std::vector< std::string > &extraPaths={})
 Writes the target_include_directories block.
std::string DekiEditor::CMakeGen::GeneratePackageInitFile (const std::filesystem::path &outputDir, const std::vector< PackageEntry > &allPackages, const std::set< std::string > &activePackageIds, const std::filesystem::path &projectSrcPath="", bool engineDefinesSystemInit=false)
 Generates a package_init.cpp that calls each package's RegisterComponents() and registers project components with ComponentFactory, for embedded builds.
bool DekiEditor::CMakeGen::WriteIfChanged (const std::filesystem::path &filePath, const std::string &content)
 Writes content only if the file differs, so unchanged files cause no rebuild.