Compare commits

...

10 Commits

Author SHA1 Message Date
efec592b0d Update .gitignore 2024-02-04 11:26:10 +01:00
68910c6035 Add nix flakes as build system 2024-02-04 11:23:46 +01:00
Ry
71612028ed
Merge pull request #3 from mebibytedraco/png-only
Disable unused formats for image crate
2023-07-13 17:54:34 -07:00
mebibytedraco
e5b08655be Disable everything but PNG for image crate 2023-07-13 19:30:49 -04:00
Ry
2dca1209a7 bindings: Bindings for tileset routines 2023-02-28 17:47:34 -08:00
Ry
9d6a423684 gcc/fox-compile: Build without optimizations 2023-02-28 17:30:46 -08:00
Ry
5c94905a98 bindings: Mostly finish fox32os bindings 2023-02-08 16:25:13 -08:00
Ry
435ea9f698 rv2fox: *Properly* understand .byte and .half directives 2023-02-07 22:26:07 -08:00
Ry
55edd58557 rv2fox: Adjust data directives' integers to fit the needs to fox32asm 2023-02-07 22:25:34 -08:00
Ry
81b2ea3c98 rv2fox: Understand beq and beqz 2023-02-07 22:13:28 -08:00
12 changed files with 341 additions and 846 deletions

1
.envrc Normal file
View File

@ -0,0 +1 @@
use flake

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
**/.vscode/
**/target/
**/result
**/.direnv

59
flake.lock Normal file
View File

@ -0,0 +1,59 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1697009197,
"narHash": "sha256-viVRhBTFT8fPJTb1N3brQIpFZnttmwo3JVKNuWRVc3s=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "01441e14af5e29c9d27ace398e6dd0b293e25a54",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

30
flake.nix Normal file
View File

@ -0,0 +1,30 @@
{
description = "fox32 tools";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (sys:
let pkgs = import nixpkgs { system = sys; };
in rec {
packages.gfx2inc = pkgs.rustPlatform.buildRustPackage rec {
pname = "gfx2inc";
version = "0.1.0";
src = ./gfx2inc;
cargoLock = { lockFile = ./gfx2inc/Cargo.lock; };
NIX_SEMVER = version;
NIX_GIT_SHA_SHORT = if self ? rev then builtins.substring 0 7 self.rev else "dirty";
};
packages.default = packages.gfx2inc;
devShells.default = pkgs.mkShell {
packages = [ pkgs.cargo ];
};
}
);
}

View File

