aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-07-08 12:07:11 +0100
committergingerBill <bill@gingerbill.org>2023-07-08 12:07:11 +0100
commit7ab531bd21d19338e2e6fb9ed12a9443cca95d7e (patch)
treeadb38df9e0cae9afb00d588a955f80a51b7a225e /src/main.cpp
parentd7af6de9b90d39f87ad189f3c998381e1f298b6d (diff)
Add `-tilde` for working on the new compiler
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp57
1 files changed, 40 insertions, 17 deletions
diff --git a/src/main.cpp b/src/main.cpp
index db2702b19..c16cfa35f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -71,6 +71,10 @@ gb_global Timings global_timings = {0};
#include "checker.cpp"
#include "docs.cpp"
+#if defined(GB_SYSTEM_WINDOWS)
+#include "tilde_backend.cpp"
+#endif
+
#include "llvm_backend.cpp"
#if defined(GB_SYSTEM_OSX)
@@ -696,6 +700,8 @@ enum BuildFlagKind {
BuildFlag_InternalIgnoreLLVMBuild,
#if defined(GB_SYSTEM_WINDOWS)
+ BuildFlag_Tilde,
+
BuildFlag_IgnoreVsSearch,
BuildFlag_ResourceFile,
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);
#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_ResourceFile, str_lit("resource"), 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;
break;
#if defined(GB_SYSTEM_WINDOWS)
+ case BuildFlag_Tilde:
+ build_context.tilde_backend = true;
+ break;
+
case BuildFlag_IgnoreVsSearch: {
GB_ASSERT(value.kind == ExactValue_Invalid);
build_context.ignore_microsoft_magic = true;
@@ -2882,27 +2894,38 @@ int main(int arg_count, char const **arg_ptr) {
return 0;
}
- MAIN_TIME_SECTION("LLVM API Code Gen");
- lbGenerator *gen = gb_alloc_item(permanent_allocator(), lbGenerator);
- if (!lb_init_generator(gen, checker)) {
- return 1;
- }
- if (lb_generate_code(gen)) {
- switch (build_context.build_mode) {
- case BuildMode_Executable:
- case BuildMode_DynamicLibrary:
- i32 result = linker_stage(gen);
- if (result) {
- if (build_context.show_timings) {
- show_timings(checker, &global_timings);
+#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");
+ lbGenerator *gen = gb_alloc_item(permanent_allocator(), lbGenerator);
+ if (!lb_init_generator(gen, checker)) {
+ return 1;
+ }
+ if (lb_generate_code(gen)) {
+ switch (build_context.build_mode) {
+ case BuildMode_Executable:
+ case BuildMode_DynamicLibrary:
+ i32 result = linker_stage(gen);
+ if (result) {
+ if (build_context.show_timings) {
+ show_timings(checker, &global_timings);
+ }
+ return result;
}
- return result;
+ break;
}
- break;
}
- }
- remove_temp_files(gen);
+ remove_temp_files(gen);
+ }
if (build_context.show_timings) {
show_timings(checker, &global_timings);