Merge pull request #5268 from Kelimion/check-js

Allow `odin check examples/all` for js_wasm
This commit is contained in:
Jeroen van Rijn
2025-06-04 12:22:40 +02:00
committed by GitHub
12 changed files with 393 additions and 375 deletions

View File

@@ -159,6 +159,12 @@ jobs:
- name: Odin check examples/all for OpenBSD amd64
if: matrix.os == 'ubuntu-latest'
run: ./odin check examples/all -vet -strict-style -disallow-do -target:openbsd_amd64
- name: Odin check examples/all for js_wasm32
if: matrix.os == 'ubuntu-latest'
run: ./odin check examples/all -vet -strict-style -disallow-do -no-entry-point -target:js_wasm32
- name: Odin check examples/all for js_wasm64p32
if: matrix.os == 'ubuntu-latest'
run: ./odin check examples/all -vet -strict-style -disallow-do -no-entry-point -target:js_wasm64p32
- name: Odin check examples/all/sdl3 for Linux i386
if: matrix.os == 'ubuntu-latest'

View File

@@ -139,9 +139,6 @@ Context_Memory_Input :: struct #packed {
}
when size_of(rawptr) == 8 {
#assert(size_of(Context_Memory_Input) == 64)
} else {
// e.g. `-target:windows_i386`
#assert(size_of(Context_Memory_Input) == 52)
}
Context_Stream_Input :: struct #packed {

View File

@@ -0,0 +1,36 @@
package filepath
import "base:runtime"
import "core:strings"
SEPARATOR :: '/'
SEPARATOR_STRING :: `/`
LIST_SEPARATOR :: ':'
is_reserved_name :: proc(path: string) -> bool {
return false
}
is_abs :: proc(path: string) -> bool {
return strings.has_prefix(path, "/")
}
abs :: proc(path: string, allocator := context.allocator) -> (string, bool) {
if is_abs(path) {
return strings.clone(string(path), allocator), true
}
return path, false
}
join :: proc(elems: []string, allocator := context.allocator) -> (joined: string, err: runtime.Allocator_Error) #optional_allocator_error {
for e, i in elems {
if e != "" {
runtime.DEFAULT_TEMP_ALLOCATOR_TEMP_GUARD(ignore = context.temp_allocator == allocator)
p := strings.join(elems[i:], SEPARATOR_STRING, context.temp_allocator) or_return
return clean(p, allocator)
}
}
return "", nil
}

View File

