Browse Source

miniaudio: add version mismatch check

Laytan Laats 1 year ago
parent
commit
e931c82b9b
1 changed files with 30 additions and 1 deletions
  1. 30 1
      vendor/miniaudio/common.odin

+ 30 - 1
vendor/miniaudio/common.odin

@@ -14,9 +14,38 @@ when ODIN_OS == .Windows {
 	foreign import lib "lib/miniaudio.a"
 }
 
-handle :: distinct rawptr
+BINDINGS_VERSION_MAJOR    :: 0
+BINDINGS_VERSION_MINOR    :: 11
+BINDINGS_VERSION_REVISION :: 21 
+BINDINGS_VERSION          :: [3]u32{BINDINGS_VERSION_MAJOR, BINDINGS_VERSION_MINOR, BINDINGS_VERSION_REVISION}
+BINDINGS_VERSION_STRING   :: "0.11.21"
+
+@(init)
+version_check :: proc() {
+	v: [3]u32
+	version(&v.x, &v.y, &v.z)
+	if v != BINDINGS_VERSION {
+		buf: [1024]byte
+		n := copy(buf[:],  "miniaudio version mismatch: ")
+		n += copy(buf[n:], "bindings are for version ")
+		n += copy(buf[n:], BINDINGS_VERSION_STRING)
+		n += copy(buf[n:], ", but version ")
+		n += copy(buf[n:], string(version_string()))
+		n += copy(buf[n:], " is linked, make sure to compile the correct miniaudio version by going to `vendor/miniaudio/src` ")
+
+		when ODIN_OS == .Windows {
+			n += copy(buf[n:], "and executing `build.bat`")
+		} else {
+			n += copy(buf[n:], "and executing `make`")
+		}
+
+		panic(string(buf[:n]))
+	}
+}
 
 
+handle :: distinct rawptr
+
 /* SIMD alignment in bytes. Currently set to 32 bytes in preparation for future AVX optimizations. */
 SIMD_ALIGNMENT :: 32