From de56231f4a61ea300e2d073f86d8596df9f27b8f Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 31 May 2024 17:29:25 -0700 Subject: [PATCH] generation folder output override in metaprogram --- src/metagen/metagen.h | 1 + src/metagen/metagen_main.c | 24 ++++++++----------- .../{generated => lib}/rdi_format.c | 0 .../{generated => lib}/rdi_format.h | 0 src/rdi_format/rdi_format.mdesk | 2 +- 5 files changed, 12 insertions(+), 15 deletions(-) rename src/rdi_format/{generated => lib}/rdi_format.c (100%) rename src/rdi_format/{generated => lib}/rdi_format.h (100%) diff --git a/src/metagen/metagen.h b/src/metagen/metagen.h index 1026eb39..339397c1 100644 --- a/src/metagen/metagen.h +++ b/src/metagen/metagen.h @@ -213,6 +213,7 @@ struct MG_Layer { String8 key; B32 is_library; + String8 gen_folder_name; String8 h_name_override; String8 c_name_override; String8List enums; diff --git a/src/metagen/metagen_main.c b/src/metagen/metagen_main.c index 2f85ec09..2a75ca63 100644 --- a/src/metagen/metagen_main.c +++ b/src/metagen/metagen_main.c @@ -166,19 +166,10 @@ int main(int argument_count, char **arguments) layer->is_library = 1; } } - } - } - - ////////////////////////////// - //- rjf: gather hand-written h/c names & decorations - // - for(MG_FileParseNode *n = parses.first; n != 0; n = n->next) - { - MD_Node *file = n->v.root; - String8 layer_key = mg_layer_key_from_path(file->string); - MG_Layer *layer = mg_layer_from_key(layer_key); - for(MD_EachNode(node, file->first)) - { + if(md_node_has_tag(node, str8_lit("gen_folder"), 0)) + { + layer->gen_folder_name = node->string; + } if(md_node_has_tag(node, str8_lit("h_name"), 0)) { layer->h_name_override = node->string; @@ -499,7 +490,12 @@ int main(int argument_count, char **arguments) for(MG_LayerNode *n = slot->first; n != 0; n = n->next) { MG_Layer *layer = &n->v; - String8 layer_generated_folder = push_str8f(mg_arena, "%S/%S/generated", code_dir_path, layer->key); + String8 gen_folder = str8_lit("generated"); + if(layer->gen_folder_name.size != 0) + { + gen_folder = layer->gen_folder_name; + } + String8 layer_generated_folder = push_str8f(mg_arena, "%S/%S/%S", code_dir_path, layer->key, gen_folder); if(os_make_directory(layer_generated_folder)) { String8List layer_key_parts = str8_split_path(mg_arena, layer->key); diff --git a/src/rdi_format/generated/rdi_format.c b/src/rdi_format/lib/rdi_format.c similarity index 100% rename from src/rdi_format/generated/rdi_format.c rename to src/rdi_format/lib/rdi_format.c diff --git a/src/rdi_format/generated/rdi_format.h b/src/rdi_format/lib/rdi_format.h similarity index 100% rename from src/rdi_format/generated/rdi_format.h rename to src/rdi_format/lib/rdi_format.h diff --git a/src/rdi_format/rdi_format.mdesk b/src/rdi_format/rdi_format.mdesk index ddc1332b..8a560b4f 100644 --- a/src/rdi_format/rdi_format.mdesk +++ b/src/rdi_format/rdi_format.mdesk @@ -5,7 +5,7 @@ //~ rjf: Generated File Format @option library - +@gen_folder "lib" @h_name "rdi_format.h" @c_name "rdi_format.c"