2222
2323#include " fmt/format.h"
2424
25+ namespace {
26+
27+ constexpr const char *const kIncludeDirs = " include_dirs" ;
28+ constexpr const char *const kLibDirs = " lib_dirs" ;
29+
30+ constexpr const char *const kPreprocessorFlags = " preprocessor_flags" ;
31+ constexpr const char *const kCommonCompileFlags = " common_compile_flags" ;
32+ constexpr const char *const kLinkFlags = " link_flags" ;
33+
34+ constexpr const char *const kPchCompileFlags = " pch_compile_flags" ;
35+ constexpr const char *const kPchObjectFlags = " pch_object_flags" ;
36+
37+ constexpr const char *const kAsmCompiler = " asm_compiler" ;
38+ constexpr const char *const kCCompiler = " c_compiler" ;
39+ constexpr const char *const kCppCompiler = " cpp_compiler" ;
40+ constexpr const char *const kArchiver = " archiver" ;
41+ constexpr const char *const kLinker = " linker" ;
42+
43+ } // namespace
44+
2545namespace buildcc ::base {
2646
2747// * Load
@@ -40,34 +60,41 @@ void Target::Build() {
4060 tf_.name (fmt::format (" [{}] {}" , toolchain_.GetName (), name_));
4161
4262 command_.AddDefaultArguments ({
43- {" include_dirs" ,
44- internal::aggregate_with_prefix (config_.prefix_include_dir ,
45- GetCurrentIncludeDirs ())},
46- {" lib_dirs" , internal::aggregate_with_prefix (config_.prefix_lib_dir ,
47- GetCurrentLibDirs ())},
48-
49- {" preprocessor_flags" ,
50- internal::aggregate (GetCurrentPreprocessorFlags ())},
51- {" common_compile_flags" ,
63+ {kIncludeDirs , internal::aggregate_with_prefix (config_.prefix_include_dir ,
64+ GetCurrentIncludeDirs ())},
65+ {kLibDirs , internal::aggregate_with_prefix (config_.prefix_lib_dir ,
66+ GetCurrentLibDirs ())},
67+
68+ {kPreprocessorFlags , internal::aggregate (GetCurrentPreprocessorFlags ())},
69+ {kCommonCompileFlags ,
5270 internal::aggregate (GetCurrentCommonCompileFlags ())},
53- {" link_flags " , internal::aggregate (GetCurrentLinkFlags ())},
71+ {kLinkFlags , internal::aggregate (GetCurrentLinkFlags ())},
5472
5573 // Toolchain executables here
56- {" asm_compiler " , toolchain_.GetAsmCompiler ()},
57- {" c_compiler " , toolchain_.GetCCompiler ()},
58- {" cpp_compiler " , toolchain_.GetCppCompiler ()},
59- {" archiver " , toolchain_.GetArchiver ()},
60- {" linker " , toolchain_.GetLinker ()},
74+ {kAsmCompiler , toolchain_.GetAsmCompiler ()},
75+ {kCCompiler , toolchain_.GetCCompiler ()},
76+ {kCppCompiler , toolchain_.GetCppCompiler ()},
77+ {kArchiver , toolchain_.GetArchiver ()},
78+ {kLinker , toolchain_.GetLinker ()},
6179 });
6280
6381 // Load the serialized file
6482 (void )loader_.Load ();
6583
6684 // PCH Compile
6785 if (!GetCurrentPchFiles ().empty ()) {
86+ command_.AddDefaultArguments ({
87+ {kPchCompileFlags , internal::aggregate (GetCurrentPchCompileFlags ())},
88+ {kPchObjectFlags , internal::aggregate (GetCurrentPchObjectFlags ())},
89+ });
90+
6891 // TODO, Update .output at Constructor
6992 pch_file_.command = ConstructPchCompileCommand ();
7093 PchTask ();
94+ } else {
95+ command_.AddDefaultArguments ({
96+ {kPchObjectFlags , " " },
97+ });
7198 }
7299
73100 // Compile Command
0 commit comments