mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-20 05:20:28 +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;
|
||||
}
|
||||
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;
|
||||
}
|
||||
@@ -5190,6 +5196,9 @@ gb_internal void check_add_foreign_import_decl(CheckerContext *ctx, Ast *decl) {
|
||||
if (ac.foreign_import_priority_index != 0) {
|
||||
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);
|
||||
if (extra_linker_flags.len != 0) {
|
||||
e->LibraryName.extra_linker_flags = extra_linker_flags;
|
||||
|
||||
@@ -140,6 +140,7 @@ struct AttributeContext {
|
||||
bool instrumentation_enter : 1;
|
||||
bool instrumentation_exit : 1;
|
||||
bool rodata : 1;
|
||||
bool ignore_duplicates : 1;
|
||||
u32 optimization_mode; // ProcedureOptimizationMode
|
||||
i64 foreign_import_priority_index;
|
||||
String extra_linker_flags;
|
||||
|
||||
@@ -274,6 +274,7 @@ struct Entity {
|
||||
Slice<String> paths;
|
||||
String name;
|
||||
i64 priority_index;
|
||||
bool ignore_duplicates;
|
||||
String extra_linker_flags;
|
||||
} LibraryName;
|
||||
i32 Nil;
|
||||
|
||||
2
vendor/sdl2/sdl2.odin
vendored
2
vendor/sdl2/sdl2.odin
vendored
@@ -26,8 +26,10 @@ import "core:c"
|
||||
import "base:intrinsics"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_audio.odin
vendored
2
vendor/sdl2/sdl_audio.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_blendmode.odin
vendored
2
vendor/sdl2/sdl_blendmode.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_cpuinfo.odin
vendored
2
vendor/sdl2/sdl_cpuinfo.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_events.odin
vendored
2
vendor/sdl2/sdl_events.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_gamecontroller.odin
vendored
2
vendor/sdl2/sdl_gamecontroller.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_gesture_haptic.odin
vendored
2
vendor/sdl2/sdl_gesture_haptic.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_hints.odin
vendored
2
vendor/sdl2/sdl_hints.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_joystick.odin
vendored
2
vendor/sdl2/sdl_joystick.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_keyboard.odin
vendored
2
vendor/sdl2/sdl_keyboard.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_log.odin
vendored
2
vendor/sdl2/sdl_log.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_messagebox.odin
vendored
2
vendor/sdl2/sdl_messagebox.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_metal.odin
vendored
2
vendor/sdl2/sdl_metal.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_mouse.odin
vendored
2
vendor/sdl2/sdl_mouse.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_mutex.odin
vendored
2
vendor/sdl2/sdl_mutex.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_pixels.odin
vendored
2
vendor/sdl2/sdl_pixels.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_rect.odin
vendored
2
vendor/sdl2/sdl_rect.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_render.odin
vendored
2
vendor/sdl2/sdl_render.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_rwops.odin
vendored
2
vendor/sdl2/sdl_rwops.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_stdinc.odin
vendored
2
vendor/sdl2/sdl_stdinc.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_surface.odin
vendored
2
vendor/sdl2/sdl_surface.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_system.odin
vendored
2
vendor/sdl2/sdl_system.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_syswm.odin
vendored
2
vendor/sdl2/sdl_syswm.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_thread.odin
vendored
2
vendor/sdl2/sdl_thread.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_timer.odin
vendored
2
vendor/sdl2/sdl_timer.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_touch.odin
vendored
2
vendor/sdl2/sdl_touch.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_video.odin
vendored
2
vendor/sdl2/sdl_video.odin
vendored
@@ -3,8 +3,10 @@ package sdl2
|
||||
import "core:c"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
2
vendor/sdl2/sdl_vulkan.odin
vendored
2
vendor/sdl2/sdl_vulkan.odin
vendored
@@ -4,8 +4,10 @@ import "core:c"
|
||||
import vk "vendor:vulkan"
|
||||
|
||||
when ODIN_OS == .Windows {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "SDL2.lib"
|
||||
} else {
|
||||
@(ignore_duplicates)
|
||||
foreign import lib "system:SDL2"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user