Enable odin check examples/all for JS.

This commit is contained in:
Jeroen van Rijn
2025-06-03 20:01:22 +02:00
parent 986cfbcaf4
commit ae5c92ac38
12 changed files with 269 additions and 125 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,3 +1,4 @@
#+build !js
package all
// Imports every package
@@ -152,9 +153,6 @@ import utf8 "core:unicode/utf8"
import utf8string "core:unicode/utf8/utf8string"
import utf16 "core:unicode/utf16"
main :: proc(){}
_ :: bufio
_ :: bytes
_ :: c
@@ -280,3 +278,5 @@ _ :: 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"