From 09fa1c29cd014b4560b3c79c72db68af20ef8187 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 28 Jan 2024 21:05:53 +0000 Subject: [PATCH] Move `core:runtime` to `base:runtime`; keep alias around --- {core => base}/runtime/core.odin | 0 {core => base}/runtime/core_builtin.odin | 0 .../runtime/core_builtin_matrix.odin | 0 {core => base}/runtime/core_builtin_soa.odin | 0 .../runtime/default_allocators_arena.odin | 0 .../runtime/default_allocators_general.odin | 0 .../runtime/default_allocators_js.odin | 0 .../runtime/default_allocators_nil.odin | 0 .../runtime/default_allocators_wasi.odin | 0 .../runtime/default_allocators_windows.odin | 0 .../runtime/default_temporary_allocator.odin | 0 {core => base}/runtime/docs.odin | 0 .../runtime/dynamic_array_internal.odin | 0 .../runtime/dynamic_map_internal.odin | 0 {core => base}/runtime/entry_unix.odin | 0 .../runtime/entry_unix_no_crt_amd64.asm | 0 .../entry_unix_no_crt_darwin_arm64.asm | 0 .../runtime/entry_unix_no_crt_i386.asm | 0 {core => base}/runtime/entry_wasm.odin | 0 {core => base}/runtime/entry_windows.odin | 0 {core => base}/runtime/error_checks.odin | 0 {core => base}/runtime/internal.odin | 0 {core => base}/runtime/os_specific.odin | 0 {core => base}/runtime/os_specific_any.odin | 0 .../runtime/os_specific_darwin.odin | 0 .../runtime/os_specific_freestanding.odin | 0 {core => base}/runtime/os_specific_js.odin | 0 {core => base}/runtime/os_specific_wasi.odin | 0 .../runtime/os_specific_windows.odin | 0 {core => base}/runtime/print.odin | 0 {core => base}/runtime/procs.odin | 0 {core => base}/runtime/procs_darwin.odin | 0 {core => base}/runtime/procs_js.odin | 0 {core => base}/runtime/procs_wasm.odin | 0 .../runtime/procs_windows_amd64.asm | 0 .../runtime/procs_windows_amd64.odin | 0 .../runtime/procs_windows_i386.odin | 0 {core => base}/runtime/udivmod128.odin | 0 src/build_settings.cpp | 22 ++++++++++++++- src/checker.cpp | 28 +++++++++++++++++-- src/main.cpp | 1 + src/parser.cpp | 10 +++++-- 42 files changed, 54 insertions(+), 7 deletions(-) rename {core => base}/runtime/core.odin (100%) rename {core => base}/runtime/core_builtin.odin (100%) rename {core => base}/runtime/core_builtin_matrix.odin (100%) rename {core => base}/runtime/core_builtin_soa.odin (100%) rename {core => base}/runtime/default_allocators_arena.odin (100%) rename {core => base}/runtime/default_allocators_general.odin (100%) rename {core => base}/runtime/default_allocators_js.odin (100%) rename {core => base}/runtime/default_allocators_nil.odin (100%) rename {core => base}/runtime/default_allocators_wasi.odin (100%) rename {core => base}/runtime/default_allocators_windows.odin (100%) rename {core => base}/runtime/default_temporary_allocator.odin (100%) rename {core => base}/runtime/docs.odin (100%) rename {core => base}/runtime/dynamic_array_internal.odin (100%) rename {core => base}/runtime/dynamic_map_internal.odin (100%) rename {core => base}/runtime/entry_unix.odin (100%) rename {core => base}/runtime/entry_unix_no_crt_amd64.asm (100%) rename {core => base}/runtime/entry_unix_no_crt_darwin_arm64.asm (100%) rename {core => base}/runtime/entry_unix_no_crt_i386.asm (100%) rename {core => base}/runtime/entry_wasm.odin (100%) rename {core => base}/runtime/entry_windows.odin (100%) rename {core => base}/runtime/error_checks.odin (100%) rename {core => base}/runtime/internal.odin (100%) rename {core => base}/runtime/os_specific.odin (100%) rename {core => base}/runtime/os_specific_any.odin (100%) rename {core => base}/runtime/os_specific_darwin.odin (100%) rename {core => base}/runtime/os_specific_freestanding.odin (100%) rename {core => base}/runtime/os_specific_js.odin (100%) rename {core => base}/runtime/os_specific_wasi.odin (100%) rename {core => base}/runtime/os_specific_windows.odin (100%) rename {core => base}/runtime/print.odin (100%) rename {core => base}/runtime/procs.odin (100%) rename {core => base}/runtime/procs_darwin.odin (100%) rename {core => base}/runtime/procs_js.odin (100%) rename {core => base}/runtime/procs_wasm.odin (100%) rename {core => base}/runtime/procs_windows_amd64.asm (100%) rename {core => base}/runtime/procs_windows_amd64.odin (100%) rename {core => base}/runtime/procs_windows_i386.odin (100%) rename {core => base}/runtime/udivmod128.odin (100%) diff --git a/core/runtime/core.odin b/base/runtime/core.odin similarity index 100% rename from core/runtime/core.odin rename to base/runtime/core.odin diff --git a/core/runtime/core_builtin.odin b/base/runtime/core_builtin.odin similarity index 100% rename from core/runtime/core_builtin.odin rename to base/runtime/core_builtin.odin diff --git a/core/runtime/core_builtin_matrix.odin b/base/runtime/core_builtin_matrix.odin similarity index 100% rename from core/runtime/core_builtin_matrix.odin rename to base/runtime/core_builtin_matrix.odin diff --git a/core/runtime/core_builtin_soa.odin b/base/runtime/core_builtin_soa.odin similarity index 100% rename from core/runtime/core_builtin_soa.odin rename to base/runtime/core_builtin_soa.odin diff --git a/core/runtime/default_allocators_arena.odin b/base/runtime/default_allocators_arena.odin similarity index 100% rename from core/runtime/default_allocators_arena.odin rename to base/runtime/default_allocators_arena.odin diff --git a/core/runtime/default_allocators_general.odin b/base/runtime/default_allocators_general.odin similarity index 100% rename from core/runtime/default_allocators_general.odin rename to base/runtime/default_allocators_general.odin diff --git a/core/runtime/default_allocators_js.odin b/base/runtime/default_allocators_js.odin similarity index 100% rename from core/runtime/default_allocators_js.odin rename to base/runtime/default_allocators_js.odin diff --git a/core/runtime/default_allocators_nil.odin b/base/runtime/default_allocators_nil.odin similarity index 100% rename from core/runtime/default_allocators_nil.odin rename to base/runtime/default_allocators_nil.odin diff --git a/core/runtime/default_allocators_wasi.odin b/base/runtime/default_allocators_wasi.odin similarity index 100% rename from core/runtime/default_allocators_wasi.odin rename to base/runtime/default_allocators_wasi.odin diff --git a/core/runtime/default_allocators_windows.odin b/base/runtime/default_allocators_windows.odin similarity index 100% rename from core/runtime/default_allocators_windows.odin rename to base/runtime/default_allocators_windows.odin diff --git a/core/runtime/default_temporary_allocator.odin b/base/runtime/default_temporary_allocator.odin similarity index 100% rename from core/runtime/default_temporary_allocator.odin rename to base/runtime/default_temporary_allocator.odin diff --git a/core/runtime/docs.odin b/base/runtime/docs.odin similarity index 100% rename from core/runtime/docs.odin rename to base/runtime/docs.odin diff --git a/core/runtime/dynamic_array_internal.odin b/base/runtime/dynamic_array_internal.odin similarity index 100% rename from core/runtime/dynamic_array_internal.odin rename to base/runtime/dynamic_array_internal.odin diff --git a/core/runtime/dynamic_map_internal.odin b/base/runtime/dynamic_map_internal.odin similarity index 100% rename from core/runtime/dynamic_map_internal.odin rename to base/runtime/dynamic_map_internal.odin diff --git a/core/runtime/entry_unix.odin b/base/runtime/entry_unix.odin similarity index 100% rename from core/runtime/entry_unix.odin rename to base/runtime/entry_unix.odin diff --git a/core/runtime/entry_unix_no_crt_amd64.asm b/base/runtime/entry_unix_no_crt_amd64.asm similarity index 100% rename from core/runtime/entry_unix_no_crt_amd64.asm rename to base/runtime/entry_unix_no_crt_amd64.asm diff --git a/core/runtime/entry_unix_no_crt_darwin_arm64.asm b/base/runtime/entry_unix_no_crt_darwin_arm64.asm similarity index 100% rename from core/runtime/entry_unix_no_crt_darwin_arm64.asm rename to base/runtime/entry_unix_no_crt_darwin_arm64.asm diff --git a/core/runtime/entry_unix_no_crt_i386.asm b/base/runtime/entry_unix_no_crt_i386.asm similarity index 100% rename from core/runtime/entry_unix_no_crt_i386.asm rename to base/runtime/entry_unix_no_crt_i386.asm diff --git a/core/runtime/entry_wasm.odin b/base/runtime/entry_wasm.odin similarity index 100% rename from core/runtime/entry_wasm.odin rename to base/runtime/entry_wasm.odin diff --git a/core/runtime/entry_windows.odin b/base/runtime/entry_windows.odin similarity index 100% rename from core/runtime/entry_windows.odin rename to base/runtime/entry_windows.odin diff --git a/core/runtime/error_checks.odin b/base/runtime/error_checks.odin similarity index 100% rename from core/runtime/error_checks.odin rename to base/runtime/error_checks.odin diff --git a/core/runtime/internal.odin b/base/runtime/internal.odin similarity index 100% rename from core/runtime/internal.odin rename to base/runtime/internal.odin diff --git a/core/runtime/os_specific.odin b/base/runtime/os_specific.odin similarity index 100% rename from core/runtime/os_specific.odin rename to base/runtime/os_specific.odin diff --git a/core/runtime/os_specific_any.odin b/base/runtime/os_specific_any.odin similarity index 100% rename from core/runtime/os_specific_any.odin rename to base/runtime/os_specific_any.odin diff --git a/core/runtime/os_specific_darwin.odin b/base/runtime/os_specific_darwin.odin similarity index 100% rename from core/runtime/os_specific_darwin.odin rename to base/runtime/os_specific_darwin.odin diff --git a/core/runtime/os_specific_freestanding.odin b/base/runtime/os_specific_freestanding.odin similarity index 100% rename from core/runtime/os_specific_freestanding.odin rename to base/runtime/os_specific_freestanding.odin diff --git a/core/runtime/os_specific_js.odin b/base/runtime/os_specific_js.odin similarity index 100% rename from core/runtime/os_specific_js.odin rename to base/runtime/os_specific_js.odin diff --git a/core/runtime/os_specific_wasi.odin b/base/runtime/os_specific_wasi.odin similarity index 100% rename from core/runtime/os_specific_wasi.odin rename to base/runtime/os_specific_wasi.odin diff --git a/core/runtime/os_specific_windows.odin b/base/runtime/os_specific_windows.odin similarity index 100% rename from core/runtime/os_specific_windows.odin rename to base/runtime/os_specific_windows.odin diff --git a/core/runtime/print.odin b/base/runtime/print.odin similarity index 100% rename from core/runtime/print.odin rename to base/runtime/print.odin diff --git a/core/runtime/procs.odin b/base/runtime/procs.odin similarity index 100% rename from core/runtime/procs.odin rename to base/runtime/procs.odin diff --git a/core/runtime/procs_darwin.odin b/base/runtime/procs_darwin.odin similarity index 100% rename from core/runtime/procs_darwin.odin rename to base/runtime/procs_darwin.odin diff --git a/core/runtime/procs_js.odin b/base/runtime/procs_js.odin similarity index 100% rename from core/runtime/procs_js.odin rename to base/runtime/procs_js.odin diff --git a/core/runtime/procs_wasm.odin b/base/runtime/procs_wasm.odin similarity index 100% rename from core/runtime/procs_wasm.odin rename to base/runtime/procs_wasm.odin diff --git a/core/runtime/procs_windows_amd64.asm b/base/runtime/procs_windows_amd64.asm similarity index 100% rename from core/runtime/procs_windows_amd64.asm rename to base/runtime/procs_windows_amd64.asm diff --git a/core/runtime/procs_windows_amd64.odin b/base/runtime/procs_windows_amd64.odin similarity index 100% rename from core/runtime/procs_windows_amd64.odin rename to base/runtime/procs_windows_amd64.odin diff --git a/core/runtime/procs_windows_i386.odin b/base/runtime/procs_windows_i386.odin similarity index 100% rename from core/runtime/procs_windows_i386.odin rename to base/runtime/procs_windows_i386.odin diff --git a/core/runtime/udivmod128.odin b/base/runtime/udivmod128.odin similarity index 100% rename from core/runtime/udivmod128.odin rename to base/runtime/udivmod128.odin diff --git a/src/build_settings.cpp b/src/build_settings.cpp index af518bcb4..8c9e13178 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1161,7 +1161,27 @@ gb_internal String get_fullpath_relative(gbAllocator a, String base_dir, String } -gb_internal String get_fullpath_core(gbAllocator a, String path) { +gb_internal String get_fullpath_base_collection(gbAllocator a, String path) { + String module_dir = odin_root_dir(); + + String base = str_lit("base/"); + + isize str_len = module_dir.len + base.len + path.len; + u8 *str = gb_alloc_array(heap_allocator(), u8, str_len+1); + defer (gb_free(heap_allocator(), str)); + + isize i = 0; + gb_memmove(str+i, module_dir.text, module_dir.len); i += module_dir.len; + gb_memmove(str+i, base.text, base.len); i += base.len; + gb_memmove(str+i, path.text, path.len); i += path.len; + str[i] = 0; + + String res = make_string(str, i); + res = string_trim_whitespace(res); + return path_to_fullpath(a, res); +} + +gb_internal String get_fullpath_core_collection(gbAllocator a, String path) { String module_dir = odin_root_dir(); String core = str_lit("core/"); diff --git a/src/checker.cpp b/src/checker.cpp index 498fce7d2..563bb2781 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -770,15 +770,17 @@ gb_internal void add_type_info_dependency(CheckerInfo *info, DeclInfo *d, Type * rw_mutex_unlock(&d->type_info_deps_mutex); } -gb_internal AstPackage *get_core_package(CheckerInfo *info, String name) { + +gb_internal AstPackage *get_runtime_package(CheckerInfo *info) { + String name = str_lit("runtime"); gbAllocator a = heap_allocator(); - String path = get_fullpath_core(a, name); + String path = get_fullpath_base_collection(a, name); defer (gb_free(a, path.text)); auto found = string_map_get(&info->packages, path); if (found == nullptr) { gb_printf_err("Name: %.*s\n", LIT(name)); gb_printf_err("Fullpath: %.*s\n", LIT(path)); - + for (auto const &entry : info->packages) { gb_printf_err("%.*s\n", LIT(entry.key)); } @@ -787,6 +789,26 @@ gb_internal AstPackage *get_core_package(CheckerInfo *info, String name) { return *found; } +gb_internal AstPackage *get_core_package(CheckerInfo *info, String name) { + if (name == "runtime") { + return get_runtime_package(info); + } + + gbAllocator a = heap_allocator(); + String path = get_fullpath_core_collection(a, name); + defer (gb_free(a, path.text)); + auto found = string_map_get(&info->packages, path); + if (found == nullptr) { + gb_printf_err("Name: %.*s\n", LIT(name)); + gb_printf_err("Fullpath: %.*s\n", LIT(path)); + + for (auto const &entry : info->packages) { + gb_printf_err("%.*s\n", LIT(entry.key)); + } + GB_ASSERT_MSG(found != nullptr, "Missing core package %.*s", LIT(name)); + } + return *found; +} gb_internal void add_package_dependency(CheckerContext *c, char const *package_name, char const *name) { String n = make_string_c(name); diff --git a/src/main.cpp b/src/main.cpp index 19271d667..5cff99160 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2376,6 +2376,7 @@ int main(int arg_count, char const **arg_ptr) { TIME_SECTION("init default library collections"); array_init(&library_collections, heap_allocator()); // NOTE(bill): 'core' cannot be (re)defined by the user + add_library_collection(str_lit("base"), get_fullpath_relative(heap_allocator(), odin_root_dir(), str_lit("base"))); add_library_collection(str_lit("core"), get_fullpath_relative(heap_allocator(), odin_root_dir(), str_lit("core"))); add_library_collection(str_lit("vendor"), get_fullpath_relative(heap_allocator(), odin_root_dir(), str_lit("vendor"))); diff --git a/src/parser.cpp b/src/parser.cpp index b16a88de5..9ed3e32f9 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -5460,6 +5460,11 @@ gb_internal bool determine_path_from_string(BlockingMutex *file_mutex, Ast *node if (collection_name.len > 0) { + // NOTE(bill): `base:runtime` == `core:runtime` + if (collection_name == "core" && string_starts_with(file_str, str_lit("runtime"))) { + collection_name = str_lit("base"); + } + if (collection_name == "system") { if (node->kind != Ast_ForeignImportDecl) { syntax_error(node, "The library collection 'system' is restrict for 'foreign_library'"); @@ -5489,7 +5494,6 @@ gb_internal bool determine_path_from_string(BlockingMutex *file_mutex, Ast *node #endif } - if (is_package_name_reserved(file_str)) { *path = file_str; if (collection_name == "core") { @@ -6133,7 +6137,7 @@ gb_internal ParseFileError parse_packages(Parser *p, String init_filename) { { // Add these packages serially and then process them parallel TokenPos init_pos = {}; { - String s = get_fullpath_core(permanent_allocator(), str_lit("runtime")); + String s = get_fullpath_base_collection(permanent_allocator(), str_lit("runtime")); try_add_import_path(p, s, s, init_pos, Package_Runtime); } @@ -6141,7 +6145,7 @@ gb_internal ParseFileError parse_packages(Parser *p, String init_filename) { p->init_fullpath = init_fullpath; if (build_context.command_kind == Command_test) { - String s = get_fullpath_core(permanent_allocator(), str_lit("testing")); + String s = get_fullpath_core_collection(permanent_allocator(), str_lit("testing")); try_add_import_path(p, s, s, init_pos, Package_Normal); }