Utilize foreign import constant strings for foreign imports

This commit is contained in:
gingerBill
2024-06-04 15:49:17 +01:00
parent eacf2918ad
commit 606608c02b
3 changed files with 36 additions and 114 deletions
+5 -31
View File
@@ -5,47 +5,21 @@ import "core:c"
RAYGUI_SHARED :: #config(RAYGUI_SHARED, false) RAYGUI_SHARED :: #config(RAYGUI_SHARED, false)
when ODIN_OS == .Windows { when ODIN_OS == .Windows {
when RAYGUI_SHARED {
foreign import lib { foreign import lib {
"windows/rayguidll.lib", "windows/rayguidll.lib" when RAYGUI_SHARED else "windows/raygui.lib",
}
} else {
foreign import lib {
"windows/raygui.lib",
}
} }
} else when ODIN_OS == .Linux { } else when ODIN_OS == .Linux {
when RAYGUI_SHARED { foreign import lib {
foreign import lib "linux/libraygui.so" "linux/libraygui.so" when RAYGUI_SHARED else "linux/libraygui.a"
} else {
foreign import lib "linux/libraygui.a"
} }
} else when ODIN_OS == .Darwin { } else when ODIN_OS == .Darwin {
when ODIN_ARCH == .arm64 { when ODIN_ARCH == .arm64 {
when RAYGUI_SHARED {
foreign import lib { foreign import lib {
"macos-arm64/libraygui.dylib", "macos-arm64/libraygui.dylib" when RAYGUI_SHARED else "macos-arm64/libraygui.a",
} }
} else { } else {
foreign import lib { foreign import lib {
"macos-arm64/libraygui.a", "macos/libraygui.dylib" when RAYGUI_SHARED else "macos/libraygui.a",
// "system:Cocoa.framework",
// "system:OpenGL.framework",
// "system:IOKit.framework",
}
}
} else {
when RAYGUI_SHARED {
foreign import lib {
"macos/libraygui.dylib",
}
} else {
foreign import lib {
"macos/libraygui.a",
// "system:Cocoa.framework",
// "system:OpenGL.framework",
// "system:IOKit.framework",
}
} }
} }
} else { } else {
+6 -49
View File
@@ -97,77 +97,34 @@ MAX_TEXT_BUFFER_LENGTH :: #config(RAYLIB_MAX_TEXT_BUFFER_LENGTH, 1024)
RAYLIB_SHARED :: #config(RAYLIB_SHARED, false) RAYLIB_SHARED :: #config(RAYLIB_SHARED, false)
when ODIN_OS == .Windows { when ODIN_OS == .Windows {
when RAYLIB_SHARED { _WINDOWS_LIB :: "windows/raylib" +" dll" when RAYLIB_SHARED else "" + ".lib"
@(extra_linker_flags="/NODEFAULTLIB:msvcrt") @(extra_linker_flags="/NODEFAULTLIB:msvcrt")
foreign import lib { foreign import lib {
"windows/raylibdll.lib", "windows/raylibdll.lib" when RAYLIB_SHARED else "windows/raylib.lib" ,
"system:Winmm.lib", "system:Winmm.lib",
"system:Gdi32.lib", "system:Gdi32.lib",
"system:User32.lib", "system:User32.lib",
"system:Shell32.lib", "system:Shell32.lib",
} }
} else {
@(extra_linker_flags="/NODEFAULTLIB:libcmt")
foreign import lib {
"windows/raylib.lib",
"system:Winmm.lib",
"system:Gdi32.lib",
"system:User32.lib",
"system:Shell32.lib",
}
}
} else when ODIN_OS == .Linux { } else when ODIN_OS == .Linux {
when RAYLIB_SHARED {
foreign import lib { foreign import lib {
// Note(bumbread): I'm not sure why in `linux/` folder there are // Note(bumbread): I'm not sure why in `linux/` folder there are
// multiple copies of raylib.so, but since these bindings are for // multiple copies of raylib.so, but since these bindings are for
// particular version of the library, I better specify it. Ideally, // particular version of the library, I better specify it. Ideally,
// though, it's best specified in terms of major (.so.4) // though, it's best specified in terms of major (.so.4)
"linux/libraylib.so.500", "linux/libraylib.so.500" when RAYLIB_SHARED else "linux/libraylib.a",
"system:dl", "system:dl",
"system:pthread", "system:pthread",
} }
} else {
foreign import lib {
"linux/libraylib.a",
"system:dl",
"system:pthread",
}
}
} else when ODIN_OS == .Darwin { } else when ODIN_OS == .Darwin {
when ODIN_ARCH == .arm64 {
when RAYLIB_SHARED {
foreign import lib { foreign import lib {
"macos-arm64/libraylib.500.dylib", "macos" +
"-arm64" when ODIN_ARCH == .arm64 else "" +
"/libraylib" + ".500.dylib" when RAYLIB_SHARED else ".a",
"system:Cocoa.framework", "system:Cocoa.framework",
"system:OpenGL.framework", "system:OpenGL.framework",
"system:IOKit.framework", "system:IOKit.framework",
} }
} else {
foreign import lib {
"macos-arm64/libraylib.a",
"system:Cocoa.framework",
"system:OpenGL.framework",
"system:IOKit.framework",
}
}
} else {
when RAYLIB_SHARED {
foreign import lib {
"macos/libraylib.500.dylib",
"system:Cocoa.framework",
"system:OpenGL.framework",
"system:IOKit.framework",
}
} else {
foreign import lib {
"macos/libraylib.a",
"system:Cocoa.framework",
"system:OpenGL.framework",
"system:IOKit.framework",
}
}
}
} else { } else {
foreign import lib "system:raylib" foreign import lib "system:raylib"
} }
+1 -10
View File
@@ -122,21 +122,12 @@ when ODIN_OS == .Windows {
} else when ODIN_OS == .Linux { } else when ODIN_OS == .Linux {
foreign import lib "linux/libraylib.a" foreign import lib "linux/libraylib.a"
} else when ODIN_OS == .Darwin { } else when ODIN_OS == .Darwin {
when ODIN_ARCH == .arm64 {
foreign import lib { foreign import lib {
"macos-arm64/libraylib.a", "macos-arm64/libraylib.a" when ODIN_ARCH == .arm64 else "macos/libraylib.a",
"system:Cocoa.framework", "system:Cocoa.framework",
"system:OpenGL.framework", "system:OpenGL.framework",
"system:IOKit.framework", "system:IOKit.framework",
} }
} else {
foreign import lib {
"macos/libraylib.a",
"system:Cocoa.framework",
"system:OpenGL.framework",
"system:IOKit.framework",
}
}
} else { } else {
foreign import lib "system:raylib" foreign import lib "system:raylib"
} }