From 41f947b80f1c03d5451988593d2d16ec69e9b653 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 20 Jun 2021 13:15:03 +0200 Subject: Print error if max build configurations are exceeded. --- libcppbuild.cc | 17 +++++++++++++---- 1 file 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 getNextTask(const std::list>& allTas return nullptr; } -struct Config +namespace +{ +struct BuildConfigurationEntry { const char* file; std::vector (*cb)(); }; -std::array configFiles; +std::array 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 (*cb)()) +int reg(const char* location, std::vector (*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; -- cgit v1.2.3