1717#include " buildcc.h"
1818
1919#include " buildexe/args_setup.h"
20+ #include " buildexe/build_env_home.h"
2021#include " buildexe/build_env_setup.h"
2122#include " buildexe/toolchain_setup.h"
2223
@@ -34,25 +35,15 @@ constexpr const char *const kTag = "BuildExe";
3435
3536static void clean_cb ();
3637
38+ // TODO, Update BuildExeArgs with internal functions
3739int main (int argc,char **argv) {
38- Args args;
40+ //
41+ BuildccHome::Init ();
3942
40- ArgToolchain host_toolchain_arg;
41- args.AddToolchain (" host" ," Host Toolchain" , host_toolchain_arg);
42-
43- BuildExeMode out_mode;
44- setup_arg_buildexe_mode (args, out_mode);
45-
46- ArgTargetInfo out_targetinfo;
47- setup_arg_target_info (args, out_targetinfo);
48-
49- ArgTargetInputs out_targetinputs;
50- setup_arg_target_inputs (args, out_targetinputs);
51-
52- ArgScriptInfo out_scriptinfo;
53- setup_arg_script_mode (args, out_scriptinfo);
54-
55- args.Parse (argc, argv);
43+ //
44+ BuildExeArgs buildexe_args;
45+ buildexe_args.Setup ();
46+ buildexe_args.Parse (argc, argv);
5647
5748// TODO, Add Verification subcommand here for OS, Compiler etc!
5849// os win, linux considerations
@@ -63,33 +54,24 @@ int main(int argc, char **argv) {
6354// TODO, Add libraries (git cloned)
6455// TODO, Add extension (git cloned)
6556
66- Registerreg (args );
57+ Registerreg (buildexe_args. GetArgs () );
6758 reg.Clean (clean_cb);
6859
69- // Build
70- BaseToolchain toolchain = host_toolchain_arg.ConstructToolchain ();
60+ // Host Toolchain
61+ BaseToolchain toolchain =
62+ buildexe_args.GetHostToolchainArg ().ConstructToolchain ();
7163find_toolchain_verify (toolchain);
72- if (out_mode == BuildExeMode::Script) {
64+ if (buildexe_args. GetBuildMode () == BuildExeMode::Script) {
7365host_toolchain_verify (toolchain);
7466 }
7567
76- // Build environment
77- BuildEnvSetupbuild_setup (reg, toolchain, out_targetinfo, out_targetinputs);
78- if (out_mode == BuildExeMode::Script) {
79- // buildcc and user target
80- build_setup.ConstructUserTargetWithBuildcc ();
81- }else {
82- // user target
83- build_setup.ConstructUserTarget ();
84- }
85- reg.RunBuild ();
86-
87- // Run
88- if (out_mode == BuildExeMode::Script) {
89- env::log_info (kTag ,
90- fmt::format (" ************** Running '{}' **************" ,
91- out_targetinfo.name ));
92- build_setup.RunUserTarget (out_scriptinfo);
68+ // Build Target
69+ BuildEnvSetupbuild_setup (reg, toolchain, buildexe_args);
70+ build_setup.ConstructTarget ();
71+
72+ // Run Target if script mode
73+ if (buildexe_args.GetBuildMode () == BuildExeMode::Script) {
74+ build_setup.RunUserTarget (buildexe_args.GetScriptInfo ());
9375 }
9476
9577// - Clang Compile Commands