From 9e04e31f4618b7b4a473ae7781736a4de4bc3f59 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Fri, 22 Apr 2022 18:59:41 -0700 Subject: [PATCH 1/9] Updated documentation --- docs/source/arch/cmake_boilerplate.rst | 1 - docs/source/user_api/environment.rst | 13 ------------- 2 files changed, 14 deletions(-) diff --git a/docs/source/arch/cmake_boilerplate.rst b/docs/source/arch/cmake_boilerplate.rst index 3c418790..d4ac48cf 100644 --- a/docs/source/arch/cmake_boilerplate.rst +++ b/docs/source/arch/cmake_boilerplate.rst @@ -87,7 +87,6 @@ We can then ``add_subdirectory`` that particular folder. This helps us keep our src/assert_fatal.cpp src/logging.cpp include/env/assert_fatal.h - include/env/assert_throw.h include/env/env.h include/env/logging.h include/env/util.h diff --git a/docs/source/user_api/environment.rst b/docs/source/user_api/environment.rst index 9bbf4935..07a869af 100644 --- a/docs/source/user_api/environment.rst +++ b/docs/source/user_api/environment.rst @@ -33,19 +33,6 @@ assert_fatal.h .. doxygendefine:: ASSERT_FATAL -assert_throw.h --------------- - -.. doxygenfunction:: assert_throw([[maybe_unused]] const char *) - -.. doxygenfunction:: assert_throw(const std::string &) - -.. doxygenfunction:: assert_throw(bool, const char *) - -.. doxygenfunction:: assert_throw(bool, const std::string &) - -.. doxygendefine:: ASSERT_THROW - command.h --------- From 216c6dad025ba3a9003bde7a65cc4bb9236f4459 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Fri, 22 Apr 2022 19:00:09 -0700 Subject: [PATCH 2/9] Updated build.foo.cpp example build files --- example/hybrid/foolib/build.foo.cpp | 6 +++--- example/hybrid/foolib/build.foo.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/example/hybrid/foolib/build.foo.cpp b/example/hybrid/foolib/build.foo.cpp index 4941c2f2..56142aeb 100644 --- a/example/hybrid/foolib/build.foo.cpp +++ b/example/hybrid/foolib/build.foo.cpp @@ -1,6 +1,6 @@ #include "build.foo.h" -void fooTarget(buildcc::BaseTarget &target, const fs::path &relative_path) { - target.AddSource(relative_path / "src/foo.cpp"); - target.AddIncludeDir(relative_path / "src", true); +void fooTarget(buildcc::TargetInfo &target) { + target.AddSource("src/foo.cpp"); + target.AddIncludeDir("src", true); } diff --git a/example/hybrid/foolib/build.foo.h b/example/hybrid/foolib/build.foo.h index d53d08b5..4a741df6 100644 --- a/example/hybrid/foolib/build.foo.h +++ b/example/hybrid/foolib/build.foo.h @@ -2,4 +2,4 @@ #include "buildcc.h" -void fooTarget(buildcc::BaseTarget &target, const fs::path &relative_path); +void fooTarget(buildcc::TargetInfo &target); From ba83868335e10e6389985e09a663d191a792c9c6 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Fri, 22 Apr 2022 19:26:51 -0700 Subject: [PATCH 3/9] Updated examples --- example/hybrid/external_lib/build.main.cpp | 38 ++++++++++++++-------- example/hybrid/foolib/build.main.cpp | 38 ++++++++++++++-------- example/hybrid/generic/build.cpp | 14 ++++---- 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/example/hybrid/external_lib/build.main.cpp b/example/hybrid/external_lib/build.main.cpp index d74b63ef..c2361b9e 100644 --- a/example/hybrid/external_lib/build.main.cpp +++ b/example/hybrid/external_lib/build.main.cpp @@ -5,12 +5,12 @@ using namespace buildcc; static void clean_cb(); -static void foolib_build_cb(BaseTarget &target); +static void foolib_build_cb(BaseTarget &target, const TargetInfo &foolib); constexpr const char *const EXE = "build"; int main(int argc, char **argv) { - // 1. Get arguments + // Get arguments ArgToolchain arg_gcc; ArgToolchain arg_msvc; Args::Init() @@ -18,26 +18,32 @@ int main(int argc, char **argv) { .AddToolchain("msvc", "Generic msvc toolchain", arg_msvc) .Parse(argc, argv); - // 2. Initialize your environment + // Initialize your environment Reg::Init(); - // 3. Pre-build steps + // Pre-build steps Reg::Call(Args::Clean()).Func(clean_cb); - // 4. Build steps + // Build steps Toolchain_gcc gcc; - ExecutableTarget_gcc g_foolib("cppflags", gcc, ""); - Reg::Toolchain(arg_gcc.state).Build(foolib_build_cb, g_foolib); + TargetInfo g_foo(gcc, "../foolib"); + ExecutableTarget_gcc g_external("cppflags", gcc, ""); + Reg::Toolchain(arg_gcc.state) + .Func(fooTarget, g_foo) + .Build(foolib_build_cb, g_external, g_foo); Toolchain_msvc msvc; - ExecutableTarget_msvc m_foolib("cppflags", msvc, ""); - Reg::Toolchain(arg_msvc.state).Build(foolib_build_cb, m_foolib); + ExecutableTarget_msvc m_external("cppflags", msvc, ""); + TargetInfo m_foo(gcc, "../foolib"); + Reg::Toolchain(arg_msvc.state) + .Func(fooTarget, m_foo) + .Build(foolib_build_cb, m_external, m_foo); - // 5. + // Reg::Run(); - // 6. - plugin::ClangCompileCommands({&g_foolib, &m_foolib}).Generate(); + // + plugin::ClangCompileCommands({&g_external, &m_external}).Generate(); return 0; } @@ -47,8 +53,12 @@ static void clean_cb() { fs::remove_all(Project::GetBuildDir()); } -static void foolib_build_cb(BaseTarget &target) { - fooTarget(target, "../foolib"); +static void foolib_build_cb(BaseTarget &target, const TargetInfo &foolib) { target.AddSource("main.cpp"); + target.Insert(foolib, { + SyncOption::SourceFiles, + SyncOption::HeaderFiles, + SyncOption::IncludeDirs, + }); target.Build(); } diff --git a/example/hybrid/foolib/build.main.cpp b/example/hybrid/foolib/build.main.cpp index aa005469..58e104e9 100644 --- a/example/hybrid/foolib/build.main.cpp +++ b/example/hybrid/foolib/build.main.cpp @@ -5,12 +5,12 @@ using namespace buildcc; static void clean_cb(); -static void foolib_build_cb(BaseTarget &target); +static void main_build_cb(BaseTarget &target, const TargetInfo &foolib); constexpr std::string_view EXE = "build"; int main(int argc, char **argv) { - // 1. Get arguments + // Get arguments ArgToolchain arg_gcc; ArgToolchain arg_msvc; Args::Init() @@ -18,26 +18,32 @@ int main(int argc, char **argv) { .AddToolchain("msvc", "Generic msvc toolchain", arg_msvc) .Parse(argc, argv); - // 2. Initialize your environment + // Initialize your environment Reg::Init(); - // 3. Pre-build steps + // Pre-build steps Reg::Call(Args::Clean()).Func(clean_cb); - // 4. Build steps + // Build steps Toolchain_gcc gcc; - ExecutableTarget_gcc g_foolib("foolib", gcc, ""); - Reg::Toolchain(arg_gcc.state).Build(foolib_build_cb, g_foolib); + TargetInfo g_foo(gcc, ""); + ExecutableTarget_gcc g_main("one_executable", gcc, ""); + Reg::Toolchain(arg_gcc.state) + .Func(fooTarget, g_foo) + .Build(main_build_cb, g_main, g_foo); Toolchain_msvc msvc; - ExecutableTarget_msvc m_foolib("foolib", msvc, ""); - Reg::Toolchain(arg_msvc.state).Build(foolib_build_cb, m_foolib); + TargetInfo m_foo(msvc, ""); + ExecutableTarget_msvc m_main("one_executable", msvc, ""); + Reg::Toolchain(arg_msvc.state) + .Func(fooTarget, m_foo) + .Build(main_build_cb, m_main, m_foo); - // 5. + // Reg::Run(); - // 6. - plugin::ClangCompileCommands({&g_foolib, &m_foolib}).Generate(); + // + plugin::ClangCompileCommands({&g_main, &m_main}).Generate(); return 0; } @@ -47,8 +53,12 @@ static void clean_cb() { fs::remove_all(Project::GetBuildDir()); } -static void foolib_build_cb(BaseTarget &target) { - fooTarget(target, ""); +static void main_build_cb(BaseTarget &target, const TargetInfo &foolib) { target.AddSource("main.cpp"); + target.Insert(foolib, { + SyncOption::SourceFiles, + SyncOption::HeaderFiles, + SyncOption::IncludeDirs, + }); target.Build(); } diff --git a/example/hybrid/generic/build.cpp b/example/hybrid/generic/build.cpp index f5631b03..27e02310 100644 --- a/example/hybrid/generic/build.cpp +++ b/example/hybrid/generic/build.cpp @@ -42,7 +42,8 @@ int main(int argc, char **argv) { // Build steps // Toolchain + Generic Target BaseToolchain toolchain = custom_toolchain.ConstructToolchain(); - Target_generic foolib_target("libfoo", default_lib_type, toolchain, ""); + Target_generic foolib_target("libfoo", default_lib_type, toolchain, + "../foolib"); Target_generic generic_target("generic", TargetType::Executable, toolchain, "src"); Reg::Toolchain(custom_toolchain.state) @@ -83,18 +84,17 @@ void args_lib_type_cb(CLI::App &app, TargetType &lib_type) { } static void foolib_build_cb(BaseTarget &foolib_target) { - fooTarget(foolib_target, Project::GetRootDir() / ".." / "foolib"); + fooTarget(foolib_target); foolib_target.Build(); } static void generic_build_cb(BaseTarget &generic_target, BaseTarget &foolib_target) { - const auto &foolib_include_dirs = foolib_target.GetIncludeDirs(); - std::for_each( - foolib_include_dirs.cbegin(), foolib_include_dirs.cend(), - [&](const fs::path &p) { generic_target.AddIncludeDir(p, true); }); - generic_target.AddLibDep(foolib_target); generic_target.AddSource("main.cpp"); + generic_target.AddLibDep(foolib_target); + generic_target.Insert(foolib_target, { + SyncOption::IncludeDirs, + }); generic_target.Build(); } From ff8c37b24cc3df78abff33d173692e0b046dc27b Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sat, 23 Apr 2022 18:04:26 -0700 Subject: [PATCH 4/9] Updated examples --- example/hybrid/pch/build.cpp | 10 +++++----- example/hybrid/simple/build.cpp | 10 +++++----- example/hybrid/single/build.cpp | 12 ++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/example/hybrid/pch/build.cpp b/example/hybrid/pch/build.cpp index 88bfc426..28f3d410 100644 --- a/example/hybrid/pch/build.cpp +++ b/example/hybrid/pch/build.cpp @@ -12,7 +12,7 @@ static void cppflags_build_cb(BaseTarget &cppflags); static void cflags_build_cb(BaseTarget &cflags); int main(int argc, char **argv) { - // 1. Get arguments + // Get arguments ArgToolchain arg_gcc; ArgToolchain arg_msvc; Args::Init() @@ -20,13 +20,13 @@ int main(int argc, char **argv) { .AddToolchain("msvc", "Generic msvc toolchain", arg_msvc) .Parse(argc, argv); - // 2. Initialize your environment + // Initialize your environment Reg::Init(); - // 3. Pre-build steps + // Pre-build steps Reg::Call(Args::Clean()).Func(clean_cb); - // 4. Build steps + // Build steps // Explicit toolchain - target pairs Toolchain_gcc gcc; ExecutableTarget_gcc g_cppflags("cppflags", gcc, "files"); @@ -49,7 +49,7 @@ int main(int argc, char **argv) { Reg::Run(); - // 8. Post Build steps + // Post Build steps // - Clang Compile Commands plugin::ClangCompileCommands({&g_cflags, &g_cppflags}).Generate(); diff --git a/example/hybrid/simple/build.cpp b/example/hybrid/simple/build.cpp index 229f4f97..7dbacb3b 100644 --- a/example/hybrid/simple/build.cpp +++ b/example/hybrid/simple/build.cpp @@ -12,7 +12,7 @@ static void cppflags_build_cb(BaseTarget &cppflags); static void cflags_build_cb(BaseTarget &cflags); int main(int argc, char **argv) { - // 1. Get arguments + // Get arguments ArgToolchain arg_gcc; ArgToolchain arg_msvc; Args::Init() @@ -20,13 +20,13 @@ int main(int argc, char **argv) { .AddToolchain("msvc", "Generic msvc toolchain", arg_msvc) .Parse(argc, argv); - // 2. Initialize your environment + // Initialize your environment Reg::Init(); - // 3. Pre-build steps + // Pre-build steps Reg::Call(Args::Clean()).Func(clean_cb); - // 4. Build steps + // Build steps // Explicit toolchain - target pairs Toolchain_gcc gcc; ExecutableTarget_gcc g_cppflags("cppflags", gcc, "files"); @@ -50,7 +50,7 @@ int main(int argc, char **argv) { Reg::Run(); - // 8. Post Build steps + // Post Build steps // - Clang Compile Commands plugin::ClangCompileCommands({&g_cflags, &g_cppflags, &m_cflags, &m_cppflags}) diff --git a/example/hybrid/single/build.cpp b/example/hybrid/single/build.cpp index a6e59996..b85a774f 100644 --- a/example/hybrid/single/build.cpp +++ b/example/hybrid/single/build.cpp @@ -9,19 +9,19 @@ static void clean_cb(); static void hello_world_build_cb(BaseTarget &target); int main(int argc, char **argv) { - // 1. Get arguments + // Get arguments ArgToolchain arg_gcc; Args::Init() .AddToolchain("gcc", "Generic gcc toolchain", arg_gcc) .Parse(argc, argv); - // 2. Initialize your environment + // Initialize your environment Reg::Init(); - // 3. Pre-build steps + // Pre-build steps Reg::Call(Args::Clean()).Func(clean_cb); - // 4. Build steps + // Build steps // Explicit toolchain - target pairs Toolchain_gcc gcc; ExecutableTarget_gcc hello_world("hello_world", gcc, ""); @@ -32,10 +32,10 @@ int main(int argc, char **argv) { .Build(hello_world_build_cb, hello_world) .Test("{executable}", hello_world); - // 6. Build and Test Target + // Build and Test Target Reg::Run(); - // 8. Post Build steps + // Post Build steps // - Clang Compile Commands plugin::ClangCompileCommands({&hello_world}).Generate(); From f59e5aa8010ae3ab4553eb002f42a700f1bfb820 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sun, 24 Apr 2022 02:14:04 -0700 Subject: [PATCH 5/9] Updated storage --- buildcc/lib/env/include/env/storage.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildcc/lib/env/include/env/storage.h b/buildcc/lib/env/include/env/storage.h index 6ca3908b..ade21c3b 100644 --- a/buildcc/lib/env/include/env/storage.h +++ b/buildcc/lib/env/include/env/storage.h @@ -61,6 +61,8 @@ class ScopedStorage { template void Remove(T *ptr) { delete ptr; } template const T &ConstRef(const std::string &identifier) const { + env::assert_fatal(ptrs_.find(identifier) != ptrs_.end(), + fmt::format("Could not find '{}'", identifier)); const PtrMetadata &metadata = ptrs_.at(identifier); env::assert_fatal( typeid(T).name() == metadata.typeid_name, From 1dc7a47044769ad6e1319ef43a662cf56a0616ae Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sun, 24 Apr 2022 02:14:26 -0700 Subject: [PATCH 6/9] Added register BuildPackage API --- buildcc/lib/args/include/args/register.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildcc/lib/args/include/args/register.h b/buildcc/lib/args/include/args/register.h index a52a08de..25b02b24 100644 --- a/buildcc/lib/args/include/args/register.h +++ b/buildcc/lib/args/include/args/register.h @@ -201,6 +201,9 @@ class Reg::ToolchainInstance { Params &&...params) { return BuildInternal(build_cb, target, std::forward(params)...); } + template ToolchainInstance &BuildPackage(P &package) { + return Func([&]() { package.Setup(condition_); }); + } ToolchainInstance &Dep(const internal::BuilderInterface &target, const internal::BuilderInterface &dependency); ToolchainInstance &Test(const std::string &command, const BaseTarget &target, From ecd8f6339d558c23caa7386108f968a249126c79 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sun, 24 Apr 2022 02:14:58 -0700 Subject: [PATCH 7/9] Updated bootstrap --- bootstrap/include/bootstrap/build_buildcc.h | 22 ++++++++++++++- bootstrap/main.buildcc.cpp | 6 ++-- bootstrap/src/build_buildcc.cpp | 31 ++++++++++++++------- 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/bootstrap/include/bootstrap/build_buildcc.h b/bootstrap/include/bootstrap/build_buildcc.h index 4f0d59e7..ccfe2602 100644 --- a/bootstrap/include/bootstrap/build_buildcc.h +++ b/bootstrap/include/bootstrap/build_buildcc.h @@ -60,7 +60,9 @@ class BuildBuildCC { public: BuildBuildCC(const BaseToolchain &toolchain, const TargetEnv &env) - : toolchain_(toolchain), env_(env) {} + : toolchain_(toolchain), env_(env) { + Initialize(); + } BuildBuildCC(const BuildBuildCC &) = delete; void Setup(const ArgToolchainState &state); @@ -73,6 +75,24 @@ class BuildBuildCC { return storage_.Ref(kBuildccLibName); } +private: + void Initialize(); + ExecutableTarget_generic &GetFlatc() { + return storage_.Ref(kFlatcExeName); + } + BaseGenerator &GetSchemaGen() { + return storage_.Ref(kSchemaGenName); + } + TargetInfo &GetFlatbuffersHo() { + return storage_.Ref(kFlatbuffersHoName); + } + TargetInfo &GetCli11Ho() { return storage_.Ref(kCli11HoName); } + TargetInfo &GetFmtHo() { return storage_.Ref(kFmtHoName); } + TargetInfo &GetSpdlogHo() { return storage_.Ref(kSpdlogHoName); } + TargetInfo &GetTaskflowHo() { + return storage_.Ref(kTaskflowHoName); + } + private: const BaseToolchain &toolchain_; TargetEnv env_; diff --git a/bootstrap/main.buildcc.cpp b/bootstrap/main.buildcc.cpp index 9115346e..a1109bf1 100644 --- a/bootstrap/main.buildcc.cpp +++ b/bootstrap/main.buildcc.cpp @@ -42,16 +42,16 @@ int main(int argc, char **argv) { Reg::Call(Args::Clean()).Func(clean_cb); BaseToolchain toolchain = custom_toolchain_arg.ConstructToolchain(); - toolchain.Verify(); BuildBuildCC buildcc( toolchain, TargetEnv(Project::GetRootDir(), Project::GetBuildDir())); - buildcc.Setup(custom_toolchain_arg.state); + auto &buildcc_lib = buildcc.GetBuildcc(); - const auto &buildcc_lib = buildcc.GetBuildcc(); ExecutableTarget_generic buildcc_hybrid_simple_example( "buildcc_hybrid_simple_example", toolchain, "example/hybrid/simple"); Reg::Toolchain(custom_toolchain_arg.state) + .Func([&]() { toolchain.Verify(); }) + .BuildPackage(buildcc) .Build(hybrid_simple_example_cb, buildcc_hybrid_simple_example, buildcc_lib) .Dep(buildcc_hybrid_simple_example, buildcc_lib); diff --git a/bootstrap/src/build_buildcc.cpp b/bootstrap/src/build_buildcc.cpp index d5b111b6..4245a6cd 100644 --- a/bootstrap/src/build_buildcc.cpp +++ b/bootstrap/src/build_buildcc.cpp @@ -189,44 +189,44 @@ static void global_flags_cb(TargetInfo &global_info, } } -void BuildBuildCC::Setup(const ArgToolchainState &state) { - auto &flatc_exe = storage_.Add( +void BuildBuildCC::Initialize() { + (void)storage_.Add( kFlatcExeName, kFlatcExeName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "flatbuffers", env_.GetTargetBuildDir())); // Schema - auto &schema_gen = storage_.Add( + (void)storage_.Add( kSchemaGenName, kSchemaGenName, TargetEnv(env_.GetTargetRootDir() / "buildcc" / "schema", env_.GetTargetBuildDir() / toolchain_.GetName())); // Flatbuffers HO lib - auto &flatbuffers_ho_lib = storage_.Add( + (void)storage_.Add( kFlatbuffersHoName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "flatbuffers", env_.GetTargetBuildDir())); // CLI11 HO lib - auto &cli11_ho_lib = storage_.Add( + (void)storage_.Add( kCli11HoName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "CLI11", env_.GetTargetBuildDir())); // fmt HO lib - auto &fmt_ho_lib = storage_.Add( + (void)storage_.Add( kFmtHoName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "fmt", env_.GetTargetBuildDir())); // spdlog HO lib - auto &spdlog_ho_lib = storage_.Add( + (void)storage_.Add( kSpdlogHoName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "spdlog", env_.GetTargetBuildDir())); // taskflow HO lib - auto &taskflow_ho_lib = storage_.Add( + (void)storage_.Add( kTaskflowHoName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "taskflow", env_.GetTargetBuildDir())); @@ -234,7 +234,7 @@ void BuildBuildCC::Setup(const ArgToolchainState &state) { // Tiny-process-library lib // TODO, Make this a generic selection between StaticTarget and // DynamicTarget - auto &tpl_lib = storage_.Add( + (void)storage_.Add( kTplLibName, kTplLibName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "third_party" / "tiny-process-library", @@ -243,10 +243,21 @@ void BuildBuildCC::Setup(const ArgToolchainState &state) { // BuildCC lib // TODO, Make this a generic selection between StaticTarget and // DynamicTarget - auto &buildcc_lib = storage_.Add( + (void)storage_.Add( kBuildccLibName, kBuildccLibName, toolchain_, TargetEnv(env_.GetTargetRootDir() / "buildcc", env_.GetTargetBuildDir())); +} +void BuildBuildCC::Setup(const ArgToolchainState &state) { + auto &flatc_exe = GetFlatc(); + auto &schema_gen = GetSchemaGen(); + auto &flatbuffers_ho_lib = GetFlatbuffersHo(); + auto &cli11_ho_lib = GetCli11Ho(); + auto &fmt_ho_lib = GetFmtHo(); + auto &spdlog_ho_lib = GetSpdlogHo(); + auto &taskflow_ho_lib = GetTaskflowHo(); + auto &tpl_lib = GetTpl(); + auto &buildcc_lib = GetBuildcc(); Reg::Toolchain(state) .Func(global_flags_cb, flatc_exe, toolchain_) .Build(build_flatc_exe_cb, flatc_exe) From 5fa3e3b2f422f9f42d7f153794f1d5e7ee1b6188 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sun, 24 Apr 2022 02:15:15 -0700 Subject: [PATCH 8/9] Updated ArgToolchainState with constructor --- buildcc/lib/args/include/args/args.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/buildcc/lib/args/include/args/args.h b/buildcc/lib/args/include/args/args.h index 6cccb1f3..a6b37f19 100644 --- a/buildcc/lib/args/include/args/args.h +++ b/buildcc/lib/args/include/args/args.h @@ -37,8 +37,9 @@ namespace buildcc { * @brief Toolchain State used to selectively build and test targets */ struct ArgToolchainState { - bool build{false}; - bool test{false}; + ArgToolchainState(bool b = false, bool t = false) : build(b), test(t) {} + bool build; + bool test; }; /** @@ -47,7 +48,7 @@ struct ArgToolchainState { * Bundled with Toolchain State */ struct ArgToolchain { - ArgToolchain(){}; + ArgToolchain() = default; ArgToolchain(ToolchainId initial_id, const std::string &initial_name, const ToolchainExecutables &initial_executables) : id(initial_id), name(initial_name), executables(initial_executables) {} From dba25f9acd8e57f47cb539b8b16c0c1e3fba1247 Mon Sep 17 00:00:00 2001 From: Niket Naidu Date: Sun, 24 Apr 2022 02:15:37 -0700 Subject: [PATCH 9/9] Updated buildexe --- buildexe/buildexe.cpp | 3 ++- buildexe/include/buildexe/build_env_setup.h | 6 ++---- buildexe/src/build_env_setup.cpp | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/buildexe/buildexe.cpp b/buildexe/buildexe.cpp index 16549953..1427ab36 100644 --- a/buildexe/buildexe.cpp +++ b/buildexe/buildexe.cpp @@ -67,7 +67,8 @@ int main(int argc, char **argv) { // Build Target BuildEnvSetup build_setup(toolchain, buildexe_args); - build_setup.ConstructTarget(); + Reg::Toolchain(ArgToolchainState(true)).BuildPackage(build_setup); + Reg::Run(); // Run Target if script mode if (buildexe_args.GetBuildMode() == BuildExeMode::Script) { diff --git a/buildexe/include/buildexe/build_env_setup.h b/buildexe/include/buildexe/build_env_setup.h index f76fd9fc..afbbe321 100644 --- a/buildexe/include/buildexe/build_env_setup.h +++ b/buildexe/include/buildexe/build_env_setup.h @@ -33,11 +33,9 @@ class BuildEnvSetup { public: BuildEnvSetup(const BaseToolchain &toolchain, const BuildExeArgs &buildexe_args) - : toolchain_(toolchain), buildexe_args_(buildexe_args) { - state_.build = true; - } + : toolchain_(toolchain), buildexe_args_(buildexe_args) {} - void ConstructTarget(); + void Setup(const ArgToolchainState &state); void RunUserTarget(const ArgScriptInfo &arg_script_info); diff --git a/buildexe/src/build_env_setup.cpp b/buildexe/src/build_env_setup.cpp index 72b17fba..d36360eb 100644 --- a/buildexe/src/build_env_setup.cpp +++ b/buildexe/src/build_env_setup.cpp @@ -21,7 +21,8 @@ namespace buildcc { constexpr const char *const kTag = "BuildExe"; -void BuildEnvSetup::ConstructTarget() { +void BuildEnvSetup::Setup(const ArgToolchainState &state) { + state_ = state; if (buildexe_args_.GetBuildMode() == BuildExeMode::Script) { // buildcc and user target ConstructUserTargetWithBuildcc(); @@ -29,7 +30,6 @@ void BuildEnvSetup::ConstructTarget() { // user target ConstructUserTarget(); } - Reg::Run(); } void BuildEnvSetup::RunUserTarget(const ArgScriptInfo &arg_script_info) {