diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/Conf.hpp | 29 | ||||
-rw-r--r-- | include/FileUtil.hpp | 1 | ||||
-rw-r--r-- | include/Linker.hpp | 5 |
3 files changed, 30 insertions, 5 deletions
diff --git a/include/Conf.hpp b/include/Conf.hpp index a93b44f..13fadcf 100644 --- a/include/Conf.hpp +++ b/include/Conf.hpp @@ -16,6 +16,13 @@ namespace sibs { + enum CPU + { + CPU_INVALID, + CPU_BASELINE, + CPU_NATIVE + }; + class ConfigValue { public: @@ -116,14 +123,18 @@ namespace sibs { C89, // aka ansi C99, - C11 + C11, + C20 }; enum class CPPVersion { + CPP03, + CPP98, CPP11, CPP14, - CPP17 + CPP17, + CPP20 }; enum class Language @@ -227,6 +238,7 @@ namespace sibs sanitize(Sanitize::NONE), showWarnings(false), errorOnWarning(false), + enableExceptions(true), zigTestAllFiles(false), packaging(false), bundling(false), @@ -420,18 +432,27 @@ namespace sibs std::vector<FileString> zigTestFiles; bool showWarnings; bool errorOnWarning; + bool enableExceptions; bool zigTestAllFiles; bool packaging; bool bundling; std::string versionStr; PackageVersion version; Platform platform; + CPU cpu = CPU_NATIVE; bool use_lto; bool include_debug_symbols_in_release; std::vector<std::string> includeDirs; std::vector<std::string> exposeIncludeDirs; std::vector<std::string> ignoreDirs; std::vector<std::string> libs; + + CVersion cVersion; + CPPVersion cppVersion; + std::string linker; + bool testsBuildOnly = false; + bool skipCompile = false; + std::vector<FileString> testRunArgs; protected: virtual void processObject(StringView name) override; virtual void processField(StringView name, const ConfigValue &value) override; @@ -440,9 +461,9 @@ namespace sibs virtual void finished() override; void failInvalidFieldUnderObject(const StringView &fieldName) const; void validatePackageTypeDefined() const; - private: void parseCLang(const StringView &fieldName, const ConfigValue &fieldValue); void parseCppLang(const StringView &fieldName, const ConfigValue &fieldValue); + private: void parsePlatformConfig(const StringView &fieldName, const ConfigValue &fieldValue); std::string parsePlatformConfigStatic(const StringView &fieldName, const ConfigValue &fieldValue); void parsePlatformConfigStaticDebug(const StringView &fieldName, const ConfigValue &fieldValue); @@ -468,8 +489,6 @@ namespace sibs std::vector<FileString> cmakeArgsGlobal; std::vector<FileString> cmakeArgsStatic; std::vector<FileString> cmakeArgsDynamic; - CVersion cVersion; - CPPVersion cppVersion; bool useCmake; bool buildTests; bool finishedProcessing; diff --git a/include/FileUtil.hpp b/include/FileUtil.hpp index 5bd4d33..2b4f3c5 100644 --- a/include/FileUtil.hpp +++ b/include/FileUtil.hpp @@ -81,6 +81,7 @@ namespace sibs }; FileType getFileType(const _tinydir_char_t *path); + bool fileExists(const _tinydir_char_t *path); void walkDir(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc); void walkDirFiles(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc); bool walkDirFilesRecursive(const _tinydir_char_t *directory, FileWalkCallbackFunc callbackFunc); diff --git a/include/Linker.hpp b/include/Linker.hpp index acf31e4..59e39b3 100644 --- a/include/Linker.hpp +++ b/include/Linker.hpp @@ -2,12 +2,17 @@ #define SIBS_LINKER_HPP #include <functional> +#include <string> namespace sibs { using LinkerFlagCallbackFunc = std::function<void(const std::string&)>; using GlobalIncludeDirCallbackFunc = std::function<void(const std::string&)>; using CflagsCallbackFunc = std::function<void(const std::string&)>; + + bool is_gold_linker_installed(); + bool is_lld_linker_installed(); + bool is_mold_linker_installed(); } #endif //SIBS_LINKER_HPP |