fix msvc pch
This commit is contained in:
parent
ed2bdc5c0a
commit
d6d89b9625
88
build.c
88
build.c
@ -181,16 +181,6 @@ void OnBuild(StringList cli_args)
|
||||
D_Tag inc_src_file = D_TagFromPath(&arena, Lit("src/inc.c"), D_TagKind_File);
|
||||
D_Tag rc_res_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/rc.res"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
|
||||
#if 0
|
||||
D_Tag pch_header_file = D_TagFromPath(&arena, Lit("src/common.h"), D_TagKind_File);
|
||||
D_Tag pch_c_src_gen_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.c"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_cpp_src_gen_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.cpp"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_c_src_gen_obj_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.c.obj"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_cpp_src_gen_obj_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.cpp.obj"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_c_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.c.pch"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_cpp_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.cpp.pch"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
#endif
|
||||
|
||||
/* ========================== *
|
||||
* Determine compiler args
|
||||
* ========================== */
|
||||
@ -217,13 +207,6 @@ void OnBuild(StringList cli_args)
|
||||
StringListAppend(&arena, &pch_cpp_compile_args, Lit("cl.exe /nologo /c /Yc\"%F\" \"%F\""));
|
||||
StringListAppend(&arena, &rc_compile_args, Lit("rc /fo\"%F\" \"%F\""));
|
||||
|
||||
#if 0
|
||||
StringListAppend(&arena, &c_compile_args, StringF(&arena, Lit("/Yu\"%F\" /FI\"%F\" /Fp\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_header_file.full_path), FmtStr(pch_c_file.full_path)));
|
||||
StringListAppend(&arena, &cpp_compile_args, StringF(&arena, Lit("/Yu\"%F\" /FI\"%F\" /Fp\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_file.full_path)));
|
||||
StringListAppend(&arena, &pch_c_compile_args, StringF(&arena, Lit("/FI\"%F\" /Fp\"%F\" /Fo\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_c_file.full_path), FmtStr(pch_c_src_gen_obj_file.full_path)));
|
||||
StringListAppend(&arena, &pch_cpp_compile_args, StringF(&arena, Lit("/FI\"%F\" /Fp\"%F\" /Fo\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_file.full_path), FmtStr(pch_cpp_src_gen_obj_file.full_path)));
|
||||
#endif
|
||||
|
||||
StringListAppend(&arena, &link_args, Lit("link.exe /nologo %F /OUT:\"%F\" /DEBUG:FULL /OPT:REF /OPT:ICF"));
|
||||
|
||||
String warnings = Lit("/WX /Wall "
|
||||
@ -241,8 +224,7 @@ void OnBuild(StringList cli_args)
|
||||
StringListAppend(&arena, &pch_cpp_compile_args, Lit("clang -xc++-header -std=c++20 -c \"%F\" -o \"%F\" -MD"));
|
||||
StringListAppend(&arena, &rc_compile_args, Lit("llvm-rc /fo\"%F\" \"%F\""));
|
||||
|
||||
StringListAppend(&arena, &link_args, Lit("clang %F"));
|
||||
StringListAppend(&arena, &link_args, StringF(&arena, Lit("-o \"%F\""), FmtStr(executable_file.full_path)));
|
||||
StringListAppend(&arena, &link_args, Lit("clang %F -o \"%F\""));
|
||||
|
||||
StringListAppend(&arena,
|
||||
&compile_and_link_args,
|
||||
@ -378,15 +360,6 @@ void OnBuild(StringList cli_args)
|
||||
String incbin_dir = StringReplace(&arena, out_inc_dir_path, Lit("\\"), Lit("/"));
|
||||
StringListAppend(&arena, &compile_args, StringF(&arena, Lit("-DINCBIN_DIR_RAW=\"%F\""), FmtStr(incbin_dir)));
|
||||
}
|
||||
|
||||
#if 0
|
||||
final_c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
final_cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
final_pch_c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
final_pch_cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
final_rc_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), rc_compile_args);
|
||||
final_link_args_fmt = StringFromStringLists(&arena, Lit(" "), link_args, link_warnings, compile_and_link_args);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ========================== *
|
||||
@ -413,6 +386,7 @@ void OnBuild(StringList cli_args)
|
||||
/* Generate & append rc input file */
|
||||
if (PlatformWindows) {
|
||||
D_AddDependency(rc_input_file, icon_file);
|
||||
/* TODO: Depend on tar files rather than dir (more correct) */
|
||||
if (should_embed_in_rc) {
|
||||
D_AddDependency(rc_input_file, shaders_dir);
|
||||
if (should_embed_res_dir) {
|
||||
@ -420,12 +394,14 @@ void OnBuild(StringList cli_args)
|
||||
}
|
||||
}
|
||||
if (D_IsDirty(rc_input_file, &hist)) {
|
||||
D_Tag shaders_tar_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/%F.tar"), FmtStr(out_inc_dir_path), FmtStr(D_GetName(shaders_dir))), D_TagKind_File);
|
||||
D_ClearWrite(rc_input_file, Lit(""));
|
||||
D_AppendWrite(rc_input_file, StringF(&arena, Lit("%F %F DISCARDABLE %F\n"), FmtStr(D_GetName(icon_file)), FmtStr(Lit("ICON")), FmtStr(D_GetName(icon_file))));
|
||||
if (should_embed_in_rc) {
|
||||
D_AppendWrite(rc_input_file, StringF(&arena, Lit("%F %F DISCARDABLE %F\n"), FmtStr(D_GetName(shaders_dir)), FmtStr(Lit("RCDATA")), FmtStr(D_GetName(shaders_dir))));
|
||||
D_AppendWrite(rc_input_file, StringF(&arena, Lit("%F %F DISCARDABLE %F\n"), FmtStr(D_GetName(shaders_tar_file)), FmtStr(Lit("RCDATA")), FmtStr(D_GetName(shaders_tar_file))));
|
||||
if (should_embed_res_dir) {
|
||||
D_AppendWrite(rc_input_file, StringF(&arena, Lit("%F %F DISCARDABLE %F\n"), FmtStr(D_GetName(res_dir)), FmtStr(Lit("RCDATA")), FmtStr(D_GetName(res_dir))));
|
||||
D_Tag res_tar_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/%F.tar"), FmtStr(out_inc_dir_path), FmtStr(D_GetName(res_dir))), D_TagKind_File);
|
||||
D_AppendWrite(rc_input_file, StringF(&arena, Lit("%F %F DISCARDABLE %F\n"), FmtStr(D_GetName(res_tar_file)), FmtStr(Lit("RCDATA")), FmtStr(D_GetName(res_tar_file))));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -486,7 +462,6 @@ void OnBuild(StringList cli_args)
|
||||
} else {
|
||||
D_AddDependency(inc_src_file, tar_file);
|
||||
}
|
||||
|
||||
if (D_IsDirty(tar_file, &hist)) {
|
||||
String cmd = StringF(&arena, Lit("cd %F && tar cvf %F ."), FmtStr(input_dir.full_path), FmtStr(tar_file.full_path));
|
||||
String step_name = StringF(&arena, Lit("%F -> %F"), FmtStr(D_GetName(input_dir)), FmtStr(D_GetName(tar_file)));
|
||||
@ -495,7 +470,7 @@ void OnBuild(StringList cli_args)
|
||||
}
|
||||
|
||||
/* Build rc file */
|
||||
{
|
||||
if (PlatformWindows) {
|
||||
String rc_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), rc_compile_args);
|
||||
D_AddDependency(rc_res_file, rc_input_file);
|
||||
|
||||
@ -510,9 +485,6 @@ void OnBuild(StringList cli_args)
|
||||
|
||||
/* Build pch */
|
||||
{
|
||||
String pch_c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
String pch_cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
|
||||
D_Tag dep_file;
|
||||
{
|
||||
String name = D_GetName(pch_header_file);
|
||||
@ -529,25 +501,56 @@ void OnBuild(StringList cli_args)
|
||||
D_AddDependency(pch_cpp_file, dep_file);
|
||||
|
||||
if (arg_msvc) {
|
||||
#if 0
|
||||
D_Tag pch_c_src_gen_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.c"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_c_src_gen_obj_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.c.obj"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_cpp_src_gen_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.cpp"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
D_Tag pch_cpp_src_gen_obj_file = D_TagFromPath(&arena, StringF(&arena, Lit("%F/common.cpp.obj"), FmtStr(out_obj_dir_path)), D_TagKind_File);
|
||||
|
||||
StringListAppend(&arena, &c_compile_args, StringF(&arena, Lit("/Yu\"%F\" /FI\"%F\" /Fp\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_header_file.full_path), FmtStr(pch_c_file.full_path)));
|
||||
StringListAppend(&arena, &cpp_compile_args, StringF(&arena, Lit("/Yu\"%F\" /FI\"%F\" /Fp\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_file.full_path)));
|
||||
StringListAppend(&arena, &pch_c_compile_args, StringF(&arena, Lit("/FI\"%F\" /Fp\"%F\" /Fo\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_c_file.full_path), FmtStr(pch_c_src_gen_obj_file.full_path)));
|
||||
StringListAppend(&arena, &pch_cpp_compile_args, StringF(&arena, Lit("/FI\"%F\" /Fp\"%F\" /Fo\"%F\""), FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_file.full_path), FmtStr(pch_cpp_src_gen_obj_file.full_path)));
|
||||
#endif
|
||||
|
||||
D_TagListAppend(&arena, &link_files, pch_c_src_gen_obj_file);
|
||||
D_TagListAppend(&arena, &link_files, pch_cpp_src_gen_obj_file);
|
||||
|
||||
String pch_c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
String pch_cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
|
||||
/* C */
|
||||
D_AddDependency(pch_c_src_gen_obj_file, pch_c_src_gen_file);
|
||||
D_AddDependency(pch_c_file, pch_c_src_gen_obj_file);
|
||||
if (D_IsDirty(pch_c_file, &hist)) {
|
||||
D_ClearWrite(pch_c_src_gen_file, Lit(""));
|
||||
String cmd = StringF(&arena, pch_c_compile_args_fmt, FmtStr(pch_header_file.full_path), FmtStr(pch_c_src_gen_file.full_path));
|
||||
String step_name = StringF(&arena, Lit("%F -> %F"), FmtStr(D_GetName(pch_header_file)), FmtStr(D_GetName(pch_c_file)));
|
||||
StepListAppend(&arena, &build_steps, step_name, cmd, true);
|
||||
}
|
||||
|
||||
/* Cpp */
|
||||
D_AddDependency(pch_cpp_src_gen_obj_file, pch_cpp_src_gen_file);
|
||||
D_AddDependency(pch_cpp_file, pch_cpp_src_gen_obj_file);
|
||||
if (D_IsDirty(pch_cpp_file, &hist)) {
|
||||
D_ClearWrite(pch_cpp_src_gen_file, Lit(""));
|
||||
String cmd = StringF(&arena, pch_cpp_compile_args_fmt, FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_src_gen_file.full_path));
|
||||
String step_name = StringF(&arena, Lit("%F -> %F"), FmtStr(D_GetName(pch_header_file)), FmtStr(D_GetName(pch_cpp_file)));
|
||||
StepListAppend(&arena, &build_steps, step_name, cmd, true);
|
||||
}
|
||||
} else {
|
||||
StringListAppend(&arena, &c_compile_args, StringF(&arena, Lit("-include-pch %F"), FmtStr(pch_c_file.full_path)));
|
||||
StringListAppend(&arena, &cpp_compile_args, StringF(&arena, Lit("-include-pch %F"), FmtStr(pch_cpp_file.full_path)));
|
||||
|
||||
String pch_c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
String pch_cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), pch_cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
|
||||
/* C */
|
||||
{
|
||||
if (D_IsDirty(pch_c_file, &hist)) {
|
||||
String comp_cmd = StringF(&arena, pch_c_compile_args_fmt, FmtStr(pch_header_file.full_path), FmtStr(pch_c_file.full_path));
|
||||
String step_name = StringF(&arena, Lit("%F -> %F"), FmtStr(D_GetName(pch_header_file)), FmtStr(D_GetName(pch_c_file)));
|
||||
StepListAppend(&arena, &build_steps, step_name, comp_cmd, true);
|
||||
}
|
||||
}
|
||||
|
||||
/* Cpp */
|
||||
{
|
||||
if (D_IsDirty(pch_cpp_file, &hist)) {
|
||||
String comp_cmd = StringF(&arena, pch_cpp_compile_args_fmt, FmtStr(pch_header_file.full_path), FmtStr(pch_cpp_file.full_path));
|
||||
String step_name = StringF(&arena, Lit("%F -> %F"), FmtStr(D_GetName(pch_header_file)), FmtStr(D_GetName(pch_cpp_file)));
|
||||
@ -555,13 +558,11 @@ void OnBuild(StringList cli_args)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Build src files */
|
||||
{
|
||||
String c_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), c_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
String cpp_compile_args_fmt = StringFromStringLists(&arena, Lit(" "), cpp_compile_args, compile_warnings, compile_and_link_args, compile_args);
|
||||
|
||||
for (D_TagListNode *n = src_input_files.first; n; n = n->next) {
|
||||
D_Tag file = n->tag;
|
||||
String path = file.full_path;
|
||||
@ -610,10 +611,9 @@ void OnBuild(StringList cli_args)
|
||||
}
|
||||
link_files_str = StringFromStringList(&arena, Lit(" "), link_files_quoted_list);
|
||||
}
|
||||
|
||||
if (link_files_str.len > 0) {
|
||||
String link_args_fmt = StringFromStringLists(&arena, Lit(" "), link_args, link_warnings, compile_and_link_args);
|
||||
String cmd = StringF(&arena, link_args_fmt, FmtStr(link_files_str));
|
||||
String cmd = StringF(&arena, link_args_fmt, FmtStr(link_files_str), FmtStr(executable_file.full_path));
|
||||
StepListAppend(&arena, &build_steps, Lit("Linking"), cmd, true);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
src/common.pch
BIN
src/common.pch
Binary file not shown.
Loading…
Reference in New Issue
Block a user