summaryrefslogtreecommitdiff
path: root/src/ctor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ctor.h')
-rw-r--r--src/ctor.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/ctor.h b/src/ctor.h
index f145eef..dddc5ef 100644
--- a/src/ctor.h
+++ b/src/ctor.h
@@ -282,10 +282,17 @@ struct settings
};
struct build_configuration;
-using GeneratorCb = std::function<int(const std::string& input,
- const std::string& output,
- const build_configuration& config,
- const ctor::settings& settings)>;
+using GeneratorOneToOne =
+ std::function<int(const std::string& input,
+ const std::string& output,
+ const build_configuration& config,
+ const ctor::settings& settings)>;
+
+using GeneratorManyToOne =
+ std::function<int(const std::vector<std::string>& input,
+ const std::string& output,
+ const ctor::build_configuration& config,
+ const ctor::settings& settings)>;
struct build_configuration
{
@@ -297,7 +304,9 @@ struct build_configuration
std::vector<std::string> depends; // internal target dependencies
ctor::flags flags;
std::vector<std::string> externals; // externals used by this configuration
- GeneratorCb function;
+ std::variant<std::monostate,
+ GeneratorOneToOne,
+ GeneratorManyToOne> function;
};
using build_configurations = std::vector<build_configuration>;