@ -98,7 +98,14 @@ static inline void draw_tile_generic(void) {
call(0xF0041014);
}
static inline void set_tilemap(void) {
static inline void set_tilemap(
unsigned char* tilemap,
unsigned short width,
unsigned short height
) {
parameter(0, tilemap);
parameter(1, width);
parameter(2, height);
call(0xF0041018);
}
@ -110,8 +117,13 @@ static inline void draw_filled_rectangle_generic(void) {
call(0xF0041020);
}
static inline void get_tilemap(void) {
static inline struct return3 get_tilemap(void) {
struct return3 result_0;
call(0xF0041024);
ret(0, result_0.return0);
ret(1, result_0.return1);
ret(2, result_0.return2);
return result_0;
}
// background jump table
@ -640,19 +652,41 @@ static inline unsigned int random_range(
// system jump table
static inline void get_os_version(void) {
static inline struct return3 get_os_version(void) {
struct return3 result_0;
call(0x00000810);
ret(0, result_0.return0);
ret(1, result_0.return1);
ret(2, result_0.return2);
return result_0;
}
// FXF jump table
static inline void parse_fxf_binary(void) {
static inline unsigned char* parse_fxf_binary(
unsigned char* fxf_memory_buffer
) {
unsigned char* result_0;
parameter(0, fxf_memory_buffer);
call(0x00000910);
ret(0, result_0);
return result_0;
}
// task jump table
static inline void new_task(void) {
static inline void new_task(
unsigned char task_id,
unsigned char* initial_instruction_pointer,
unsigned char* initial_stack_pointer,
unsigned char* code_block_to_free,
unsigned char* stack_block_to_free
) {
parameter(0, task_id);
parameter(1, initial_instruction_pointer);
parameter(2, initial_stack_pointer);
parameter(3, code_block_to_free);
parameter(4, stack_block_to_free);
call(0x00000A10);
}
@ -664,12 +698,18 @@ static inline void end_current_task(void) {
call(0x00000A18);
}
static inline void get_current_task_id(void) {
static inline unsigned char get_current_task_id(void) {
unsigned char result_0;
call(0x00000A1C);
ret(0, result_0);
return result_0;
}
static inline void get_unused_task_id(void) {
static inline unsigned char get_unused_task_id(void) {
unsigned char result_0;
call(0x00000A20);
ret(0, result_0);
return result_0;
}
static inline void is_task_id_used(void) {
@ -682,11 +722,20 @@ static inline void save_state_and_yield_task(void) {
// memory jump table
static inline void allocate_memory(void) {
static inline unsigned char* allocate_memory(
unsigned int bytes_to_allocate
) {
unsigned char* result_0;
parameter(0, bytes_to_allocate);
call(0x00000B10);
ret(0, result_0);
return result_0;
}
static inline void free_memory(void) {
static inline void free_memory(
unsigned char* allocated_block
) {
parameter(0, allocated_block);
call(0x00000B14);
}
@ -720,7 +769,28 @@ static inline void destroy_window(
call(0x00000C14);
}
static inline void new_window_event(void) {
static inline void new_window_event(
unsigned int event_type,
unsigned int parameter0,
unsigned int parameter1,
unsigned int parameter2,
unsigned int parameter3,
unsigned int parameter4,
unsigned int parameter5,
unsigned int parameter6,
unsigned int parameter7,
unsigned char* window_struct
) {
parameter(0, event_type);
parameter(1, parameter0);
parameter(2, parameter1);
parameter(3, parameter2);
parameter(4, parameter3);
parameter(5, parameter4);
parameter(6, parameter5);
parameter(7, parameter6);
parameter(8, parameter7);
parameter(9, window_struct);
call(0x00000C18);
}
@ -785,12 +855,25 @@ static inline void start_dragging_window(
call(0x00000C30);
}
static inline void new_messagebox(void) {
static inline void new_messagebox(
char* first_line_str,
char* second_line_str,
char* third_line_str,
unsigned short x,
unsigned short y,
unsigned short width
) {
parameter(0, first_line_str);
parameter(1, second_line_str);
parameter(2, third_line_str);
parameter(3, x);
parameter(4, y);
parameter(5, width);
call(0x00000C34);
}
static inline unsigned int* get_active_window_struct(void) {
unsigned int* result_0;
static inline unsigned char* get_active_window_struct(void) {
unsigned char* result_0;
call(0x00000C38);
ret(0, result_0);
return result_0;
@ -798,33 +881,81 @@ static inline unsigned int* get_active_window_struct(void) {
// VFS jump table
static inline void open(void) {
static inline unsigned short open(
char* file_name,
unsigned char disk_id,
unsigned char* file_struct
) {
unsigned short result_0;
parameter(0, file_name);
parameter(1, disk_id);
parameter(2, file_struct);
call(0x00000D10);
ret(0, result_0);
return result_0;
}
static inline void seek(void) {
static inline void seek(
unsigned int offset,
unsigned char* file_struct
) {
parameter(0, offset);
parameter(1, file_struct);
call(0x00000D14);
}
static inline void tell(void) {
static inline unsigned int tell(
unsigned char* file_struct
) {
unsigned int result_0;
parameter(0, file_struct);
call(0x00000D18);
ret(0, result_0);
return result_0;
}
static inline void read(void) {
static inline unsigned int read(
unsigned int bytes_to_read,
unsigned char* file_struct,
unsigned char* destination_buffer
) {
unsigned int result_0;
parameter(0, bytes_to_read);
parameter(1, file_struct);
parameter(2, destination_buffer);
call(0x00000D1C);
ret(0, result_0);
return result_0;
}
static inline void write(void) {
static inline void write(
unsigned int bytes_to_write,
unsigned char* file_struct,
unsigned char* source_buffer
) {
parameter(0, bytes_to_write);
parameter(1, file_struct);
parameter(2, source_buffer);
call(0x00000D20);
}
// widget jump table
static inline void draw_widgets_to_window(void) {
static inline void draw_widgets_to_window(
unsigned char* window_struct
) {
parameter(0, window_struct);
call(0x00000E10);
}
static inline void handle_widget_click(void) {
static inline void handle_widget_click(
unsigned char* window_struct,
unsigned short x,
unsigned short y
) {
parameter(0, window_struct);
parameter(1, x);
parameter(2, y);
call(0x00000E14);
}

View File

@ -213,12 +213,18 @@ define(0xF0041010U, "draw_font_tile_generic") {
define(0xF0041014U, "draw_tile_generic") {
}
define(0xF0041018U, "set_tilemap") {
parameter(Byte.ref, "tilemap")
parameter(Half, "width")
parameter(Half, "height")
}
define(0xF004101CU, "draw_pixel_generic") {
}
define(0xF0041020U, "draw_filled_rectangle_generic") {
}
define(0xF0041024U, "get_tilemap") {
returnstruct("return0", Type("struct return3"))
returnstruct("return1", Type("struct return3"))
returnstruct("return2", Type("struct return3"))
}
comment("background jump table")
@ -488,35 +494,48 @@ comment("fox32os definitions")
comment("system jump table")
define(0x00000810U, "get_os_version") {
returnstruct("return0", Type("struct return3"))
returnstruct("return1", Type("struct return3"))
returnstruct("return2", Type("struct return3"))
}
comment("FXF jump table")
define(0x00000910U, "parse_fxf_binary") {
parameter(Byte.ref, "fxf_memory_buffer")
returns(Byte.ref)
}
comment("task jump table")
define(0x00000A10U, "new_task") {
parameter(Byte, "task_id")
parameter(Byte.ref, "initial_instruction_pointer")
parameter(Byte.ref, "initial_stack_pointer")
parameter(Byte.ref, "code_block_to_free")
parameter(Byte.ref, "stack_block_to_free")
}
define(0x00000A14U, "yield_task") {
}
define(0x00000A18U, "end_current_task") {
}
define(0x00000A14U, "yield_task") {}
define(0x00000A18U, "end_current_task") {}
define(0x00000A1CU, "get_current_task_id") {
returns(Byte)
}
define(0x00000A20U, "get_unused_task_id") {
returns(Byte)
}
define(0x00000A24U, "is_task_id_used") {
// TODO: returning a value based on the Z flag
}
define(0x00000A28U, "save_state_and_yield_task") {
}
define(0x00000A28U, "save_state_and_yield_task") {}
comment("memory jump table")
define(0x00000B10U, "allocate_memory") {
parameter(Word, "bytes_to_allocate")
returns(Byte.ref)
}
define(0x00000B14U, "free_memory") {
parameter(Byte.ref, "allocated_block")
}
comment("window jump table")
@ -535,6 +554,16 @@ define(0x00000C14U, "destroy_window") {
parameter(Byte.ref, "window_struct")
}
define(0x00000C18U, "new_window_event") {
parameter(Word, "event_type")
parameter(Word, "parameter0")
parameter(Word, "parameter1")
parameter(Word, "parameter2")
parameter(Word, "parameter3")
parameter(Word, "parameter4")
parameter(Word, "parameter5")
parameter(Word, "parameter6")
parameter(Word, "parameter7")
parameter(Byte.ref, "window_struct")
}
define(0x00000C1CU, "get_next_window_event") {
parameter(Byte.ref, "window_struct")
@ -567,29 +596,54 @@ define(0x00000C30U, "start_dragging_window") {
parameter(Byte.ref, "window_struct")
}
define(0x00000C34U, "new_messagebox") {
parameter(IByte.ref, "first_line_str")
parameter(IByte.ref, "second_line_str")
parameter(IByte.ref, "third_line_str")
parameter(Half, "x")
parameter(Half, "y")
parameter(Half, "width")
}
define(0x00000C38U, "get_active_window_struct") {
returns(Word.ref)
returns(Byte.ref)
}
comment("VFS jump table")
define(0x00000D10U, "open") {
parameter(IByte.ref, "file_name")
parameter(Byte, "disk_id")
parameter(Byte.ref, "file_struct")
returns(Half)
}
define(0x00000D14U, "seek") {
parameter(Word, "offset")
parameter(Byte.ref, "file_struct")
}
define(0x00000D18U, "tell") {
parameter(Byte.ref, "file_struct")
returns(Word)
}
define(0x00000D1CU, "read") {
parameter(Word, "bytes_to_read")
parameter(Byte.ref, "file_struct")
parameter(Byte.ref, "destination_buffer")
returns(Word)
}
define(0x00000D20U, "write") {
parameter(Word, "bytes_to_write")
parameter(Byte.ref, "file_struct")
parameter(Byte.ref, "source_buffer")
}
comment("widget jump table")
define(0x00000E10U, "draw_widgets_to_window") {
parameter(Byte.ref, "window_struct")
}
define(0x00000E14U, "handle_widget_click") {
parameter(Byte.ref, "window_struct")
parameter(Half, "x")
parameter(Half, "y")
}
comment("event types")

View File

@ -36,7 +36,7 @@ class GCC(Flavor):
@classmethod
def invoke(self, command, c_file, s_file):
run([command, '-march=rv32im', '-mabi=ilp32', '-Os', '-S', c_file, '-o', s_file])
run([command, '-march=rv32im', '-mabi=ilp32', '-O0', '-S', c_file, '-o', s_file])
class GPlusPlus(GCC):
basename = 'g++'

View File

@ -66,7 +66,7 @@ class Emitter:
Emit data
"""
for d in data:
self.write(f'data.{size} {self._adjust_label(d)}')
self.write(f'data.{size} {self._adjust_label(self._adjust_operand(d))}')
def zero(self, *data):
"""
@ -158,7 +158,7 @@ class Converter:
self.xregidx = { r: i for i, r in enumerate(self.xregs) }
self.tmp = 'rfp' # temporary register
self.branches = ['bge', 'bgeu', 'bgt', 'bgtu', 'blt', 'bltu', 'ble', 'bleu', 'bne', 'bneu']
self.branches = ['bge', 'bgeu', 'bgt', 'bgtu', 'blt', 'bltu', 'ble', 'bleu', 'bne', 'bneu', 'beq']
self.label_gen = iter(range(1000000))
@ -193,12 +193,14 @@ class Converter:
pass # ignore
elif m := re.fullmatch(r'word\s+([^\s]+)', line):
self.e.data(*m.groups())
elif m := re.fullmatch(r'half\s+([^\s]+)', line):
self.e.data(*m.groups(), size=16)
elif m := re.fullmatch(r'byte\s+([^\s]+)', line):
self.e.data(*m.groups(), size=8)
elif m := re.fullmatch(r'4byte\s+([^\s]+)', line):
self.e.data(*m.groups())
elif m := re.fullmatch(r'zero\s+([^\s]+)', line):
self.e.zero(*m.groups())
elif m := re.fullmatch(r'byte\s+([^\s]+)', line):
self.e.zero(*m.groups())
elif m := re.fullmatch(r'string\s+\"(.*)\"', line):
self.e.strz(*m.groups())
elif m := re.fullmatch(r'asciz\s+\"(.*)\"', line):
@ -242,6 +244,7 @@ class Converter:
def convert_condition(op):
if op in ['blt', 'bltu']: return 'iflt', False
if op in ['bne', 'bnez']: return 'ifnz', False
if op in ['beq', 'beqz']: return 'ifz', False
if op in ['ble', 'bleu']: return 'ifgt', True
if op in ['bge', 'bgeu']: return 'ifgteq', False
if op in ['bgt', 'bgtu']: return 'ifgt', False

823
gfx2inc/Cargo.lock generated
View File

@ -8,62 +8,29 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "adler32"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
[[package]]
name = "anyhow"
version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "bit_field"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bumpalo"
version = "3.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
[[package]]
name = "bytemuck"
version = "1.9.1"
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc"
checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
[[package]]
name = "byteorder"
version = "1.4.3"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
dependencies = [
"jobserver",
]
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cfg-if"
@ -71,19 +38,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73"
dependencies = [
"libc",
"num-integer",
"num-traits",
"time",
"winapi",
]
[[package]]
name = "color_quant"
version = "1.1.0"
@ -100,807 +54,78 @@ dependencies = [
]
[[package]]
name = "crossbeam-channel"
version = "0.5.5"
name = "fdeflate"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
dependencies = [
"cfg-if",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
dependencies = [
"cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
dependencies = [
"autocfg",
"cfg-if",
"crossbeam-utils",
"memoffset",
"once_cell",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
dependencies = [
"cfg-if",
"once_cell",
]
[[package]]
name = "deflate"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c86f7e25f518f4b81808a2cf1c50996a61f5c2eb394b2393bd87f2a4780a432f"
dependencies = [
"adler32",
]
[[package]]
name = "either"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "enum-iterator"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2953d1df47ac0eb70086ccabf0275aa8da8591a28bd358ee2b52bd9f9e3ff9e9"
dependencies = [
"enum-iterator-derive",
]
[[package]]
name = "enum-iterator-derive"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8958699f9359f0b04e691a13850d48b7de329138023876d07cbd024c2c820598"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "exr"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14cc0e06fb5f67e5d6beadf3a382fec9baca1aa751c6d5368fdeee7e5932c215"
dependencies = [
"bit_field",
"deflate",
"flume",
"half",
"inflate",
"lebe",
"smallvec",
"threadpool",
"simd-adler32",
]
[[package]]
name = "flate2"
version = "1.0.24"
version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "flume"
version = "0.10.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ceeb589a3157cac0ab8cc585feb749bd2cea5cb55a6ee802ad72d9fd38303da"
dependencies = [
"futures-core",
"futures-sink",
"nanorand",
"pin-project",
"spin",
]
[[package]]
name = "form_urlencoded"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
dependencies = [
"matches",
"percent-encoding",
]
[[package]]
name = "futures-core"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
[[package]]
name = "futures-sink"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
[[package]]
name = "getrandom"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if",
"js-sys",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
"wasm-bindgen",
]
[[package]]
name = "getset"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9"
dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "gfx2inc"
version = "0.1.0"
dependencies = [
"anyhow",
"image",
"vergen",
]
[[package]]
name = "gif"
version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3a7187e78088aead22ceedeee99779455b23fc231fe13ec443f99bb71694e5b"
dependencies = [
"color_quant",
"weezl",
]
[[package]]
name = "git2"
version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0155506aab710a86160ddb504a480d2964d7ab5b9e62419be69e0032bc5931c"
dependencies = [
"bitflags",
"libc",
"libgit2-sys",
"log",
"url",
]
[[package]]
name = "half"
version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "idna"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
dependencies = [
"matches",
"unicode-bidi",
"unicode-normalization",
]
[[package]]
name = "image"
version = "0.24.2"
version = "0.24.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28edd9d7bc256be2502e325ac0628bde30b7001b9b52e0abe31a1a9dc2701212"
checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23"
dependencies = [
"bytemuck",
"byteorder",
"color_quant",
"exr",
"gif",
"jpeg-decoder",
"num-iter",
"num-rational",
"num-traits",
"png",
"scoped_threadpool",
"tiff",
]
[[package]]
name = "inflate"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff"
dependencies = [
"adler32",
]
[[package]]
name = "jobserver"
version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
dependencies = [
"libc",
]
[[package]]
name = "jpeg-decoder"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b"
dependencies = [
"rayon",
]
[[package]]
name = "js-sys"
version = "0.3.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
dependencies = [
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "lebe"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7efd1d698db0759e6ef11a7cd44407407399a910c774dd804c64c032da7826ff"
[[package]]
name = "libc"
version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "libgit2-sys"
version = "0.13.4+1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0fa6563431ede25f5cc7f6d803c6afbc1c5d3ad3d4925d12c882bf2b526f5d1"
dependencies = [
"cc",
"libc",
"libz-sys",
"pkg-config",
]
[[package]]
name = "libz-sys"
version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "lock_api"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
dependencies = [
"autocfg",
"scopeguard",
]
[[package]]
name = "log"
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
[[package]]
name = "matches"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "memoffset"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
[[package]]
name = "miniz_oxide"
version = "0.5.3"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
dependencies = [
"adler",
]
[[package]]
name = "nanorand"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
dependencies = [
"getrandom",
]
[[package]]
name = "num-integer"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-iter"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
"simd-adler32",
]
[[package]]
name = "num-traits"
version = "0.2.15"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
name = "once_cell"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
[[package]]
name = "percent-encoding"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "pin-project"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pkg-config"
version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]]
name = "png"
version = "0.17.5"
version = "0.17.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc38c0ad57efb786dd57b9864e5b18bae478c00c824dc55a38bbc9da95dde3ba"
checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a"
dependencies = [
"bitflags",
"crc32fast",
"deflate",
"fdeflate",
"flate2",
"miniz_oxide",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]]
name = "proc-macro2"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rayon"
version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
dependencies = [
"autocfg",
"crossbeam-deque",
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
"num_cpus",
]
[[package]]
name = "rustversion"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"
[[package]]
name = "scoped_threadpool"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "smallvec"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2"
[[package]]
name = "spin"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c530c2b0d0bf8b69304b39fe2001993e267461948b890cd037d8ad4293fa1a0d"
dependencies = [
"lock_api",
]
[[package]]
name = "syn"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "thiserror"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "threadpool"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
dependencies = [
"num_cpus",
]
[[package]]
name = "tiff"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cfada0986f446a770eca461e8c6566cb879682f7d687c8348aa0c857bd52286"
dependencies = [
"flate2",
"jpeg-decoder",
"weezl",
]
[[package]]
name = "time"
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
dependencies = [
"libc",
"wasi 0.10.0+wasi-snapshot-preview1",
"winapi",
]
[[package]]
name = "tinyvec"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
dependencies = [
"tinyvec_macros",
]
[[package]]
name = "tinyvec_macros"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "unicode-bidi"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]]
name = "unicode-ident"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-normalization"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd"
dependencies = [
"tinyvec",
]
[[package]]
name = "url"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"
dependencies = [
"form_urlencoded",
"idna",
"matches",
"percent-encoding",
]
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vergen"
version = "6.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3893329bee75c101278e0234b646fa72221547d63f97fb66ac112a0569acd110"
dependencies = [
"anyhow",
"cfg-if",
"chrono",
"enum-iterator",
"getset",
"git2",
"rustversion",
"thiserror",
]
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
dependencies = [
"bumpalo",
"lazy_static",
"log",
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
dependencies = [
"proc-macro2",
"quote",
"syn",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
[[package]]
name = "weezl"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c97e489d8f836838d497091de568cf16b117486d529ec5579233521065bd5e4"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"

View File

@ -4,8 +4,4 @@ version = "0.1.0"
edition = "2021"
[dependencies]
image = "0.24.2"
[build-dependencies]
anyhow = "1.0"
vergen = { version = "6", default-features = false, features = ["build", "git"] }
image = { version = "0.24.2", default-features = false, features = ["png"] }

View File

@ -1,8 +0,0 @@
use anyhow::Result;
use vergen::{Config, ShaKind, vergen};
fn main() -> Result<()> {
let mut config = Config::default();
*config.git_mut().sha_kind_mut() = ShaKind::Short;
vergen(config)
}

View File

@ -8,7 +8,10 @@ use image::{DynamicImage, GenericImageView, Pixel};
use image::io::Reader as ImageReader;
fn main() {
let version_string = format!("gfx2inc {} ({})", env!("VERGEN_BUILD_SEMVER"), env!("VERGEN_GIT_SHA_SHORT"));
let version_string = match (option_env!("NIX_SEMVER"), option_env!("NIX_GIT_SHA_SHORT")) {
(Some(semver), Some(sha)) => format!("gfx2inc {semver} ({sha})"),
_ => format!("fox32asm (dev)"),
};
println!("{}", version_string);
let args: Vec<String> = env::args().collect();