summaryrefslogtreecommitdiff
path: root/src/ctor.h
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2026-02-03 21:54:09 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2026-02-03 21:54:09 +0100
commitbe2184d36d4492e43fbed1f6581fa26636d803ac (patch)
tree4eea32bd931a5be61fa7b370def8817d6a4bcc35 /src/ctor.h
parentf66ab53b9380a5367e24727df620d6620ab031f7 (diff)
Remove ctor::flags construct and apply tool specific flags (ie. ctor::cxx_flags, ...) directly in build config. Loosen generator requirements, to allow for lambda's directly.new_syntax
Diffstat (limited to 'src/ctor.h')
-rw-r--r--src/ctor.h38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/ctor.h b/src/ctor.h
index bac1e3a..96cc24b 100644
--- a/src/ctor.h
+++ b/src/ctor.h
@@ -364,10 +364,14 @@ struct build_configuration
std::is_same_v<Args, ctor::target> ||
std::is_same_v<Args, ctor::sources> ||
std::is_same_v<Args, ctor::depends> ||
- std::is_same_v<Args, ctor::flags> ||
std::is_same_v<Args, ctor::externals> ||
- std::is_same_v<Args, ctor::GeneratorOneToOne> ||
- std::is_same_v<Args, ctor::GeneratorManyToOne>
+ std::is_convertible_v<Args, ctor::GeneratorOneToOne> ||
+ std::is_convertible_v<Args, ctor::GeneratorManyToOne> ||
+ std::is_same_v<Args, ctor::c_flags> ||
+ std::is_same_v<Args, ctor::cxx_flags> ||
+ std::is_same_v<Args, ctor::ld_flags> ||
+ std::is_same_v<Args, ctor::ar_flags> ||
+ std::is_same_v<Args, ctor::asm_flags>
) && ...)
constexpr build_configuration(Args && ... arg)
{
@@ -397,22 +401,38 @@ struct build_configuration
{
depends = arg.depends;
}
- else if constexpr(std::is_same_v<Args, ctor::flags>)
- {
- flags = arg;
- }
else if constexpr(std::is_same_v<Args, ctor::externals>)
{
externals = arg.externals;
}
- else if constexpr(std::is_same_v<Args, ctor::GeneratorOneToOne>)
+ else if constexpr(std::is_convertible_v<Args, ctor::GeneratorOneToOne>)
{
function_one_to_one = arg;
}
- else if constexpr(std::is_same_v<Args, ctor::GeneratorManyToOne>)
+ else if constexpr(std::is_convertible_v<Args, ctor::GeneratorManyToOne>)
{
function_many_to_one = arg;
}
+ else if constexpr(std::is_same_v<Args, ctor::c_flags>)
+ {
+ flags.cflags = arg;
+ }
+ else if constexpr(std::is_same_v<Args, ctor::cxx_flags>)
+ {
+ flags.cxxflags = arg;
+ }
+ else if constexpr(std::is_same_v<Args, ctor::ld_flags>)
+ {
+ flags.ldflags = arg;
+ }
+ else if constexpr(std::is_same_v<Args, ctor::ar_flags>)
+ {
+ flags.arflags = arg;
+ }
+ else if constexpr(std::is_same_v<Args, ctor::asm_flags>)
+ {
+ flags.asmflags = arg;
+ }
}(), ...);
}