From fc42ccbfa29768aa6512b7e328ad8e06fcadf1a5 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 23 May 2021 11:06:37 -0500 Subject: [PATCH] added relative lookups on file_contents directives --- bin/onyx | Bin 366080 -> 366072 bytes include/onyxastnodes.h | 9 ++- include/onyxutils.h | 6 ++ .../immediate_mode/immediate_renderer.onyx | 60 ++---------------- .../shaders/basic_fragment.glsl | 14 ++++ .../immediate_mode/shaders/basic_vertex.glsl | 18 ++++++ .../shaders/textured_fragment.glsl | 14 ++++ src/onyx.c | 54 +--------------- src/onyxparser.c | 2 +- src/onyxutils.c | 51 +++++++++++++++ src/onyxwasm.c | 40 ++++++++---- 11 files changed, 143 insertions(+), 125 deletions(-) create mode 100644 modules/immediate_mode/shaders/basic_fragment.glsl create mode 100644 modules/immediate_mode/shaders/basic_vertex.glsl create mode 100644 modules/immediate_mode/shaders/textured_fragment.glsl diff --git a/bin/onyx b/bin/onyx index 8b041462c9620aaf04f32cb4226d3c956d6ee596..b0d63f12be1bc99483631ffa016291787b97e4a8 100755 GIT binary patch delta 102085 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 xuiNamubMVXL3E;y<$ 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­3 z0Nxsu>FiSSLGa3x3Hx5$Y(#N340yeCf82D^YmUOyXhG>vmGJt#2dTnTBt$% zNmu0$ld;79He3BzyZY*|SvhVOqV~=6}$|f1^Q6BOm5O z$RvL|`DjaRpf@*0kAPRsab5W5@&1g~$5GO^ddl?S%z2%L0$f|x#Oo4v$+(HA?>Bbx z1Dd{`GMQV`-=pGx%3% z!cD#(c@Miik&eBJd}M)Eyo37F$Y(Fp#C-CF7EeJ~2dxXJDrou|rb_VEOs%mxzC`_y zb)Ul5$WnhT`QR$;<9+P256Sx;(flIn@6kN|U2=&|u%9qa%C*;GW94Gsx!+(8at?kKaMw z!!8|7{YS{Vc{pTGoEJ4;SNQ8_3$2*pb*o-++vQGGy(4z^sk*gYHCT^PYTAc*6YS31 z^)U2Q?|5p=gmm!M%FpM{dbM=A@bL^{5e?mH^UJkj z3mTe7KCi~%iXNi^)5isS4p{_A3)M*a=0N7)t&V@*bZiR+HaFzJN~ygUFYW z53{4Xkv~H|bh{?bC{Q=kI1E7Lx;#D!+k4zb^WP)ye^qzk1Wuao$!EVHf1B*M zqCh9h12r#Ld> zy34nwI2H}+i5%1O=S-h@%eB*IPM3qGIbjzG;8K0FudBZJJ9nN?;YKEhJT(-P#n&YXsJ~Csv<8nwB+<|ZR zdTcsUddlMI4lh1VGjfKbqkLk9qhVYR6>k9QzzoMna?_2Dvm4&ecf6!c#dqz#Vfrk` zuW{ON?+w?^cI-;paLHYc?0OptA9Z+Y#eWo(dmqQw%Gm!J*%L48KH(S=7nD~$;pkGw zev87!cQtm QnI|1R;~L4GPdeKDKbCwW(EtDd diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index bd88b7fd..4db208e9 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -504,7 +504,14 @@ struct AstArrayAccess { AstTyped_base; AstTyped *addr; AstTyped *expr; u64 ele struct AstFieldAccess { AstTyped_base; AstTyped *expr; u32 offset; u32 idx; char* field; }; // If token is null, defer to field struct AstSizeOf { AstTyped_base; AstType *so_ast_type; Type *so_type; u64 size; }; struct AstAlignOf { AstTyped_base; AstType *ao_ast_type; Type *ao_type; u64 alignment; }; -struct AstFileContents { AstTyped_base; OnyxToken *filename; u32 addr, size; }; +struct AstFileContents { + AstTyped_base; + + OnyxToken *filename_token; + char *filename; // The parsed file name, with '\' sequences removed and resolved to a particular file if possible. + + u32 addr, size; +}; struct AstUnaryFieldAccess { AstTyped_base; diff --git a/include/onyxutils.h b/include/onyxutils.h index d1369e86..b9c9b219 100644 --- a/include/onyxutils.h +++ b/include/onyxutils.h @@ -30,3 +30,9 @@ u32 char_to_base16_value(char x); // Returns the length after processing the string. i32 string_process_escape_seqs(char* dest, char* src, i32 len); + +// NOTE: This should not be called until immediately before using the return value. +// This function can return a static variable which will change if this is called +// another time. -brendanfh 2020/10/09 +// :RelativeFiles This should lookup for the file relative to "relative_to" +char* lookup_included_file(char* filename, char* relative_to, b32 add_onyx_suffix, b32 search_included_folders); diff --git a/modules/immediate_mode/immediate_renderer.onyx b/modules/immediate_mode/immediate_renderer.onyx index 4fd88b2d..ba7d9259 100644 --- a/modules/immediate_mode/immediate_renderer.onyx +++ b/modules/immediate_mode/immediate_renderer.onyx @@ -3,62 +3,6 @@ package immediate_mode use package core #private_file gl :: package gl -// CLEANUP: Proper multi-line strings need to be added... -// This is a gross abuse of the lexer. -IMMEDIATE_VERTEX_SHADER :: "#version 300 es - -layout(location = 0) in vec2 a_vertex; -layout(location = 1) in vec4 a_color; -layout(location = 2) in vec2 a_texture; - -uniform mat4 u_view; -uniform mat4 u_world; - -out vec4 v_color; -out vec2 v_texture; - -void main() { - gl_Position = u_view * u_world * vec4(a_vertex, 0, 1); - - v_color = a_color; - v_texture = a_texture; -} -" - -IMMEDIATE_FRAGMENT_SHADER :: "#version 300 es - -precision mediump float; - -uniform sampler2D u_texture; - -in vec4 v_color; -in vec2 v_texture; - -out vec4 fragColor; - -void main() { - fragColor = v_color; -} -" - -IMMEDIATE_FRAGMENT_SHADER_TEXTURED :: "#version 300 es - -precision mediump float; - -uniform sampler2D u_texture; - -in vec4 v_color; -in vec2 v_texture; - -out vec4 fragColor; - -void main() { - fragColor = v_color * texture(u_texture, v_texture); -} -" - - - Vector2 :: struct { x, y: f32; } @@ -103,6 +47,10 @@ Immediate_Renderer :: struct { } init :: (use ir: ^Immediate_Renderer, max_verticies := Default_Max_Verticies) { + IMMEDIATE_VERTEX_SHADER :: #file_contents "./shaders/basic_vertex.glsl" + IMMEDIATE_FRAGMENT_SHADER :: #file_contents "./shaders/basic_fragment.glsl" + IMMEDIATE_FRAGMENT_SHADER_TEXTURED :: #file_contents "./shaders/textured_fragment.glsl" + simple_shader = Shader.make_from_source(IMMEDIATE_VERTEX_SHADER, IMMEDIATE_FRAGMENT_SHADER); textured_shader = Shader.make_from_source(IMMEDIATE_VERTEX_SHADER, IMMEDIATE_FRAGMENT_SHADER_TEXTURED); active_shader = ^simple_shader; diff --git a/modules/immediate_mode/shaders/basic_fragment.glsl b/modules/immediate_mode/shaders/basic_fragment.glsl new file mode 100644 index 00000000..f8bc23ca --- /dev/null +++ b/modules/immediate_mode/shaders/basic_fragment.glsl @@ -0,0 +1,14 @@ +#version 300 es + +precision mediump float; + +uniform sampler2D u_texture; + +in vec4 v_color; +in vec2 v_texture; + +out vec4 fragColor; + +void main() { + fragColor = v_color; +} \ No newline at end of file diff --git a/modules/immediate_mode/shaders/basic_vertex.glsl b/modules/immediate_mode/shaders/basic_vertex.glsl new file mode 100644 index 00000000..4c6edf42 --- /dev/null +++ b/modules/immediate_mode/shaders/basic_vertex.glsl @@ -0,0 +1,18 @@ +#version 300 es + +layout(location = 0) in vec2 a_vertex; +layout(location = 1) in vec4 a_color; +layout(location = 2) in vec2 a_texture; + +uniform mat4 u_view; +uniform mat4 u_world; + +out vec4 v_color; +out vec2 v_texture; + +void main() { + gl_Position = u_view * u_world * vec4(a_vertex, 0, 1); + + v_color = a_color; + v_texture = a_texture; +} \ No newline at end of file diff --git a/modules/immediate_mode/shaders/textured_fragment.glsl b/modules/immediate_mode/shaders/textured_fragment.glsl new file mode 100644 index 00000000..186e4c96 --- /dev/null +++ b/modules/immediate_mode/shaders/textured_fragment.glsl @@ -0,0 +1,14 @@ +#version 300 es + +precision mediump float; + +uniform sampler2D u_texture; + +in vec4 v_color; +in vec2 v_texture; + +out vec4 fragColor; + +void main() { + fragColor = v_color * texture(u_texture, v_texture); +} \ No newline at end of file diff --git a/src/onyx.c b/src/onyx.c index 01c5977c..ea6a5e58 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -206,58 +206,6 @@ static void context_free() { compile_opts_free(context.options); } -// NOTE: This should not be called until immediately before using the return value. -// This function can return a static variable which will change if this is called -// another time. -brendanfh 2020/10/09 -// :RelativeFiles This should lookup for the file relative to "relative_to" -static char* lookup_included_file(char* filename, char* relative_to) { - assert(relative_to != NULL); - - static char path[256]; - fori (i, 0, 256) path[i] = 0; - - static char fn[128]; - fori (i, 0, 128) fn[i] = 0; - - if (!bh_str_ends_with(filename, ".onyx")) { - bh_snprintf(fn, 128, "%s.onyx", filename); - } else { - bh_snprintf(fn, 128, "%s", filename); - } - -#if defined(_BH_LINUX) - #define DIR_SEPARATOR '/' -#elif defined(_BH_WINDOWS) - #define DIR_SEPARATOR '\\' -#endif - - fori (i, 0, 128) if (fn[i] == '/') fn[i] = DIR_SEPARATOR; - - if (bh_str_starts_with(filename, "./")) { - if (relative_to[strlen(relative_to) - 1] != DIR_SEPARATOR) - bh_snprintf(path, 256, "%s%c%s", relative_to, DIR_SEPARATOR, fn); - else - bh_snprintf(path, 256, "%s%s", relative_to, fn); - - if (bh_file_exists(path)) return bh_path_get_full_name(path, global_scratch_allocator); - - return fn; - } - - bh_arr_each(const char *, folder, context.options->included_folders) { - if ((*folder)[strlen(*folder) - 1] != DIR_SEPARATOR) - bh_snprintf(path, 256, "%s%c%s", *folder, DIR_SEPARATOR, fn); - else - bh_snprintf(path, 256, "%s%s", *folder, fn); - - if (bh_file_exists(path)) return bh_path_get_full_name(path, global_scratch_allocator); - } - - return fn; - -#undef DIR_SEPARATOR -} - static void parse_source_file(bh_file_contents* file_contents) { // :Remove passing the allocators as parameters OnyxTokenizer tokenizer = onyx_tokenizer_create(context.token_alloc, file_contents); @@ -304,7 +252,7 @@ static void process_load_entity(Entity* ent) { char* parent_folder = bh_path_get_parent(parent_file, global_scratch_allocator); - char* filename = lookup_included_file(include->name, parent_folder); + char* filename = lookup_included_file(include->name, parent_folder, 1, 1); char* formatted_name = bh_strdup(global_heap_allocator, filename); process_source_file(formatted_name, include->token->pos); diff --git a/src/onyxparser.c b/src/onyxparser.c index c24ff4e8..0b7195c6 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -483,7 +483,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { if (parse_possible_directive(parser, "file_contents")) { AstFileContents* fc = make_node(AstFileContents, Ast_Kind_File_Contents); fc->token = parser->prev - 1; - fc->filename = expect_token(parser, Token_Type_Literal_String); + fc->filename_token = expect_token(parser, Token_Type_Literal_String); fc->type = type_make_slice(parser->allocator, &basic_types[Basic_Kind_U8]); ENTITY_SUBMIT(fc); diff --git a/src/onyxutils.c b/src/onyxutils.c index 49a10a9f..64a44ff1 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -1452,3 +1452,54 @@ i32 string_process_escape_seqs(char* dest, char* src, i32 len) { return total_len; } + +char* lookup_included_file(char* filename, char* relative_to, b32 add_onyx_suffix, b32 search_included_folders) { + assert(relative_to != NULL); + + static char path[256]; + fori (i, 0, 256) path[i] = 0; + + static char fn[128]; + fori (i, 0, 128) fn[i] = 0; + + if (!bh_str_ends_with(filename, ".onyx") && add_onyx_suffix) { + bh_snprintf(fn, 128, "%s.onyx", filename); + } else { + bh_snprintf(fn, 128, "%s", filename); + } + +#if defined(_BH_LINUX) + #define DIR_SEPARATOR '/' +#elif defined(_BH_WINDOWS) + #define DIR_SEPARATOR '\\' +#endif + + fori (i, 0, 128) if (fn[i] == '/') fn[i] = DIR_SEPARATOR; + + if (bh_str_starts_with(filename, "./")) { + if (relative_to[strlen(relative_to) - 1] != DIR_SEPARATOR) + bh_snprintf(path, 256, "%s%c%s", relative_to, DIR_SEPARATOR, fn + 2); + else + bh_snprintf(path, 256, "%s%s", relative_to, fn + 2); + + if (bh_file_exists(path)) return bh_path_get_full_name(path, global_scratch_allocator); + + return fn; + } + + if (search_included_folders) { + bh_arr_each(const char *, folder, context.options->included_folders) { + if ((*folder)[strlen(*folder) - 1] != DIR_SEPARATOR) + bh_snprintf(path, 256, "%s%c%s", *folder, DIR_SEPARATOR, fn); + else + bh_snprintf(path, 256, "%s%s", *folder, fn); + + if (bh_file_exists(path)) return bh_path_get_full_name(path, global_scratch_allocator); + } + } + + return fn; + +#undef DIR_SEPARATOR +} + diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 43b21cb1..851c7444 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -3081,26 +3081,40 @@ static void emit_memory_reservation(OnyxWasmModule* mod, AstMemRes* memres) { } static void emit_file_contents(OnyxWasmModule* mod, AstFileContents* fc) { - token_toggle_end(fc->filename); + token_toggle_end(fc->filename_token); - if (bh_table_has(StrLitInfo, mod->loaded_file_info, fc->filename->text)) { - StrLitInfo info = bh_table_get(StrLitInfo, mod->loaded_file_info, fc->filename->text); + // INVESTIGATE: I think that filename should always be NULL when this function starts because + // a file contents entity is only processed once and therefore should only go through this step + // once. But somehow filename isn't NULL occasionally so I have to check for that... + // - brendanfh 2021/05/23 + if (fc->filename == NULL) { + const char* parent_file = fc->token->pos.filename; + if (parent_file == NULL) parent_file = "."; + + char* parent_folder = bh_path_get_parent(parent_file, global_scratch_allocator); + + char* temp_fn = bh_alloc_array(global_scratch_allocator, char, fc->filename_token->length); + i32 temp_fn_len = string_process_escape_seqs(temp_fn, fc->filename_token->text, fc->filename_token->length); + char* filename = lookup_included_file(temp_fn, parent_folder, 0, 0); + fc->filename = bh_strdup(global_heap_allocator, filename); + } + + token_toggle_end(fc->filename_token); + + if (bh_table_has(StrLitInfo, mod->loaded_file_info, fc->filename)) { + StrLitInfo info = bh_table_get(StrLitInfo, mod->loaded_file_info, fc->filename); fc->addr = info.addr; fc->size = info.len; - - token_toggle_end(fc->filename); return; } u32 offset = mod->next_datum_offset; bh_align(offset, 16); - if (!bh_file_exists(fc->filename->text)) { - onyx_report_error(fc->filename->pos, + if (!bh_file_exists(fc->filename)) { + onyx_report_error(fc->filename_token->pos, "Unable to open file for reading, '%s'.", - fc->filename->text); - - token_toggle_end(fc->filename); + fc->filename); return; } @@ -3108,14 +3122,14 @@ static void emit_file_contents(OnyxWasmModule* mod, AstFileContents* fc) { // if the filename is prefixed with a './' or '.\\' then it should be relative to the // file in which is was inclded. The loaded file info above should probably use the full // file path in order to avoid duplicates. - bh_file_contents contents = bh_file_read_contents(global_heap_allocator, fc->filename->text); + bh_file_contents contents = bh_file_read_contents(global_heap_allocator, fc->filename); u8* actual_data = bh_alloc(global_heap_allocator, contents.length + 1); u32 length = contents.length + 1; memcpy(actual_data, contents.data, contents.length); actual_data[contents.length] = 0; bh_file_contents_free(&contents); - bh_table_put(StrLitInfo, mod->loaded_file_info, fc->filename->text, ((StrLitInfo) { + bh_table_put(StrLitInfo, mod->loaded_file_info, fc->filename, ((StrLitInfo) { .addr = offset, .len = length - 1, })); @@ -3132,8 +3146,6 @@ static void emit_file_contents(OnyxWasmModule* mod, AstFileContents* fc) { bh_arr_push(mod->data, datum); mod->next_datum_offset = offset + length; - - token_toggle_end(fc->filename); } OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc) { -- 2.25.1