mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 23:58:50 +00:00
Add -tilde for working on the new compiler
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
+42
-19
@@ -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,27 +2894,38 @@ int main(int arg_count, char const **arg_ptr) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
MAIN_TIME_SECTION("LLVM API Code Gen");
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
lbGenerator *gen = gb_alloc_item(permanent_allocator(), lbGenerator);
|
if (build_context.tilde_backend) {
|
||||||
if (!lb_init_generator(gen, checker)) {
|
MAIN_TIME_SECTION("Tilde Code Gen");
|
||||||
return 1;
|
if (!tb_generate_code(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;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
remove_temp_files(gen);
|
} 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;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_temp_files(gen);
|
||||||
|
}
|
||||||
|
|
||||||
if (build_context.show_timings) {
|
if (build_context.show_timings) {
|
||||||
show_timings(checker, &global_timings);
|
show_timings(checker, &global_timings);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user