aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/Conf.hpp29
-rw-r--r--include/FileUtil.hpp1
-rw-r--r--include/Linker.hpp5
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