This commit is contained in:
gingerBill
2022-03-03 13:54:31 +00:00
59 changed files with 386 additions and 253 deletions

1
.github/FUNDING.yml vendored
View File

@@ -1,3 +1,4 @@
# These are supported funding model platforms
github: odin-lang
patreon: gingerbill

View File

@@ -1,6 +1,6 @@
package crypto
when ODIN_OS != .Linux && ODIN_OS != .OpenBSD {
when ODIN_OS != .Linux && ODIN_OS != .OpenBSD && ODIN_OS != .Windows {
_rand_bytes :: proc (dst: []byte) {
unimplemented("crypto: rand_bytes not supported on this OS")
}

View File

@@ -0,0 +1,23 @@
package crypto
import win32 "core:sys/windows"
import "core:os"
import "core:fmt"
_rand_bytes :: proc(dst: []byte) {
ret := (os.Errno)(win32.BCryptGenRandom(nil, raw_data(dst), u32(len(dst)), win32.BCRYPT_USE_SYSTEM_PREFERRED_RNG))
if ret != os.ERROR_NONE {
switch ret {
case os.ERROR_INVALID_HANDLE:
// The handle to the first parameter is invalid.
// This should not happen here, since we explicitly pass nil to it
panic("crypto: BCryptGenRandom Invalid handle for hAlgorithm")
case os.ERROR_INVALID_PARAMETER:
// One of the parameters was invalid
panic("crypto: BCryptGenRandom Invalid parameter")
case:
// Unknown error
panic(fmt.tprintf("crypto: BCryptGenRandom failed: %d\n", ret))
}
}
}

View File

@@ -605,7 +605,7 @@ fmt_bad_verb :: proc(using fi: ^Info, verb: rune) {
fmt_bool :: proc(using fi: ^Info, b: bool, verb: rune) {
switch verb {
case 't', 'v':
io.write_string(writer, b ? "true" : "false", &fi.n)
fmt_string(fi, b ? "true" : "false", 's')
case:
fmt_bad_verb(fi, verb)
}
@@ -943,11 +943,27 @@ fmt_float :: proc(fi: ^Info, v: f64, bit_size: int, verb: rune) {
fmt_string :: proc(fi: ^Info, s: string, verb: rune) {
switch verb {
case 's', 'v':
io.write_string(fi.writer, s, &fi.n)
if fi.width_set && len(s) < fi.width {
for _ in 0..<fi.width - len(s) {
io.write_byte(fi.writer, ' ', &fi.n)
if fi.width_set {
if fi.width > len(s) {
if fi.minus {
io.write_string(fi.writer, s, &fi.n)
}
for _ in 0..<fi.width - len(s) {
io.write_byte(fi.writer, ' ', &fi.n)
}
if !fi.minus {
io.write_string(fi.writer, s, &fi.n)
}
}
else {
io.write_string(fi.writer, s[:fi.width], &fi.n)
}
}
else
{
io.write_string(fi.writer, s, &fi.n)
}
case 'q': // quoted string
@@ -1058,7 +1074,7 @@ fmt_enum :: proc(fi: ^Info, v: any, verb: rune) {
fmt_arg(fi, any{v.data, runtime.type_info_base(e.base).id}, verb)
case 's', 'v':
if str, ok := enum_value_to_string(v); ok {
io.write_string(fi.writer, str, &fi.n)
fmt_string(fi, str, 's')
} else {
io.write_string(fi.writer, "%!(BAD ENUM VALUE=", &fi.n)
fmt_arg(fi, any{v.data, runtime.type_info_base(e.base).id}, 'i')

View File

@@ -1,4 +1,3 @@
//+build windows
package all
import botan "vendor:botan"
@@ -16,24 +15,12 @@ import IMG "vendor:sdl2/image"
import MIX "vendor:sdl2/mixer"
import TTF "vendor:sdl2/ttf"
import stb_easy_font "vendor:stb/easy_font"
import stbi "vendor:stb/image"
import stbrp "vendor:stb/rect_pack"
import stbtt "vendor:stb/truetype"
import stb_vorbis "vendor:stb/vorbis"
import vk "vendor:vulkan"
import D3D11 "vendor:directx/d3d11"
import D3D12 "vendor:directx/d3d12"
import DXGI "vendor:directx/dxgi"
// note these are technicaly darwin only but they are added to aid with documentation generation
import NS "vendor:darwin/Foundation"
import MTL "vendor:darwin/Metal"
import CA "vendor:darwin/QuartzCore"
_ :: botan
_ :: ENet
_ :: gl
@@ -47,15 +34,7 @@ _ :: SDLNet
_ :: IMG
_ :: MIX
_ :: TTF
_ :: stb_easy_font
_ :: stbi
_ :: stbrp
_ :: stbtt
_ :: stb_vorbis
_ :: vk
_ :: D3D11
_ :: D3D12
_ :: DXGI
_ :: NS
_ :: MTL
_ :: CA
_ :: CA

View File

@@ -0,0 +1,10 @@
//+build windows
package all
import D3D11 "vendor:directx/d3d11"
import D3D12 "vendor:directx/d3d12"
import DXGI "vendor:directx/dxgi"
_ :: D3D11
_ :: D3D12
_ :: DXGI

View File

@@ -0,0 +1,15 @@
//+build windows, linux
package all
import stb_easy_font "vendor:stb/easy_font"
import stbi "vendor:stb/image"
import stbrp "vendor:stb/rect_pack"
import stbtt "vendor:stb/truetype"
import stb_vorbis "vendor:stb/vorbis"
_ :: stb_easy_font
_ :: stbi
_ :: stbrp
_ :: stbtt
_ :: stb_vorbis

View File

@@ -1,4 +1,4 @@
//+build linux, darwin, freebsd
//+build linux, darwin, freebsd, openbsd
package ENet
// When we implement the appropriate bindings for Unix, the section separated
@@ -14,7 +14,7 @@ import "core:c"
@(private="file") FD_ZERO :: #force_inline proc(s: ^fd_set) {
for i := size_of(fd_set) / size_of(c.long); i != 0; i -= 1 {
s.fds_bits[i] = 0;
s.fds_bits[i] = 0
}
}
@@ -56,4 +56,4 @@ SOCKETSET_REMOVE :: #force_inline proc(sockset: ^SocketSet, socket: Socket) {
SOCKSET_CHECK :: #force_inline proc(sockset: ^SocketSet, socket: Socket) -> bool {
return FD_ISSET(i32(socket), cast(^fd_set)sockset)
}
}

View File

@@ -142,11 +142,7 @@ fpe_t :: ^fpe_struct
when ODIN_OS == .Windows {
foreign import botan_lib "botan.lib"
} else when ODIN_OS == .Linux {
foreign import botan_lib "system:botan-2"
} else when ODIN_OS == .Darwin {
foreign import botan_lib "system:botan-2"
} else when ODIN_OS == .OpenBSD {
} else {
foreign import botan_lib "system:botan-2"
}

View File

@@ -3,8 +3,6 @@ package glfw_bindings
import "core:c"
import vk "vendor:vulkan"
when ODIN_OS == .Linux { foreign import glfw "system:glfw" } // TODO: Add the billion-or-so static libs to link to in linux
when ODIN_OS == .Darwin { foreign import glfw "system:glfw" }
when ODIN_OS == .Windows {
foreign import glfw {
"../lib/glfw3_mt.lib",
@@ -12,6 +10,11 @@ when ODIN_OS == .Windows {
"system:gdi32.lib",
"system:shell32.lib",
}
} else when ODIN_OS == .Linux {
// TODO: Add the billion-or-so static libs to link to in linux
foreign import glfw "system:glfw"
} else {
foreign import glfw "system:glfw"
}
#assert(size_of(c.int) == size_of(b32))

View File

@@ -2,8 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
handle :: distinct rawptr

View File

@@ -2,9 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
/************************************************************************************************************************************************************
*************************************************************************************************************************************************************

View File

@@ -2,10 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
/************************************************************************************************************************************************************
@@ -164,4 +167,4 @@ foreign lib {
decode_from_vfs :: proc(pVFS: ^vfs, pFilePath: cstring, pConfig: ^decoder_config, pFrameCountOut: ^u64, ppPCMFramesOut: ^rawptr) -> result ---
decode_file :: proc(pFilePath: cstring, pConfig: ^decoder_config, pFrameCountOut: ^u64, ppPCMFramesOut: ^rawptr) -> result ---
decode_memory :: proc(pData: rawptr, dataSize: c.size_t, pConfig: ^decoder_config, pFrameCountOut: ^u64, ppPCMFramesOut: ^rawptr) -> result ---
}
}

View File

@@ -1,7 +1,12 @@
package miniaudio
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
import "core:c"

View File

@@ -6,7 +6,7 @@ SUPPORT_WASAPI :: ODIN_OS == .Windows
SUPPORT_DSOUND :: ODIN_OS == .Windows
SUPPORT_WINMM :: ODIN_OS == .Windows
SUPPORT_COREAUDIO :: ODIN_OS == .Darwin
SUPPORT_SNDIO :: false // ODIN_OS == .OpenBSD
SUPPORT_SNDIO :: ODIN_OS == .OpenBSD
SUPPORT_AUDIO4 :: false // ODIN_OS == .OpenBSD || ODIN_OS == .NetBSD
SUPPORT_OSS :: ODIN_OS == .FreeBSD
SUPPORT_PULSEAUDIO :: ODIN_OS == .Linux
@@ -739,8 +739,8 @@ context_type :: struct {
pa_stream_writable_size: proc "system" (),
pa_stream_readable_size: proc "system" (),
/*pa_mainloop**/ pMainLoop: ptr,
/*pa_context**/ pPulseContext: ptr,
/*pa_mainloop**/ pMainLoop: rawptr,
/*pa_context**/ pPulseContext: rawptr,
} when SUPPORT_PULSEAUDIO else struct {}),
jack: (struct {
@@ -791,7 +791,7 @@ context_type :: struct {
AudioUnitInitialize: proc "system" (),
AudioUnitRender: proc "system" (),
/*AudioComponent*/ component: ptr,
/*AudioComponent*/ component: rawptr,
noAudioSessionDeactivate: b32, /* For tracking whether or not the iOS audio session should be explicitly deactivated. Set from the config in ma_context_init__coreaudio(). */
} when SUPPORT_COREAUDIO else struct {}),

View File

@@ -2,8 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
/************************************************************************************************************************************************************
@@ -49,4 +54,4 @@ foreign lib {
encoder_init_file_w :: proc(pFilePath: [^]c.wchar_t, pConfig: ^encoder_config, pEncoder: ^encoder) -> result ---
encoder_uninit :: proc(pEncoder: ^encoder) ---
encoder_write_pcm_frames :: proc(pEncoder: ^encoder, FramesIn: rawptr, frameCount: u64) -> u64 ---
}
}

View File

@@ -1,7 +1,12 @@
package miniaudio
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
/**************************************************************************************************************************************************************

View File

@@ -2,8 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
waveform_type :: enum c.int {
sine,
@@ -82,4 +87,4 @@ foreign lib {
noise_set_amplitude :: proc(pNoise: ^noise, amplitude: f64) -> result ---
noise_set_seed :: proc(pNoise: ^noise, seed: i32) -> result ---
noise_set_type :: proc(pNoise: ^noise, type: noise_type) -> result ---
}
}

View File

@@ -2,8 +2,13 @@ package miniaudio
import c "core:c/libc"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
MAX_LOG_CALLBACKS :: 4
@@ -32,4 +37,4 @@ foreign lib {
log_post :: proc(pLog: ^log, level: u32, pMessage: cstring) -> result ---
log_postv :: proc(pLog: ^log, level: u32, pFormat: cstring, args: c.va_list) -> result ---
log_postf :: proc(pLog: ^log, level: u32, pFormat: cstring, #c_vararg args: ..any) -> result ---
}
}

View File

@@ -1,6 +1,6 @@
all:
mkdir -p ../lib
gcc -c -O2 -Os -fPIC miniaudio.c
ar rcs ../lib/miniaudio.a miniaudio.o
#gcc -fPIC -shared -Wl,-soname=miniaudio.so -o ../lib/miniaudio.so miniaudio.o
$(CC) -c -O2 -Os -fPIC miniaudio.c
$(AR) rcs ../lib/miniaudio.a miniaudio.o
#$(CC) -fPIC -shared -Wl,-soname=miniaudio.so -o ../lib/miniaudio.so miniaudio.o
rm *.o

View File

@@ -1,7 +1,12 @@
package miniaudio
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
@(default_calling_convention="c", link_prefix="ma_")
foreign lib {
@@ -228,4 +233,4 @@ foreign lib {
audio_buffer_get_cursor_in_pcm_frames :: proc(pAudioBuffer: ^audio_buffer, pCursor: ^u64) -> result ---
audio_buffer_get_length_in_pcm_frames :: proc(pAudioBuffer: ^audio_buffer, pLength: ^u64) -> result ---
audio_buffer_get_available_frames :: proc(pAudioBuffer: ^audio_buffer, pAvailableFrames: ^u64) -> result ---
}
}

View File

@@ -2,8 +2,13 @@ package miniaudio
import "core:c"
when ODIN_OS == .Windows { foreign import lib "lib/miniaudio.lib" }
when ODIN_OS == .Linux { foreign import lib "lib/miniaudio.a" }
when ODIN_OS == .Windows {
foreign import lib "lib/miniaudio.lib"
} else when ODIN_OS == .Linux {
foreign import lib "lib/miniaudio.a"
} else {
foreign import lib "system:miniaudio"
}
/************************************************************************************************************************************************************

View File

@@ -9,6 +9,8 @@ when ODIN_OS == .Windows {
"system:Winmm.lib",
"system:Advapi32.lib",
}
} else {
foreign import lib "system:portmidi"
}
#assert(size_of(b32) == size_of(c.int))
@@ -519,4 +521,4 @@ foreign lib {
WriteSysEx() writes a timestamped system-exclusive midi message.
*/
WriteSysEx :: proc(stream: Stream, whence: Timestamp, msg: cstring) -> Error ---
}
}

View File

@@ -7,7 +7,11 @@ package portmidi
import "core:c"
when ODIN_OS == .Windows { foreign import lib "portmidi_s.lib" }
when ODIN_OS == .Windows {
foreign import lib "portmidi_s.lib"
} else {
foreign import lib "system:portmidi"
}
Queue :: distinct rawptr
@@ -118,4 +122,4 @@ foreign lib {
state, returns .NoError if successfully set overflow state.
*/
SetOverflow :: proc(queue: Queue) -> Error ---
}
}

View File

@@ -99,15 +99,17 @@ when ODIN_OS == .Windows {
"system:User32.lib",
"system:Shell32.lib",
}
}
when ODIN_OS == .Linux {
} else when ODIN_OS == .Linux {
foreign import lib {
"linux/libraylib.a",
"system:dl",
"system:pthread",
}
} else when ODIN_OS == .Darwin {
foreign import lib "macos/libraylib.a"
} else {
foreign import lib "system:raylib"
}
when ODIN_OS == .Darwin { foreign import lib "macos/libraylib.a" }
VERSION :: "4.0"
@@ -1150,9 +1152,9 @@ foreign lib {
DrawRectangleGradientH :: proc(posX, posY, width, height: c.int, color1: Color, color2: Color) --- // Draw a horizontal-gradient-filled rectangle
DrawRectangleGradientEx :: proc(rec: Rectangle, col1, col2, col3, col4: Color) --- // Draw a gradient-filled rectangle with custom vertex colors
DrawRectangleLines :: proc(posX, posY, width, height: c.int, color: Color) --- // Draw rectangle outline
DrawRectangleLinesEx :: proc(rec: Rectangle, lineThick: c.int, color: Color) --- // Draw rectangle outline with extended parameters
DrawRectangleLinesEx :: proc(rec: Rectangle, lineThick: f32, color: Color) --- // Draw rectangle outline with extended parameters
DrawRectangleRounded :: proc(rec: Rectangle, roundness: f32, segments: c.int, color: Color) --- // Draw rectangle with rounded edges
DrawRectangleRoundedLines :: proc(rec: Rectangle, roundness: f32, segments: c.int, lineThick: c.int, color: Color) --- // Draw rectangle with rounded edges outline
DrawRectangleRoundedLines :: proc(rec: Rectangle, roundness: f32, segments: c.int, lineThick: f32, color: Color) --- // Draw rectangle with rounded edges outline
DrawTriangle :: proc(v1, v2, v3: Vector2, color: Color) --- // Draw a color-filled triangle (vertex in counter-clockwise order!)
DrawTriangleLines :: proc(v1, v2, v3: Vector2, color: Color) --- // Draw triangle outline (vertex in counter-clockwise order!)
DrawTriangleFan :: proc(points: [^]Vector2, pointsCount: c.int, color: Color) --- // Draw a triangle fan defined by points (first vertex is the center)

View File

@@ -10,9 +10,13 @@ when ODIN_OS == .Windows {
"system:User32.lib",
"system:Shell32.lib",
}
} else when ODIN_OS == .Linux {
foreign import lib "linux/libraylib.a"
} else when ODIN_OS == .Darwin {
foreign import lib "macos/libraylib.a"
} else {
foreign import lib "system:raylib"
}
when ODIN_OS == .Linux { foreign import lib "linux/libraylib.a" }
when ODIN_OS == .Darwin { foreign import lib "macos/libraylib.a" }
GRAPHICS_API_OPENGL_11 :: false
GRAPHICS_API_OPENGL_21 :: true
@@ -378,4 +382,4 @@ foreign lib {
// Quick and dirty cube/quad buffers load->draw->unload
rlLoadDrawCube :: proc() --- // Load and draw a cube
rlLoadDrawQuad :: proc() --- // Load and draw a quad
}
}

View File

@@ -3,10 +3,11 @@ package sdl2_image
import "core:c"
import SDL ".."
when ODIN_OS == .Windows { foreign import lib "SDL2_image.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2_image" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2_image" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_image" }
when ODIN_OS == .Windows {
foreign import lib "SDL2_image.lib"
} else {
foreign import lib "system:SDL2_image"
}
bool :: SDL.bool
@@ -119,4 +120,4 @@ foreign lib {
/* Individual loading functions */
LoadGIFAnimation_RW :: proc(src: ^SDL.RWops) -> ^Animation ---
}
}

View File

@@ -3,11 +3,11 @@ package sdl2_mixer
import "core:c"
import SDL ".."
when ODIN_OS == .Windows { foreign import lib "SDL2_mixer.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2_mixer" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2_mixer" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_mixer" }
when ODIN_OS == .Windows {
foreign import lib "SDL2_mixer.lib"
} else {
foreign import lib "system:SDL2_mixer"
}
MAJOR_VERSION :: 2
MINOR_VERSION :: 0

View File

@@ -3,10 +3,11 @@ package sdl2_net
import "core:c"
import SDL ".."
when ODIN_OS == .Windows { foreign import lib "SDL2_net.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2_net" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2_net" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_net" }
when ODIN_OS == .Windows {
foreign import lib "SDL2_net.lib"
} else {
foreign import lib "system:SDL2_net"
}
bool :: SDL.bool
@@ -188,4 +189,4 @@ Read16 :: #force_inline proc "c" (areap: rawptr) -> u16 {
Read32 :: #force_inline proc "c" (areap: rawptr) -> u32 {
area := (^[4]u8)(areap)
return u32(area[0])<<24 | u32(area[1])<<16 | u32(area[2])<<8 | u32(area[3])
}
}