@@ -1,6 +1,6 @@
package sysinfo
when !(ODIN_ARCH == .amd64 || ODIN_ARCH == .i386 || ODIN_ARCH == .arm32 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64) {
when !(ODIN_ARCH == .amd64 || ODIN_ARCH == .i386 || ODIN_ARCH == .arm32 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 || ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32) {
#assert(false, "This package is unsupported on this architecture.")
}

View File

@@ -0,0 +1,13 @@
#+build js
#+private
package timezone
import "core:time/datetime"
local_tz_name :: proc(allocator := context.allocator) -> (name: string, success: bool) {
return
}
_region_load :: proc(_reg_str: string, allocator := context.allocator) -> (out_reg: ^datetime.TZ_Region, success: bool) {
return nil, true
}

148
examples/all/all_js.odin Normal file
View File

@@ -0,0 +1,148 @@
#+build js
package all
// Imports "every" package
// This is useful for knowing what exists and producing documentation with `odin doc`
@(require) import "core:bufio"
@(require) import "core:bytes"
@(require) import "core:c"
@(require) import "core:compress"
@(require) import "core:compress/shoco"
@(require) import "core:compress/gzip"
@(require) import "core:compress/zlib"
@(require) import "core:container/avl"
@(require) import "core:container/bit_array"
@(require) import "core:container/priority_queue"
@(require) import "core:container/queue"
@(require) import "core:container/small_array"
@(require) import "core:container/lru"
@(require) import "core:container/intrusive/list"
@(require) import "core:container/rbtree"
@(require) import "core:container/topological_sort"
@(require) import "core:crypto"
@(require) import "core:crypto/aead"
@(require) import "core:crypto/aegis"
@(require) import "core:crypto/aes"
@(require) import "core:crypto/blake2b"
@(require) import "core:crypto/blake2s"
@(require) import "core:crypto/chacha20"
@(require) import "core:crypto/chacha20poly1305"
@(require) import chash "core:crypto/hash"
@(require) import "core:crypto/deoxysii"
@(require) import "core:crypto/ed25519"
@(require) import "core:crypto/hkdf"
@(require) import "core:crypto/hmac"
@(require) import "core:crypto/kmac"
@(require) import "core:crypto/legacy/keccak"
@(require) import "core:crypto/legacy/md5"
@(require) import "core:crypto/legacy/sha1"
@(require) import "core:crypto/pbkdf2"
@(require) import "core:crypto/poly1305"
@(require) import "core:crypto/ristretto255"
@(require) import "core:crypto/sha2"
@(require) import "core:crypto/sha3"
@(require) import "core:crypto/shake"
@(require) import "core:crypto/sm3"
@(require) import "core:crypto/tuplehash"
@(require) import "core:crypto/x25519"
@(require) import "core:crypto/x448"
@(require) import "core:debug/pe"
@(require) import "core:debug/trace"
@(require) import "core:dynlib"
@(require) import "core:net"
@(require) import "core:encoding/base32"
@(require) import "core:encoding/base64"
@(require) import "core:encoding/cbor"
@(require) import "core:encoding/csv"
@(require) import "core:encoding/endian"
@(require) import "core:encoding/hxa"
@(require) import "core:encoding/ini"
@(require) import "core:encoding/json"
@(require) import "core:encoding/varint"
@(require) import "core:encoding/xml"
@(require) import "core:encoding/uuid"
@(require) import "core:encoding/uuid/legacy"
@(require) import "core:fmt"
@(require) import "core:hash"
@(require) import "core:hash/xxhash"
@(require) import "core:image"
@(require) import "core:image/bmp"
@(require) import "core:image/netpbm"
@(require) import "core:image/png"
@(require) import "core:image/qoi"
@(require) import "core:image/tga"
@(require) import "core:io"
@(require) import "core:log"
@(require) import "core:math"
@(require) import "core:math/big"
@(require) import "core:math/bits"
@(require) import "core:math/fixed"
@(require) import "core:math/linalg"
@(require) import "core:math/linalg/glsl"
@(require) import "core:math/linalg/hlsl"
@(require) import "core:math/noise"
@(require) import "core:math/rand"
@(require) import "core:math/ease"
@(require) import "core:math/cmplx"
@(require) import "core:mem"
@(require) import "core:mem/tlsf"
@(require) import "core:mem/virtual"
@(require) import "core:odin/ast"
@(require) import doc_format "core:odin/doc-format"
@(require) import "core:odin/tokenizer"
@(require) import "core:os"
@(require) import "core:path/slashpath"
@(require) import "core:relative"
@(require) import "core:reflect"
@(require) import "base:runtime"
@(require) import "base:sanitizer"
@(require) import "core:simd"
@(require) import "core:simd/x86"
@(require) import "core:slice"
@(require) import "core:slice/heap"
@(require) import "core:sort"
@(require) import "core:strconv"
@(require) import "core:strings"
@(require) import "core:sync"
@(require) import "core:terminal"
@(require) import "core:terminal/ansi"
@(require) import "core:text/edit"
@(require) import "core:text/i18n"
@(require) import "core:text/match"
@(require) import "core:text/regex"
@(require) import "core:text/scanner"
@(require) import "core:text/table"
@(require) import "core:thread"
@(require) import "core:time"
@(require) import "core:time/datetime"
@(require) import "core:time/timezone"
@(require) import "core:sys/orca"
@(require) import "core:sys/info"
@(require) import "core:unicode"
@(require) import "core:unicode/utf8"
@(require) import "core:unicode/utf8/utf8string"
@(require) import "core:unicode/utf16"
main :: proc() {}

View File

@@ -1,10 +1,5 @@
#+build linux
package all
import linux "core:sys/linux"
import xlib "vendor:x11/xlib"
_ :: linux
_ :: xlib
@(require) import "core:sys/linux"
@(require) import "vendor:x11/xlib"

View File

@@ -1,282 +1,156 @@
#+build !js
package all
// Imports every package
// This is useful for knowing what exists and producing documentation with `odin doc`
import bufio "core:bufio"
import bytes "core:bytes"
@(require) import "core:bufio"
@(require) import "core:bytes"
import c "core:c"
import libc "core:c/libc"
@(require) import "core:c"
@(require) import "core:c/libc"
import compress "core:compress"
import shoco "core:compress/shoco"
import gzip "core:compress/gzip"
import zlib "core:compress/zlib"
@(require) import "core:compress"
@(require) import "core:compress/shoco"
@(require) import "core:compress/gzip"
@(require) import "core:compress/zlib"
import avl "core:container/avl"
import bit_array "core:container/bit_array"
import priority_queue "core:container/priority_queue"
import queue "core:container/queue"
import small_array "core:container/small_array"
import lru "core:container/lru"
import list "core:container/intrusive/list"
import rbtree "core:container/rbtree"
import topological_sort "core:container/topological_sort"
@(require) import "core:container/avl"
@(require) import "core:container/bit_array"
@(require) import "core:container/priority_queue"
@(require) import "core:container/queue"
@(require) import "core:container/small_array"
@(require) import "core:container/lru"
@(require) import "core:container/intrusive/list"
@(require) import "core:container/rbtree"
@(require) import "core:container/topological_sort"
import crypto "core:crypto"
import aead "core:crypto/aead"
import aegis "core:crypto/aegis"
import aes "core:crypto/aes"
import blake2b "core:crypto/blake2b"
import blake2s "core:crypto/blake2s"
import chacha20 "core:crypto/chacha20"
import chacha20poly1305 "core:crypto/chacha20poly1305"
import crypto_hash "core:crypto/hash"
import deoxysii "core:crypto/deoxysii"
import ed25519 "core:crypto/ed25519"
import hkdf "core:crypto/hkdf"
import hmac "core:crypto/hmac"
import kmac "core:crypto/kmac"
import keccak "core:crypto/legacy/keccak"
import md5 "core:crypto/legacy/md5"
import sha1 "core:crypto/legacy/sha1"
import pbkdf2 "core:crypto/pbkdf2"
import poly1305 "core:crypto/poly1305"
import ristretto255 "core:crypto/ristretto255"
import sha2 "core:crypto/sha2"
import sha3 "core:crypto/sha3"
import shake "core:crypto/shake"
import sm3 "core:crypto/sm3"
import tuplehash "core:crypto/tuplehash"
import x25519 "core:crypto/x25519"
import x448 "core:crypto/x448"
@(require) import "core:crypto"
@(require) import "core:crypto/aead"
@(require) import "core:crypto/aegis"
@(require) import "core:crypto/aes"
@(require) import "core:crypto/blake2b"
@(require) import "core:crypto/blake2s"
@(require) import "core:crypto/chacha20"
@(require) import "core:crypto/chacha20poly1305"
@(require) import chash "core:crypto/hash"
@(require) import "core:crypto/deoxysii"
@(require) import "core:crypto/ed25519"
@(require) import "core:crypto/hkdf"
@(require) import "core:crypto/hmac"
@(require) import "core:crypto/kmac"
@(require) import "core:crypto/legacy/keccak"
@(require) import "core:crypto/legacy/md5"
@(require) import "core:crypto/legacy/sha1"
@(require) import "core:crypto/pbkdf2"
@(require) import "core:crypto/poly1305"
@(require) import "core:crypto/ristretto255"
@(require) import "core:crypto/sha2"
@(require) import "core:crypto/sha3"
@(require) import "core:crypto/shake"
@(require) import "core:crypto/sm3"
@(require) import "core:crypto/tuplehash"
@(require) import "core:crypto/x25519"
@(require) import "core:crypto/x448"
import pe "core:debug/pe"
import trace "core:debug/trace"
@(require) import "core:debug/pe"
@(require) import "core:debug/trace"
import dynlib "core:dynlib"
import net "core:net"
@(require) import "core:dynlib"
@(require) import "core:net"
import base32 "core:encoding/base32"
import base64 "core:encoding/base64"
import cbor "core:encoding/cbor"
import csv "core:encoding/csv"
import endian "core:encoding/endian"
import hxa "core:encoding/hxa"
import ini "core:encoding/ini"
import json "core:encoding/json"
import varint "core:encoding/varint"
import xml "core:encoding/xml"
import uuid "core:encoding/uuid"
import uuid_legacy "core:encoding/uuid/legacy"
@(require) import "core:encoding/base32"
@(require) import "core:encoding/base64"
@(require) import "core:encoding/cbor"
@(require) import "core:encoding/csv"
@(require) import "core:encoding/endian"
@(require) import "core:encoding/hxa"
@(require) import "core:encoding/ini"
@(require) import "core:encoding/json"
@(require) import "core:encoding/varint"
@(require) import "core:encoding/xml"
@(require) import "core:encoding/uuid"
@(require) import "core:encoding/uuid/legacy"
import fmt "core:fmt"
import hash "core:hash"
import xxhash "core:hash/xxhash"
@(require) import "core:fmt"
@(require) import "core:hash"
@(require) import "core:hash/xxhash"
import image "core:image"
import bmp "core:image/bmp"
import netpbm "core:image/netpbm"
import png "core:image/png"
import qoi "core:image/qoi"
import tga "core:image/tga"
@(require) import "core:image"
@(require) import "core:image/bmp"
@(require) import "core:image/netpbm"
@(require) import "core:image/png"
@(require) import "core:image/qoi"
@(require) import "core:image/tga"
import io "core:io"
import log "core:log"
@(require) import "core:io"
@(require) import "core:log"
import math "core:math"
import big "core:math/big"
import bits "core:math/bits"
import fixed "core:math/fixed"
import linalg "core:math/linalg"
import glm "core:math/linalg/glsl"
import hlm "core:math/linalg/hlsl"
import noise "core:math/noise"
import rand "core:math/rand"
import ease "core:math/ease"
import cmplx "core:math/cmplx"
@(require) import "core:math"
@(require) import "core:math/big"
@(require) import "core:math/bits"
@(require) import "core:math/fixed"
@(require) import "core:math/linalg"
@(require) import "core:math/linalg/glsl"
@(require) import "core:math/linalg/hlsl"
@(require) import "core:math/noise"
@(require) import "core:math/rand"
@(require) import "core:math/ease"
@(require) import "core:math/cmplx"
import mem "core:mem"
import tlsf "core:mem/tlsf"
import virtual "core:mem/virtual"
@(require) import "core:mem"
@(require) import "core:mem/tlsf"
@(require) import "core:mem/virtual"
import ast "core:odin/ast"
import doc_format "core:odin/doc-format"
import odin_parser "core:odin/parser"
import odin_tokenizer "core:odin/tokenizer"
@(require) import "core:odin/ast"
@(require) import doc_format "core:odin/doc-format"
@(require) import "core:odin/parser"
@(require) import "core:odin/tokenizer"
import spall "core:prof/spall"
@(require) import "core:prof/spall"
import os "core:os"
@(require) import "core:os"
import slashpath "core:path/slashpath"
import filepath "core:path/filepath"
@(require) import "core:path/slashpath"
@(require) import "core:path/filepath"
import relative "core:relative"
@(require) import "core:relative"
import reflect "core:reflect"
import runtime "base:runtime"
import sanitizer "base:sanitizer"
import simd "core:simd"
import x86 "core:simd/x86"
import slice "core:slice"
import slice_heap "core:slice/heap"
import sort "core:sort"
import strconv "core:strconv"
import strings "core:strings"
import sync "core:sync"
import testing "core:testing"
@(require) import "core:reflect"
@(require) import "base:runtime"
@(require) import "base:sanitizer"
@(require) import "core:simd"
@(require) import "core:simd/x86"
@(require) import "core:slice"
@(require) import "core:slice/heap"
@(require) import "core:sort"
@(require) import "core:strconv"
@(require) import "core:strings"
@(require) import "core:sync"
@(require) import "core:testing"
import terminal "core:terminal"
import ansi "core:terminal/ansi"
@(require) import "core:terminal"
@(require) import "core:terminal/ansi"
import edit "core:text/edit"
import i18n "core:text/i18n"
import match "core:text/match"
import regex "core:text/regex"
import scanner "core:text/scanner"
import table "core:text/table"
@(require) import "core:text/edit"
@(require) import "core:text/i18n"
@(require) import "core:text/match"
@(require) import "core:text/regex"
@(require) import "core:text/scanner"
@(require) import "core:text/table"
import thread "core:thread"
import time "core:time"
import datetime "core:time/datetime"
import timezone "core:time/timezone"
import flags "core:flags"
@(require) import "core:thread"
@(require) import "core:time"
@(require) import "core:time/datetime"
@(require) import "core:time/timezone"
@(require) import "core:flags"
import orca "core:sys/orca"
import sysinfo "core:sys/info"
@(require) import "core:sys/orca"
@(require) import "core:sys/info"
import unicode "core:unicode"
import utf8 "core:unicode/utf8"
import utf8string "core:unicode/utf8/utf8string"
import utf16 "core:unicode/utf16"
@(require) import "core:unicode"
@(require) import "core:unicode/utf8"
@(require) import "core:unicode/utf8/utf8string"
@(require) import "core:unicode/utf16"
main :: proc(){}
_ :: bufio
_ :: bytes
_ :: c
_ :: libc
_ :: compress
_ :: shoco
_ :: gzip
_ :: zlib
_ :: avl
_ :: bit_array
_ :: priority_queue
_ :: queue
_ :: small_array
_ :: lru
_ :: list
_ :: rbtree
_ :: topological_sort
_ :: crypto
_ :: crypto_hash
_ :: aead
_ :: aegis
_ :: aes
_ :: blake2b
_ :: blake2s
_ :: chacha20
_ :: chacha20poly1305
_ :: deoxysii
_ :: ed25519
_ :: hmac
_ :: hkdf
_ :: kmac
_ :: keccak
_ :: md5
_ :: pbkdf2
_ :: poly1305
_ :: ristretto255
_ :: sha1
_ :: sha2
_ :: sha3
_ :: shake
_ :: sm3
_ :: tuplehash
_ :: x25519
_ :: x448
_ :: pe
_ :: trace
_ :: dynlib
_ :: net
_ :: base32
_ :: base64
_ :: csv
_ :: hxa
_ :: ini
_ :: json
_ :: varint
_ :: xml
_ :: endian
_ :: cbor
_ :: fmt
_ :: hash
_ :: xxhash
_ :: image
_ :: bmp
_ :: netpbm
_ :: png
_ :: qoi
_ :: tga
_ :: io
_ :: log
_ :: math
_ :: big
_ :: bits
_ :: fixed
_ :: linalg
_ :: glm
_ :: hlm
_ :: noise
_ :: rand
_ :: ease
_ :: cmplx
_ :: mem
_ :: tlsf
_ :: virtual
_ :: ast
_ :: doc_format
_ :: odin_parser
_ :: odin_tokenizer
_ :: os
_ :: spall
_ :: slashpath
_ :: filepath
_ :: relative
_ :: reflect
_ :: runtime
_ :: simd
_ :: x86
_ :: slice
_ :: slice_heap
_ :: sort
_ :: strconv
_ :: strings
_ :: sync
_ :: testing
_ :: terminal
_ :: ansi
_ :: scanner
_ :: i18n
_ :: match
_ :: regex
_ :: table
_ :: edit
_ :: thread
_ :: time
_ :: datetime
_ :: timezone
_ :: flags
_ :: orca
_ :: sysinfo
_ :: unicode
_ :: uuid
_ :: uuid_legacy
_ :: utf8
_ :: utf8string
_ :: utf16
_ :: sanitizer
main :: proc() {}

View File

@@ -1,8 +1,5 @@
#+build darwin, openbsd, freebsd, netbsd
package all
import posix "core:sys/posix"
import kqueue "core:sys/kqueue"
_ :: posix
_ :: kqueue
@(require) import "core:sys/posix"
@(require) import "core:sys/kqueue"

View File

@@ -1,102 +1,48 @@
#+build !js
package all
import cgltf "vendor:cgltf"
// import commonmark "vendor:commonmark"
import ENet "vendor:ENet"
import exr "vendor:OpenEXRCore"
import ggpo "vendor:ggpo"
import gl "vendor:OpenGL"
import glfw "vendor:glfw"
import microui "vendor:microui"
import miniaudio "vendor:miniaudio"
import PM "vendor:portmidi"
import rl "vendor:raylib"
import zlib "vendor:zlib"
@(require) import "vendor:cgltf"
@(require) import "vendor:ENet"
@(require) import "vendor:OpenEXRCore"
@(require) import "vendor:ggpo"
@(require) import "vendor:OpenGL"
@(require) import "vendor:glfw"
@(require) import "vendor:microui"
@(require) import "vendor:miniaudio"
@(require) import "vendor:portmidi"
@(require) import "vendor:raylib"
@(require) import "vendor:zlib"
import SDL "vendor:sdl2"
import SDLNet "vendor:sdl2/net"
import IMG "vendor:sdl2/image"
import MIX "vendor:sdl2/mixer"
import TTF "vendor:sdl2/ttf"
@(require) import "vendor:sdl2"
@(require) import "vendor:sdl2/net"
@(require) import "vendor:sdl2/image"
@(require) import "vendor:sdl2/mixer"
@(require) import "vendor:sdl2/ttf"
import vk "vendor:vulkan"
@(require) import "vendor:vulkan"
// NOTE(bill): only one can be checked at a time
import lua_5_4 "vendor:lua/5.4"
import nvg "vendor:nanovg"
import nvg_gl "vendor:nanovg/gl"
import fontstash "vendor:fontstash"
_ :: cgltf
// _ :: commonmark
_ :: ENet
_ :: exr
_ :: ggpo
_ :: gl
_ :: glfw
_ :: microui
_ :: miniaudio
_ :: PM
_ :: rl
_ :: zlib
_ :: SDL
_ :: SDLNet
_ :: IMG
_ :: MIX
_ :: TTF
_ :: vk
_ :: lua_5_4
_ :: nvg
_ :: nvg_gl
_ :: fontstash
@(require) import lua54 "vendor:lua/5.4"
@(require) import "vendor:nanovg"
@(require) import "vendor:nanovg/gl"
@(require) import "vendor:fontstash"
// NOTE: needed for doc generator
@(require) import "core:sys/darwin/Foundation"
@(require) import "core:sys/darwin/CoreFoundation"
@(require) import "core:sys/darwin/Security"
@(require) import "vendor:darwin/Metal"
@(require) import "vendor:darwin/MetalKit"
@(require) import "vendor:darwin/QuartzCore"
import NS "core:sys/darwin/Foundation"
import CF "core:sys/darwin/CoreFoundation"
import SEC "core:sys/darwin/Security"
import MTL "vendor:darwin/Metal"
import MTK "vendor:darwin/MetalKit"
import CA "vendor:darwin/QuartzCore"
_ :: NS
_ :: CF
_ :: SEC
_ :: MTL
_ :: MTK
_ :: CA
import DXC "vendor:directx/dxc"
import D3D11 "vendor:directx/d3d11"
import D3D12 "vendor:directx/d3d12"
import DXGI "vendor:directx/dxgi"
_ :: DXC
_ :: D3D11
_ :: D3D12
_ :: DXGI
import cm "vendor:commonmark"
_ :: cm
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
@(require) import "vendor:directx/dxc"
@(require) import "vendor:directx/d3d11"
@(require) import "vendor:directx/d3d12"
@(require) import "vendor:directx/dxgi"
@(require) import "vendor:commonmark"
@(require) import "vendor:stb/easy_font"
@(require) import stbi "vendor:stb/image"
@(require) import "vendor:stb/rect_pack"
@(require) import "vendor:stb/truetype"
@(require) import "vendor:stb/vorbis"

View File

@@ -0,0 +1,13 @@
#+build js
package all
@(require) import "vendor:box2d"
@(require) import "vendor:cgltf"
@(require) import "vendor:fontstash"
@(require) import "vendor:microui"
@(require) import "vendor:stb/easy_font"
@(require) import "vendor:stb/image"
@(require) import "vendor:stb/rect_pack"
@(require) import "vendor:stb/truetype"
@(require) import "vendor:wgpu"
@(require) import "vendor:wasm/WebGL"

View File

@@ -1,16 +1,9 @@
#+build windows
package all
import wgpu "vendor:wgpu"
import wgpu_glfw_glue "vendor:wgpu/glfwglue"
import wgpu_sdl_glue "vendor:wgpu/sdl2glue"
import b2 "vendor:box2d"
import game_input "vendor:windows/GameInput"
import XAudio2 "vendor:windows/XAudio2"
_ :: wgpu
_ :: wgpu_glfw_glue
_ :: wgpu_sdl_glue
_ :: b2
_ :: game_input
_ :: XAudio2
@(require) import "vendor:wgpu/glfwglue"
@(require) import "vendor:wgpu/sdl2glue"
@(require) import "vendor:wgpu"
@(require) import "vendor:box2d"
@(require) import "vendor:windows/GameInput"
@(require) import "vendor:windows/XAudio2"