Add -tilde for working on the new compiler

This commit is contained in:
gingerBill
2023-07-08 12:07:11 +01:00
parent d7af6de9b9
commit 7ab531bd21
3 changed files with 62 additions and 19 deletions
+2
View File
@@ -318,6 +318,8 @@ struct BuildContext {
isize max_error_count; isize max_error_count;
bool tilde_backend;
u32 cmd_doc_flags; u32 cmd_doc_flags;
Array<String> extra_packages; Array<String> extra_packages;
+23
View File
@@ -71,6 +71,10 @@ gb_global Timings global_timings = {0};
#include "checker.cpp" #include "checker.cpp"
#include "docs.cpp" #include "docs.cpp"
#if defined(GB_SYSTEM_WINDOWS)
#include "tilde_backend.cpp"
#endif
#include "llvm_backend.cpp" #include "llvm_backend.cpp"
#if defined(GB_SYSTEM_OSX) #if defined(GB_SYSTEM_OSX)
@@ -696,6 +700,8 @@ enum BuildFlagKind {
BuildFlag_InternalIgnoreLLVMBuild, BuildFlag_InternalIgnoreLLVMBuild,
#if defined(GB_SYSTEM_WINDOWS) #if defined(GB_SYSTEM_WINDOWS)
BuildFlag_Tilde,
BuildFlag_IgnoreVsSearch, BuildFlag_IgnoreVsSearch,
BuildFlag_ResourceFile, BuildFlag_ResourceFile,
BuildFlag_WindowsPdbName, BuildFlag_WindowsPdbName,
@@ -870,6 +876,8 @@ gb_internal bool parse_build_flags(Array<String> args) {
add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None, Command_all); add_flag(&build_flags, BuildFlag_InternalIgnoreLLVMBuild, str_lit("internal-ignore-llvm-build"),BuildFlagParam_None, Command_all);
#if defined(GB_SYSTEM_WINDOWS) #if defined(GB_SYSTEM_WINDOWS)
add_flag(&build_flags, BuildFlag_Tilde, str_lit("tilde"), BuildFlagParam_None, Command__does_build);
add_flag(&build_flags, BuildFlag_IgnoreVsSearch, str_lit("ignore-vs-search"), BuildFlagParam_None, Command__does_build); add_flag(&build_flags, BuildFlag_IgnoreVsSearch, str_lit("ignore-vs-search"), BuildFlagParam_None, Command__does_build);
add_flag(&build_flags, BuildFlag_ResourceFile, str_lit("resource"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_ResourceFile, str_lit("resource"), BuildFlagParam_String, Command__does_build);
add_flag(&build_flags, BuildFlag_WindowsPdbName, str_lit("pdb-name"), BuildFlagParam_String, Command__does_build); add_flag(&build_flags, BuildFlag_WindowsPdbName, str_lit("pdb-name"), BuildFlagParam_String, Command__does_build);
@@ -1537,6 +1545,10 @@ gb_internal bool parse_build_flags(Array<String> args) {
build_context.ignore_llvm_build = true; build_context.ignore_llvm_build = true;
break; break;
#if defined(GB_SYSTEM_WINDOWS) #if defined(GB_SYSTEM_WINDOWS)
case BuildFlag_Tilde:
build_context.tilde_backend = true;
break;
case BuildFlag_IgnoreVsSearch: { case BuildFlag_IgnoreVsSearch: {
GB_ASSERT(value.kind == ExactValue_Invalid); GB_ASSERT(value.kind == ExactValue_Invalid);
build_context.ignore_microsoft_magic = true; build_context.ignore_microsoft_magic = true;
@@ -2882,6 +2894,16 @@ int main(int arg_count, char const **arg_ptr) {
return 0; return 0;
} }
#if defined(GB_SYSTEM_WINDOWS)
if (build_context.tilde_backend) {
MAIN_TIME_SECTION("Tilde Code Gen");
if (!tb_generate_code(checker)) {
return 1;
}
} else
#endif
{
MAIN_TIME_SECTION("LLVM API Code Gen"); MAIN_TIME_SECTION("LLVM API Code Gen");
lbGenerator *gen = gb_alloc_item(permanent_allocator(), lbGenerator); lbGenerator *gen = gb_alloc_item(permanent_allocator(), lbGenerator);
if (!lb_init_generator(gen, checker)) { if (!lb_init_generator(gen, checker)) {
@@ -2903,6 +2925,7 @@ int main(int arg_count, char const **arg_ptr) {
} }
remove_temp_files(gen); remove_temp_files(gen);
}
if (build_context.show_timings) { if (build_context.show_timings) {
show_timings(checker, &global_timings); show_timings(checker, &global_timings);
+18
View File
@@ -0,0 +1,18 @@
#if defined(GB_SYSTEM_WINDOWS)
#pragma warning(push)
#pragma warning(disable: 4200)
#pragma warning(disable: 4201)
#define restrict gb_restrict
#endif
#include "tilde/tb.h"
#if defined(GB_SYSTEM_WINDOWS)
#pragma warning(pop)
#endif
bool tb_generate_code(Checker *c) {
gb_printf_err("TODO(bill): implement Tilde Backend\n");
return false;
}