diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2026-02-02 20:10:41 +0100 |
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2026-02-02 20:10:41 +0100 |
| commit | f66ab53b9380a5367e24727df620d6620ab031f7 (patch) | |
| tree | 80735e1493b7c8d17186a008c9cf36337dab936d | |
| parent | 6accb227b75fef7e99257b0078eb95f9aa0823cc (diff) | |
Apply new syntax to flagsnew_syntax
| -rw-r--r-- | ctor.cc | 28 | ||||
| -rw-r--r-- | src/configure.cc | 10 | ||||
| -rw-r--r-- | src/ctor.h | 35 | ||||
| -rw-r--r-- | test/ctor.cc | 304 | ||||
| -rw-r--r-- | test/suite/ctor_files/ctor.cc.bar | 12 | ||||
| -rw-r--r-- | test/suite/ctor_files/ctor.cc.base | 12 | ||||
| -rw-r--r-- | test/suite/ctor_files/ctor.cc.generated | 4 | ||||
| -rw-r--r-- | test/suite/ctor_files/ctor.cc.multi | 12 |
8 files changed, 226 insertions, 191 deletions
@@ -32,20 +32,20 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) "src/util.cc", "src/unittest.cc", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", - "-O3", - "-g", - "-Wall", - "-Wextra", - "-Wshadow", - "-Wconversion", -// "-Wnrvo", - "-Isrc", - "-fexceptions", - }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", + "-O3", + "-g", + "-Wall", + "-Wextra", + "-Wshadow", + "-Wconversion", +// "-Wnrvo", + "-Isrc", + "-fexceptions", + }, + }, } }; } diff --git a/src/configure.cc b/src/configure.cc index a8b50e0..1b8caa6 100644 --- a/src/configure.cc +++ b/src/configure.cc @@ -839,7 +839,7 @@ int regenerateCache(ctor::settings& settings, for(const auto& ext : externalConfigs) { - istr << " { \"" << esc(ext.name) << "\", {\n"; + istr << " { \"" << esc(ext.name) << "\", ctor::flags{\n"; ctor::flags resolved_flags; if(std::holds_alternative<ctor::external_manual>(ext.external)) { @@ -858,7 +858,7 @@ int regenerateCache(ctor::settings& settings, if(!resolved_flags.cflags.empty()) { - istr << " .cflags = {"; + istr << " ctor::c_flags{"; for(const auto& flag : resolved_flags.cflags) { istr << flag << ","; @@ -868,7 +868,7 @@ int regenerateCache(ctor::settings& settings, if(!resolved_flags.cxxflags.empty()) { - istr << " .cxxflags = {"; + istr << " ctor::cxx_flags{"; for(const auto& flag : resolved_flags.cxxflags) { istr << flag << ","; @@ -878,7 +878,7 @@ int regenerateCache(ctor::settings& settings, if(!resolved_flags.ldflags.empty()) { - istr << " .ldflags = {"; + istr << " ctor::ld_flags{"; for(const auto& flag : resolved_flags.ldflags) { istr << flag << ","; @@ -888,7 +888,7 @@ int regenerateCache(ctor::settings& settings, if(!resolved_flags.asmflags.empty()) { - istr << " .asmflags = {"; + istr << " ctor::asm_flags{"; for(const auto& flag : resolved_flags.asmflags) { istr << flag << ","; @@ -269,6 +269,41 @@ using asm_flags = std::vector<ctor::asm_flag>; struct flags { + template <class ... Args> + requires (( + 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 flags(Args && ... arg) + { + ([&] + { + if constexpr(std::is_same_v<Args, ctor::c_flags>) + { + cflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::cxx_flags>) + { + cxxflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::ld_flags>) + { + ldflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::ar_flags>) + { + arflags = arg; + } + else if constexpr(std::is_same_v<Args, ctor::asm_flags>) + { + asmflags = arg; + } + }(), ...); + } + ctor::c_flags cflags; // flags for c compiler ctor::cxx_flags cxxflags; // flags for c++ compiler ctor::ld_flags ldflags; // flags for linker diff --git a/test/ctor.cc b/test/ctor.cc index 250acec..440ddfe 100644 --- a/test/ctor.cc +++ b/test/ctor.cc @@ -14,236 +14,236 @@ ctor::build_configurations ctorTestConfigs(const ctor::settings& settings) ctor::output_system::build, ctor::target("argparser_test"), ctor::sources{ - "argparser_test.cc", - "testmain.cc", + "argparser_test.cc", + "testmain.cc", + }, + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"argparser\"", + "-fexceptions", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"argparser\"", - "-fexceptions", - }, - }), + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("generated_sources_test"), ctor::sources{ - "generated_sources_test.cc", - "testmain.cc", - }, + "generated_sources_test.cc", + "testmain.cc", + }, ctor::depends({"libctor_nomain.a"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"generated_sources\"", - "-fexceptions", - }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"generated_sources\"", + "-fexceptions", + }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("argsplit_test"), ctor::sources{ - "argsplit_test.cc", - "testmain.cc", - "../src/util.cc", + "argsplit_test.cc", + "testmain.cc", + "../src/util.cc", + }, + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"argsplit\"", + "-fexceptions", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"argsplit\"", - "-fexceptions", - }, - }), + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("pointerlist_test"), ctor::sources{ - "pointerlist_test.cc", - "testmain.cc", - "../src/pointerlist.cc", + "pointerlist_test.cc", + "testmain.cc", + "../src/pointerlist.cc", + }, + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"pointerlist\"", + "-fexceptions", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"pointerlist\"", - "-fexceptions", - }, - }), + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("deps_test"), ctor::sources{ - "deps_test.cc", - "testmain.cc", - "../src/deps.cc", - "../src/util.cc", - }, + "deps_test.cc", + "testmain.cc", + "../src/deps.cc", + "../src/util.cc", + }, ctor::depends({"testprog"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"deps\"", - "-fexceptions", - }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"deps\"", + "-fexceptions", + }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("testprog"), ctor::sources{ - "testprog.cc", + "testprog.cc", + }, + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-fexceptions", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-fexceptions", - }, - }), + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("execute_test"), ctor::sources{ - "execute_test.cc", - "testmain.cc", - "../src/execute.cc", - "../src/pointerlist.cc", - "../src/util.cc", - }, + "execute_test.cc", + "testmain.cc", + "../src/execute.cc", + "../src/pointerlist.cc", + "../src/util.cc", + }, ctor::depends({"testprog"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"execute\"", - "-fexceptions", - }, - .ldflags = { "-pthread" }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"execute\"", + "-fexceptions", + }, + ctor::ld_flags{ "-pthread" }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("tasks_test"), ctor::sources{ - "tasks_test.cc", - "testmain.cc", - }, + "tasks_test.cc", + "testmain.cc", + }, ctor::depends({"libctor_nomain.a"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"tasks\"", - "-fexceptions", - }, - .ldflags = { "-pthread" }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"tasks\"", + "-fexceptions", + }, + ctor::ld_flags{ "-pthread" }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("cycle_test"), ctor::sources{ - "cycle_test.cc", - "testmain.cc", - }, + "cycle_test.cc", + "testmain.cc", + }, ctor::depends({"libctor_nomain.a"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"cycle\"", - "-fexceptions", - }, - .ldflags = { "-pthread" }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"cycle\"", + "-fexceptions", + }, + ctor::ld_flags{ "-pthread" }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("source_type_test"), ctor::sources{ - "source_type_test.cc", - "testmain.cc", - }, + "source_type_test.cc", + "testmain.cc", + }, ctor::depends({"libctor_nomain.a"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"source_type\"", - "-fexceptions", - }, - .ldflags = { "-pthread" }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"source_type\"", + "-fexceptions", + }, + ctor::ld_flags{ "-pthread" }, + }, }, { ctor::target_type::unit_test, ctor::output_system::build, ctor::target("tools_test"), ctor::sources{ - "tools_test.cc", - "testmain.cc", - "../src/util.cc", - "../src/tools.cc", - }, + "tools_test.cc", + "testmain.cc", + "../src/util.cc", + "../src/tools.cc", + }, ctor::depends({"libctor_nomain.a"}), - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", "-Iuunit", - "-DOUTPUT=\"tools\"", - "-fexceptions", - }, - }), + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", "-Iuunit", + "-DOUTPUT=\"tools\"", + "-fexceptions", + }, + }, }, { ctor::target_type::unit_test_library, ctor::output_system::build, ctor::target("libctor_nomain.a"), ctor::sources{ - "../src/build.cc", - "../src/configure.cc", - "../src/deps.cc", - "../src/execute.cc", - "../src/pointerlist.cc", - "../src/rebuild.cc", - "../src/tasks.cc", - "../src/task.cc", - "../src/task_ar.cc", - "../src/task_cc.cc", - "../src/task_fn.cc", - "../src/task_ld.cc", - "../src/task_so.cc", - "../src/tools.cc", - "../src/util.cc", - "../src/externals_manual.cc", - "../configuration.cc", + "../src/build.cc", + "../src/configure.cc", + "../src/deps.cc", + "../src/execute.cc", + "../src/pointerlist.cc", + "../src/rebuild.cc", + "../src/tasks.cc", + "../src/task.cc", + "../src/task_ar.cc", + "../src/task_cc.cc", + "../src/task_fn.cc", + "../src/task_ld.cc", + "../src/task_so.cc", + "../src/tools.cc", + "../src/util.cc", + "../src/externals_manual.cc", + "../configuration.cc", + }, + ctor::flags{ + ctor::cxx_flags{ + "-std=c++20", "-O3", "-Wall", + "-I../src", + "-fexceptions", }, - ctor::flags({ - .cxxflags = { - "-std=c++20", "-O3", "-Wall", - "-I../src", - "-fexceptions", - }, - .ldflags = { "-pthread" }, - }), + ctor::ld_flags{ "-pthread" }, + }, }, }; } diff --git a/test/suite/ctor_files/ctor.cc.bar b/test/suite/ctor_files/ctor.cc.bar index 9a45878..2342c3a 100644 --- a/test/suite/ctor_files/ctor.cc.bar +++ b/test/suite/ctor_files/ctor.cc.bar @@ -17,7 +17,7 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) "hello.cc", }, ctor::flags{ - .cxxflags = { + ctor::cxx_flags{ "-std=c++20", "-O3", "-g", @@ -38,11 +38,11 @@ ctor::external_configurations ctorExtConfigs(const ctor::settings& settings) { .name = "bar", .external = ctor::external_manual{ - .flags = { - .cflags = { "-D_B_" }, - .cxxflags = { "-D_A_", "-DBAR"}, - .ldflags = { "-D_C_" }, - .asmflags = { "-D_D_" }, + .flags = ctor::flags{ + ctor::c_flags{ "-D_B_" }, + ctor::cxx_flags{ "-D_A_", "-DBAR"}, + ctor::ld_flags{ "-D_C_" }, + ctor::asm_flags{ "-D_D_" }, }, }, // Creates --with-foo-prefix arg to configure which will be used for diff --git a/test/suite/ctor_files/ctor.cc.base b/test/suite/ctor_files/ctor.cc.base index f740659..3734415 100644 --- a/test/suite/ctor_files/ctor.cc.base +++ b/test/suite/ctor_files/ctor.cc.base @@ -17,7 +17,7 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) "hello.cc", }, ctor::flags{ - .cxxflags = { + ctor::cxx_flags{ "-std=c++20", "-O3", "-g", @@ -39,11 +39,11 @@ ctor::external_configurations ctorExtConfigs(const ctor::settings& settings) .name = "bar", .external = ctor::external_manual { - .flags = { - .cflags = { "-D_B_" }, - .cxxflags = { "-D_A_", "-DFOO"}, - .ldflags = { "-D_C_" }, - .asmflags = { "-D_D_" }, + .flags = ctor::flags{ + ctor::c_flags{ "-D_B_" }, + ctor::cxx_flags{ "-D_A_", "-DFOO"}, + ctor::ld_flags{ "-D_C_" }, + ctor::asm_flags{ "-D_D_" }, }, }, // Creates --with-foo-prefix arg to configure which will be used for diff --git a/test/suite/ctor_files/ctor.cc.generated b/test/suite/ctor_files/ctor.cc.generated index 1466e4d..fe7e173 100644 --- a/test/suite/ctor_files/ctor.cc.generated +++ b/test/suite/ctor_files/ctor.cc.generated @@ -18,7 +18,7 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) { "world.cc", ctor::source_type::generated }, }, ctor::flags{ - .cxxflags = { + ctor::cxx_flags{ "-std=c++20", "-O3", "-g", @@ -34,7 +34,7 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) { "foo.cc", ctor::source_type::generated }, }, ctor::flags{ - .cxxflags = { + ctor::cxx_flags{ "-std=c++20", "-O3", "-g", diff --git a/test/suite/ctor_files/ctor.cc.multi b/test/suite/ctor_files/ctor.cc.multi index 419f982..cf86703 100644 --- a/test/suite/ctor_files/ctor.cc.multi +++ b/test/suite/ctor_files/ctor.cc.multi @@ -19,7 +19,7 @@ ctor::build_configurations ctorConfigs(const ctor::settings& settings) "hello.cc", }, ctor::flags{ - .cxxflags = { + ctor::cxx_flags{ "-std=c++20", "-O3", "-g", @@ -40,11 +40,11 @@ ctor::external_configurations ctorExtConfigs(const ctor::settings& settings) { .name = "bar", .external = ctor::external_manual{ - .flags = { - .cflags = { "-D_B_" }, - .cxxflags = { "-D_A_", "-DFOO"}, - .ldflags = { "-D_C_" }, - .asmflags = { "-D_D_" }, + .flags = ctor::flags{ + ctor::c_flags{ "-D_B_" }, + ctor::cxx_flags{ "-D_A_", "-DFOO"}, + ctor::ld_flags{ "-D_C_" }, + ctor::asm_flags{ "-D_D_" }, }, }, // Creates --with-foo-prefix arg to configure which will be used for |
