diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-06-20 13:15:03 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-06-20 13:29:08 +0200 |
commit | 41f947b80f1c03d5451988593d2d16ec69e9b653 (patch) | |
tree | d2a320f28a8b306d8ee6d1b679e9493f0370beb5 | |
parent | 69528ba012ac2238f63464fb84e7623f3088603a (diff) |
Print error if max build configurations are exceeded.
-rw-r--r-- | libcppbuild.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libcppbuild.cc b/libcppbuild.cc index 8d5231f..441ba00 100644 --- a/libcppbuild.cc +++ b/libcppbuild.cc @@ -88,20 +88,29 @@ std::shared_ptr<Task> getNextTask(const std::list<std::shared_ptr<Task>>& allTas return nullptr; } -struct Config +namespace +{ +struct BuildConfigurationEntry { const char* file; std::vector<BuildConfiguration> (*cb)(); }; -std::array<Config, 100> configFiles; +std::array<BuildConfigurationEntry, 1024> configFiles; int numConfigFiles{0}; +} // TODO: Use c++20 when ready, somehing like this: //int reg(const std::source_location location = std::source_location::current()) -int reg(const char* location, - std::vector<BuildConfiguration> (*cb)()) +int reg(const char* location, std::vector<BuildConfiguration> (*cb)()) { // NOTE: std::cout cannot be used here + if(numConfigFiles >= configFiles.size()) + { + fprintf(stderr, "Max %d build configurations currently supported.\n", + (int)configFiles.size()); + exit(1); + } + configFiles[numConfigFiles].file = location; configFiles[numConfigFiles].cb = cb; ++numConfigFiles; |