11
vendor/sdl2/sdl2.odin vendored
View File

@@ -25,10 +25,11 @@ package sdl2
import "core:c"
import "core:intrinsics"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
version :: struct {
major: u8, /**< major version */
@@ -314,4 +315,4 @@ foreign lib {
IsShapedWindow :: proc(window: ^Window) -> bool ---
SetWindowShape :: proc(window: ^Window, shape: ^Surface, shape_mode: ^WindowShapeMode) -> c.int ---
GetShapedWindowMode :: proc(window: ^Window, shape_mode: ^WindowShapeMode) -> c.int ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
/**
* \brief Audio format flags.

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
/**
* \brief The blend mode used in SDL_RenderCopy() and drawing operations.
@@ -62,4 +63,4 @@ BlendFactor :: enum c.int {
foreign lib {
ComposeCustomBlendMode :: proc(srcColorFactor, dstColorFactor: BlendFactor, colorOperation: BlendOperation,
srcAlphaFactor, dstAlphaFactor: BlendFactor, alphaOperation: BlendOperation) -> BlendMode ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
/* This is a guess for the cacheline size used for padding.
* Most x86 processors have a 64 byte cache line.
@@ -41,4 +42,4 @@ foreign lib {
SIMDAlloc :: proc(len: c.size_t) -> rawptr ---
SIMDRealloc :: proc(mem: rawptr, len: c.size_t) -> rawptr ---
SIMDFree :: proc(ptr: rawptr) ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
RELEASED :: 0
PRESSED :: 1
@@ -498,4 +499,4 @@ foreign lib {
FilterEvents :: proc(filter: EventFilter, userdata: rawptr) ---
EventState :: proc(type: EventType, state: c.int) -> u8 ---
RegisterEvents :: proc(numevents: c.int) -> u32 ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
GameController :: struct {}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
// Gesture
@@ -259,4 +260,4 @@ foreign lib {
HapticRumbleInit :: proc(haptic: ^Haptic) -> c.int ---
HapticRumblePlay :: proc(haptic: ^Haptic, strength: f32, length: u32) -> c.int ---
HapticRumbleStop :: proc(haptic: ^Haptic) -> c.int ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
HINT_ACCELEROMETER_AS_JOYSTICK :: "SDL_ACCELEROMETER_AS_JOYSTICK"
HINT_ALLOW_ALT_TAB_WHILE_GRABBED :: "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"
@@ -146,4 +147,4 @@ foreign lib {
AddHintCallback :: proc(name: cstring, callback: HintCallback, userdata: rawptr) ---
DelHintCallback :: proc(name: cstring, callback: HintCallback, userdata: rawptr) ---
ClearHints :: proc() ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
Joystick :: struct {}
@@ -106,4 +107,4 @@ foreign lib {
JoystickSendEffect :: proc(joystick: ^Joystick, data: rawptr, size: c.int) -> c.int ---
JoystickClose :: proc(joystick: ^Joystick) ---
JoystickCurrentPowerLevel :: proc(joystick: ^Joystick) -> JoystickPowerLevel ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
Keysym :: struct {
scancode: Scancode, /**< SDL physical key code - see ::SDL_Scancode for details */

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
MAX_LOG_MESSAGE :: 4096
@@ -74,4 +75,4 @@ foreign lib {
// LogMessageV :: proc(category: c.int, priority: LogPriority, fmt: cstring, ap: va_list) ---
LogGetOutputFunction :: proc(callback: ^LogOutputFunction, userdata: ^rawptr) ---
LogSetOutputFunction :: proc(callback: LogOutputFunction, userdata: rawptr) ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
MessageBoxFlag :: enum u32 {
_ = 0,

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
MetalView :: distinct rawptr
@@ -15,4 +16,4 @@ foreign lib {
Metal_DestroyView :: proc(view: MetalView) ---
Metal_GetLayer :: proc(view: MetalView) -> rawptr ---
Metal_GetDrawableSize :: proc(window: ^Window, w, h: ^c.int) ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
Cursor :: struct {}
@@ -61,4 +62,4 @@ foreign lib {
GetDefaultCursor :: proc() -> ^Cursor ---
FreeCursor :: proc(cursor: ^Cursor) ---
ShowCursor :: proc(toggle: c.int) -> c.int ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
MUTEX_TIMEDOUT :: 1
MUTEX_MAXWAIT :: ~u32(0)
@@ -41,4 +42,4 @@ foreign lib {
CondBroadcast :: proc(cv: ^cond) -> c.int ---
CondWait :: proc(cv: ^cond, m: ^mutex) -> c.int ---
CondWaitTimeout :: proc(cv: ^cond, m: ^mutex, ms: u32) -> c.int ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
ALPHA_OPAQUE :: 255
ALPHA_TRANSPARENT :: 0
@@ -234,4 +235,4 @@ foreign lib {
GetRGB :: proc(pixel: u32, format: ^PixelFormat, r, g, b: ^u8) ---
GetRGBA :: proc(pixel: u32, format: ^PixelFormat, r, g, b, a: ^u8) ---
CalculateGammaRamp :: proc(gamma: f32, ramp: ^[256]u16) ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
Point :: struct {
x: c.int,
@@ -47,4 +48,4 @@ foreign lib {
UnionRect :: proc(A, B: ^Rect, result: ^Rect) ---
EnclosePoints :: proc(points: [^]Point, count: c.int, clip: ^Rect, result: ^Rect) -> bool ---
IntersectRectAndLine :: proc(rect: ^Rect, X1, Y1, X2, Y2: ^c.int) -> bool ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
RendererFlag :: enum u32 {
SOFTWARE = 0, /**< The renderer is a software fallback */
@@ -140,4 +141,4 @@ foreign lib {
GL_UnbindTexture :: proc(texture: ^Texture) -> c.int ---
RenderGetMetalLayer :: proc(renderer: ^Renderer) -> rawptr ---
RenderGetMetalCommandEncoder :: proc(renderer: ^Renderer) -> rawptr ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
/* RWops Types */
RWOPS_UNKNOWN :: 0 /**< Unknown stream type */
@@ -105,4 +106,4 @@ foreign lib {
WriteBE32 :: proc(dst: ^RWops, value: ^u32) -> c.size_t ---
WriteLE64 :: proc(dst: ^RWops, value: ^u64) -> c.size_t ---
WriteBE64 :: proc(dst: ^RWops, value: ^u64) -> c.size_t ---
}
}

View File

@@ -5,10 +5,11 @@ import "core:intrinsics"
import "core:runtime"
_, _ :: intrinsics, runtime
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
bool :: distinct b32
#assert(size_of(bool) == size_of(c.int))
@@ -160,4 +161,4 @@ iconv_utf8_ucs2 :: proc "c" (s: string) -> [^]u16 {
iconv_utf8_utf32 :: iconv_utf8_ucs4
iconv_utf8_ucs4 :: proc "c" (s: string) -> [^]rune {
return cast([^]rune)iconv_string("UCS-4-INTERNAL", "UTF-8", cstring(raw_data(s)), len(s)+1)
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
SWSURFACE :: 0 /**< Just here for compatibility */
PREALLOC :: 0x00000001 /**< Surface uses preallocated memory */
@@ -108,4 +109,4 @@ foreign lib {
SetYUVConversionMode :: proc(mode: YUV_CONVERSION_MODE) ---
GetYUVConversionMode :: proc() -> YUV_CONVERSION_MODE ---
GetYUVConversionModeForResolution :: proc(width, height: c.int) -> YUV_CONVERSION_MODE ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
// General
@(default_calling_convention="c", link_prefix="SDL_")
@@ -122,4 +123,4 @@ foreign lib {
AndroidGetExternalStoragePath :: proc() -> cstring ---
AndroidRequestPermission :: proc(permission: cstring) -> bool ---
AndroidShowToast :: proc(message: cstring, duration, gravity, xoffset, yoffset: c.int) -> c.int ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
SYSWM_TYPE :: enum c.int {
UNKNOWN,
@@ -105,4 +106,4 @@ SysWMinfo :: struct {
@(default_calling_convention="c", link_prefix="SDL_")
foreign lib {
GetWindowWMInfo :: proc(window: ^Window, info: ^SysWMinfo) -> bool ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
Thread :: struct {}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
TimerCallback :: proc "c" (interval: u32, param: rawptr) -> u32
TimerID :: distinct c.int
@@ -22,4 +23,4 @@ foreign lib {
Delay :: proc(ms: u32) ---
AddTimer :: proc(interval: u32, callback: TimerCallback, param: rawptr) -> TimerID ---
RemoveTimer :: proc(id: TimerID) -> bool ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
TouchID :: distinct i64
FingerID :: distinct i64
@@ -34,4 +35,4 @@ foreign lib {
GetTouchDeviceType :: proc(touchID: TouchID) -> TouchDeviceType ---
GetNumTouchFingers :: proc(touchID: TouchID) -> c.int ---
GetTouchFinger :: proc(touchID: TouchID, index: c.int) -> ^Finger ---
}
}

View File

@@ -2,10 +2,11 @@ package sdl2
import "core:c"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
DisplayMode :: struct {
format: u32, /**< pixel format */
@@ -310,4 +311,4 @@ foreign lib {
// Used by vendor:OpenGL
gl_set_proc_address :: proc(p: rawptr, name: cstring) {
(^rawptr)(p)^ = GL_GetProcAddress(name)
}
}

View File

@@ -3,10 +3,11 @@ package sdl2
import "core:c"
import vk "vendor:vulkan"
when ODIN_OS == .Windows { foreign import lib "SDL2.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2" }
when ODIN_OS == .Windows {
foreign import lib "SDL2.lib"
} else {
foreign import lib "system:SDL2"
}
VkInstance :: vk.Instance
VkSurfaceKHR :: vk.SurfaceKHR
@@ -22,4 +23,4 @@ foreign lib {
Vulkan_GetInstanceExtensions :: proc(window: ^Window, pCount: ^c.uint, pNames: [^]cstring) -> bool ---
Vulkan_CreateSurface :: proc(window: ^Window, instance: VkInstance, surface: ^VkSurfaceKHR) -> bool ---
Vulkan_GetDrawableSize :: proc(window: ^Window, w, h: ^c.int) ---
}
}

View File

@@ -3,10 +3,11 @@ package sdl2_ttf
import "core:c"
import SDL ".."
when ODIN_OS == .Windows { foreign import lib "SDL2_ttf.lib" }
when ODIN_OS == .Linux { foreign import lib "system:SDL2_ttf" }
when ODIN_OS == .Darwin { foreign import lib "system:SDL2_ttf" }
when ODIN_OS == .FreeBSD { foreign import lib "system:SDL2_ttf" }
when ODIN_OS == .Windows {
foreign import lib "SDL2_ttf.lib"
} else {
foreign import lib "system:SDL2_ttf"
}
bool :: SDL.bool
@@ -163,4 +164,4 @@ foreign lib {
SetFontSDF :: proc(font: ^Font, on_off: bool) -> c.int ---
GetFontSDF :: proc(font: ^Font) -> bool ---
}
}

View File

@@ -1,16 +1,16 @@
all:
mkdir -p ../lib
gcc -c -O2 -Os -fPIC stb_image.c stb_image_write.c stb_image_resize.c stb_truetype.c stb_rect_pack.c stb_vorbis.c
ar rcs ../lib/stb_image.a stb_image.o
ar rcs ../lib/stb_image_write.a stb_image_write.o
ar rcs ../lib/stb_image_resize.a stb_image_resize.o
ar rcs ../lib/stb_truetype.a stb_truetype.o
ar rcs ../lib/stb_rect_pack.a stb_rect_pack.o
#ar rcs ../lib/stb_vorbis_pack.a stb_vorbis_pack.o
#gcc -fPIC -shared -Wl,-soname=stb_image.so -o ../lib/stb_image.so stb_image.o
#gcc -fPIC -shared -Wl,-soname=stb_image_write.so -o ../lib/stb_image_write.so stb_image_write.o
#gcc -fPIC -shared -Wl,-soname=stb_image_resize.so -o ../lib/stb_image_resize.so stb_image_resize.o
#gcc -fPIC -shared -Wl,-soname=stb_truetype.so -o ../lib/stb_truetype.so stb_image_truetype.o
#gcc -fPIC -shared -Wl,-soname=stb_rect_pack.so -o ../lib/stb_rect_pack.so stb_rect_packl.o
#gcc -fPIC -shared -Wl,-soname=stb_vorbis.so -o ../lib/stb_vorbis.so stb_vorbisl.o
$(CC) -c -O2 -Os -fPIC stb_image.c stb_image_write.c stb_image_resize.c stb_truetype.c stb_rect_pack.c stb_vorbis.c
$(AR) rcs ../lib/stb_image.a stb_image.o
$(AR) rcs ../lib/stb_image_write.a stb_image_write.o
$(AR) rcs ../lib/stb_image_resize.a stb_image_resize.o
$(AR) rcs ../lib/stb_truetype.a stb_truetype.o
$(AR) rcs ../lib/stb_rect_pack.a stb_rect_pack.o
#$(AR) rcs ../lib/stb_vorbis_pack.a stb_vorbis_pack.o
#$(CC) -fPIC -shared -Wl,-soname=stb_image.so -o ../lib/stb_image.so stb_image.o
#$(CC) -fPIC -shared -Wl,-soname=stb_image_write.so -o ../lib/stb_image_write.so stb_image_write.o
#$(CC) -fPIC -shared -Wl,-soname=stb_image_resize.so -o ../lib/stb_image_resize.so stb_image_resize.o
#$(CC) -fPIC -shared -Wl,-soname=stb_truetype.so -o ../lib/stb_truetype.so stb_image_truetype.o
#$(CC) -fPIC -shared -Wl,-soname=stb_rect_pack.so -o ../lib/stb_rect_pack.so stb_rect_packl.o
#$(CC) -fPIC -shared -Wl,-soname=stb_vorbis.so -o ../lib/stb_vorbis.so stb_vorbisl.o
rm *.o