mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add @(ignore_duplicates) for foreign import declarations
This commit is contained in:
@@ -5040,6 +5040,12 @@ gb_internal DECL_ATTRIBUTE_PROC(foreign_import_decl_attribute) {
|
|||||||
ac->extra_linker_flags = ev.value_string;
|
ac->extra_linker_flags = ev.value_string;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
} else if (name == "ignore_duplicates") {
|
||||||
|
if (value != nullptr) {
|
||||||
|
error(elem, "Expected no parameter for '%.*s'", LIT(name));
|
||||||
|
}
|
||||||
|
ac->ignore_duplicates = true;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -5190,6 +5196,9 @@ gb_internal void check_add_foreign_import_decl(CheckerContext *ctx, Ast *decl) {
|
|||||||
if (ac.foreign_import_priority_index != 0) {
|
if (ac.foreign_import_priority_index != 0) {
|
||||||
e->LibraryName.priority_index = ac.foreign_import_priority_index;
|
e->LibraryName.priority_index = ac.foreign_import_priority_index;
|
||||||
}
|
}
|
||||||
|
if (ac.ignore_duplicates) {
|
||||||
|
e->LibraryName.ignore_duplicates = true;
|
||||||
|
}
|
||||||
String extra_linker_flags = string_trim_whitespace(ac.extra_linker_flags);
|
String extra_linker_flags = string_trim_whitespace(ac.extra_linker_flags);
|
||||||
if (extra_linker_flags.len != 0) {
|
if (extra_linker_flags.len != 0) {
|
||||||
e->LibraryName.extra_linker_flags = extra_linker_flags;
|
e->LibraryName.extra_linker_flags = extra_linker_flags;
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ struct AttributeContext {
|
|||||||
bool instrumentation_enter : 1;
|
bool instrumentation_enter : 1;
|
||||||
bool instrumentation_exit : 1;
|
bool instrumentation_exit : 1;
|
||||||
bool rodata : 1;
|
bool rodata : 1;
|
||||||
|
bool ignore_duplicates : 1;
|
||||||
u32 optimization_mode; // ProcedureOptimizationMode
|
u32 optimization_mode; // ProcedureOptimizationMode
|
||||||
i64 foreign_import_priority_index;
|
i64 foreign_import_priority_index;
|
||||||
String extra_linker_flags;
|
String extra_linker_flags;
|
||||||
|
|||||||
@@ -274,6 +274,7 @@ struct Entity {
|
|||||||
Slice<String> paths;
|
Slice<String> paths;
|
||||||
String name;
|
String name;
|
||||||
i64 priority_index;
|
i64 priority_index;
|
||||||
|
bool ignore_duplicates;
|
||||||
String extra_linker_flags;
|
String extra_linker_flags;
|
||||||
} LibraryName;
|
} LibraryName;
|
||||||
i32 Nil;
|
i32 Nil;
|
||||||
|
|||||||
Vendored
+2
@@ -26,8 +26,10 @@ import "core:c"
|
|||||||
import "base:intrinsics"
|
import "base:intrinsics"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -3,8 +3,10 @@ package sdl2
|
|||||||
import "core:c"
|
import "core:c"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Vendored
+2
@@ -4,8 +4,10 @@ import "core:c"
|
|||||||
import vk "vendor:vulkan"
|
import vk "vendor:vulkan"
|
||||||
|
|
||||||
when ODIN_OS == .Windows {
|
when ODIN_OS == .Windows {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "SDL2.lib"
|
foreign import lib "SDL2.lib"
|
||||||
} else {
|
} else {
|
||||||
|
@(ignore_duplicates)
|
||||||
foreign import lib "system:SDL2"
|
foreign import lib "system:SDL2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user