From 334c0c2c97d5b8774505dc5c1339464240e285f2 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sun, 27 Aug 2023 21:59:03 -0500 Subject: [PATCH] Feature: Add -U/--under parameter to Featureless Make. I discovered that the data build directory customization is incomplete while working on the Kevux Tools TacocaT program. A new parameter to specify a sub-directory within the data directory, called "under", represented by -U and --under is now added. This provides the ability to change the "build" part of the "data/build" directory. This can even be an empty string. The fakefile documentation and specification is updated because this parameter must now be reserved and exposed to IKI expansion. I have not yet done a thorough test of this feature and I will hopefully do this before the next release. I have performed a basic test and I can now compile the TacocaT program easily using this parameter. --- level_3/fake/c/main/build.c | 5 ++++- level_3/fake/c/main/common.c | 8 +++++++- level_3/fake/c/main/common/enumeration.h | 4 +++- level_3/fake/c/main/common/string.c | 5 +++++ level_3/fake/c/main/common/string.h | 15 +++++++++++++++ level_3/fake/c/main/common/type.c | 4 ++++ level_3/fake/c/main/common/type.h | 6 ++++++ level_3/fake/c/main/fake/path_generate.c | 2 +- level_3/fake/c/main/make/load_parameters.c | 8 +++++++- level_3/fake/c/main/make/operate.c | 8 +++++++- level_3/fake/c/main/make/operate_process_type.c | 8 +++++++- level_3/fake/c/main/make/operate_validate_type.c | 5 ++++- level_3/fake/c/main/print/message.c | 1 + level_3/fake/data/documentation/man/man1/fake.1 | 5 ++++- level_3/fake/documents/fakefile.txt | 5 +++++ level_3/fake/specifications/fakefile.txt | 2 +- 16 files changed, 81 insertions(+), 10 deletions(-) diff --git a/level_3/fake/c/main/build.c b/level_3/fake/c/main/build.c index c8066fd..ca7aa35 100644 --- a/level_3/fake/c/main/build.c +++ b/level_3/fake/c/main/build.c @@ -427,6 +427,7 @@ extern "C" { f_console_symbol_short_normal_s, // fake_short_process_s f_console_symbol_short_normal_s, // fake_short_settings_s f_console_symbol_short_normal_s, // fake_short_sources_s + f_console_symbol_short_normal_s, // fake_short_under_s f_console_symbol_short_normal_s, // fake_short_work_s }; @@ -439,6 +440,7 @@ extern "C" { fake_short_process_s, fake_short_settings_s, fake_short_sources_s, + fake_short_under_s, fake_short_work_s, }; @@ -451,10 +453,11 @@ extern "C" { main->setting.process, main->setting.settings, data_build->setting.path_sources, + main->setting.under, main->setting.work, }; - main->setting.state.status = fll_execute_arguments_add_parameter_set(prefixs, names, values, 9, &main->cache_arguments); + main->setting.state.status = fll_execute_arguments_add_parameter_set(prefixs, names, values, 10, &main->cache_arguments); f_memory_array_resize(0, sizeof(f_char_t), (void **) &defines.string, &defines.used, &defines.size); diff --git a/level_3/fake/c/main/common.c b/level_3/fake/c/main/common.c index 05f0d3e..6ac9d2a 100644 --- a/level_3/fake/c/main/common.c +++ b/level_3/fake/c/main/common.c @@ -155,6 +155,7 @@ extern "C" { fake_parameter_process_e, fake_parameter_settings_e, fake_parameter_sources_e, + fake_parameter_under_e, fake_parameter_work_e, }; @@ -167,6 +168,7 @@ extern "C" { fake_long_process_s, fake_long_settings_s, fake_long_sources_s, + fake_long_under_s, fake_long_work_s, }; @@ -179,6 +181,7 @@ extern "C" { &main->setting.process, &main->setting.settings, &main->setting.sources, + &main->setting.under, &main->setting.work, }; @@ -190,6 +193,7 @@ extern "C" { main->setting.process.used = 0; main->setting.settings.used = 0; main->setting.sources.used = 0; + main->setting.under.used = 0; main->setting.work.used = 0; const f_string_static_t defaults[] = { @@ -201,6 +205,7 @@ extern "C" { fake_default_process_s, fake_default_settings_s, fake_default_sources_s, + fake_path_part_build_s, fake_default_work_s, }; @@ -213,10 +218,11 @@ extern "C" { F_false, // fake_parameter_process_e F_false, // fake_parameter_settings_e F_false, // fake_parameter_sources_e + F_false, // fake_parameter_under_e F_true, // fake_parameter_work_e }; - for (i = 0; i < 9; ++i) { + for (i = 0; i < 10; ++i) { if ((main->program.parameters.array[parameters[i]].result & f_console_result_found_e) && !(main->program.parameters.array[parameters[i]].result & f_console_result_value_e)) { main->setting.state.status = F_status_set_error(F_parameter); diff --git a/level_3/fake/c/main/common/enumeration.h b/level_3/fake/c/main/common/enumeration.h index 58aa555..97dc645 100644 --- a/level_3/fake/c/main/common/enumeration.h +++ b/level_3/fake/c/main/common/enumeration.h @@ -31,6 +31,7 @@ extern "C" { fake_parameter_process_e, fake_parameter_settings_e, fake_parameter_sources_e, + fake_parameter_under_e, fake_parameter_work_e, fake_parameter_documents_disable_e, @@ -60,6 +61,7 @@ extern "C" { macro_f_console_parameter_t_initialize_3(fake_short_process_s, fake_long_process_s, 1, f_console_flag_normal_e), \ macro_f_console_parameter_t_initialize_3(fake_short_settings_s, fake_long_settings_s, 1, f_console_flag_normal_e), \ macro_f_console_parameter_t_initialize_3(fake_short_sources_s, fake_long_sources_s, 1, f_console_flag_normal_e), \ + macro_f_console_parameter_t_initialize_3(fake_short_under_s, fake_long_under_s, 1, f_console_flag_normal_e), \ macro_f_console_parameter_t_initialize_3(fake_short_work_s, fake_long_work_s, 1, f_console_flag_normal_e), \ \ macro_f_console_parameter_t_initialize_5(fake_long_documents_disabled_s, 0, f_console_flag_normal_e), \ @@ -75,7 +77,7 @@ extern "C" { macro_f_console_parameter_t_initialize_6(fake_other_operation_skeleton_s, 0, f_console_flag_simple_e), \ } - #define fake_parameter_total_d 34 + #define fake_parameter_total_d 35 #endif // _di_fake_parameter_e_ /** diff --git a/level_3/fake/c/main/common/string.c b/level_3/fake/c/main/common/string.c index d5ba5d8..1864825 100644 --- a/level_3/fake/c/main/common/string.c +++ b/level_3/fake/c/main/common/string.c @@ -70,6 +70,7 @@ extern "C" { const f_string_static_t fake_short_process_s = macro_f_string_static_t_initialize_1(FAKE_short_process_s, 0, FAKE_short_process_s_length); const f_string_static_t fake_short_settings_s = macro_f_string_static_t_initialize_1(FAKE_short_settings_s, 0, FAKE_short_settings_s_length); const f_string_static_t fake_short_sources_s = macro_f_string_static_t_initialize_1(FAKE_short_sources_s, 0, FAKE_short_sources_s_length); + const f_string_static_t fake_short_under_s = macro_f_string_static_t_initialize_1(FAKE_short_under_s, 0, FAKE_short_under_s_length); const f_string_static_t fake_short_work_s = macro_f_string_static_t_initialize_1(FAKE_short_work_s, 0, FAKE_short_work_s_length); const f_string_static_t fake_long_build_s = macro_f_string_static_t_initialize_1(FAKE_long_build_s, 0, FAKE_long_build_s_length); @@ -82,6 +83,7 @@ extern "C" { const f_string_static_t fake_long_process_s = macro_f_string_static_t_initialize_1(FAKE_long_process_s, 0, FAKE_long_process_s_length); const f_string_static_t fake_long_settings_s = macro_f_string_static_t_initialize_1(FAKE_long_settings_s, 0, FAKE_long_settings_s_length); const f_string_static_t fake_long_sources_s = macro_f_string_static_t_initialize_1(FAKE_long_sources_s, 0, FAKE_long_sources_s_length); + const f_string_static_t fake_long_under_s = macro_f_string_static_t_initialize_1(FAKE_long_under_s, 0, FAKE_long_under_s_length); const f_string_static_t fake_long_work_s = macro_f_string_static_t_initialize_1(FAKE_long_work_s, 0, FAKE_long_work_s_length); const f_string_static_t fake_long_documents_disabled_s = macro_f_string_static_t_initialize_1(FAKE_long_documents_disabled_s, 0, FAKE_long_documents_disabled_s_length); @@ -221,6 +223,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_settings_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_settings_s, 0, FAKE_make_parameter_variable_settings_s_length); const f_string_static_t fake_make_parameter_variable_sources_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_sources_s, 0, FAKE_make_parameter_variable_sources_s_length); const f_string_static_t fake_make_parameter_variable_top_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_top_s, 0, FAKE_make_parameter_variable_top_s_length); + const f_string_static_t fake_make_parameter_variable_under_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_under_s, 0, FAKE_make_parameter_variable_under_s_length); const f_string_static_t fake_make_parameter_variable_verbosity_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_verbosity_s, 0, FAKE_make_parameter_variable_verbosity_s_length); const f_string_static_t fake_make_parameter_variable_work_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_work_s, 0, FAKE_make_parameter_variable_work_s_length); @@ -235,6 +238,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_option_process_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_process_s, 0, FAKE_make_parameter_variable_option_process_s_length); const f_string_static_t fake_make_parameter_variable_option_settings_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_settings_s, 0, FAKE_make_parameter_variable_option_settings_s_length); const f_string_static_t fake_make_parameter_variable_option_sources_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_sources_s, 0, FAKE_make_parameter_variable_option_sources_s_length); + const f_string_static_t fake_make_parameter_variable_option_under_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_under_s, 0, FAKE_make_parameter_variable_option_under_s_length); const f_string_static_t fake_make_parameter_variable_option_verbosity_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_verbosity_s, 0, FAKE_make_parameter_variable_option_verbosity_s_length); const f_string_static_t fake_make_parameter_variable_option_work_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_option_work_s, 0, FAKE_make_parameter_variable_option_work_s_length); @@ -249,6 +253,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_value_process_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_process_s, 0, FAKE_make_parameter_variable_value_process_s_length); const f_string_static_t fake_make_parameter_variable_value_settings_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_settings_s, 0, FAKE_make_parameter_variable_value_settings_s_length); const f_string_static_t fake_make_parameter_variable_value_sources_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_sources_s, 0, FAKE_make_parameter_variable_value_sources_s_length); + const f_string_static_t fake_make_parameter_variable_value_under_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_under_s, 0, FAKE_make_parameter_variable_value_under_s_length); const f_string_static_t fake_make_parameter_variable_value_verbosity_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_verbosity_s, 0, FAKE_make_parameter_variable_value_verbosity_s_length); const f_string_static_t fake_make_parameter_variable_value_work_s = macro_f_string_static_t_initialize_1(FAKE_make_parameter_variable_value_work_s, 0, FAKE_make_parameter_variable_value_work_s_length); #endif // _di_fake_make_parameter_t_ diff --git a/level_3/fake/c/main/common/string.h b/level_3/fake/c/main/common/string.h index b05d1ca..d6661fa 100644 --- a/level_3/fake/c/main/common/string.h +++ b/level_3/fake/c/main/common/string.h @@ -208,6 +208,7 @@ extern "C" { #define FAKE_short_process_s "p" #define FAKE_short_settings_s "s" #define FAKE_short_sources_s "S" + #define FAKE_short_under_s "U" #define FAKE_short_work_s "w" #define FAKE_long_build_s "build" @@ -220,6 +221,7 @@ extern "C" { #define FAKE_long_process_s "process" #define FAKE_long_settings_s "settings" #define FAKE_long_sources_s "sources" + #define FAKE_long_under_s "under" #define FAKE_long_work_s "work" // These special parameters are provided in such a way that they mimic the traditional ./configure script. @@ -245,6 +247,7 @@ extern "C" { #define FAKE_short_process_s_length 1 #define FAKE_short_settings_s_length 1 #define FAKE_short_sources_s_length 1 + #define FAKE_short_under_s_length 1 #define FAKE_short_work_s_length 1 #define FAKE_long_build_s_length 5 @@ -257,6 +260,7 @@ extern "C" { #define FAKE_long_process_s_length 7 #define FAKE_long_settings_s_length 8 #define FAKE_long_sources_s_length 7 + #define FAKE_long_under_s_length 5 #define FAKE_long_work_s_length 4 #define FAKE_long_documents_disabled_s_length 11 @@ -281,6 +285,7 @@ extern "C" { extern const f_string_static_t fake_short_process_s; extern const f_string_static_t fake_short_settings_s; extern const f_string_static_t fake_short_sources_s; + extern const f_string_static_t fake_short_under_s; extern const f_string_static_t fake_short_work_s; extern const f_string_static_t fake_long_build_s; @@ -293,6 +298,7 @@ extern "C" { extern const f_string_static_t fake_long_process_s; extern const f_string_static_t fake_long_settings_s; extern const f_string_static_t fake_long_sources_s; + extern const f_string_static_t fake_long_under_s; extern const f_string_static_t fake_long_work_s; extern const f_string_static_t fake_long_documents_disabled_s; @@ -628,6 +634,7 @@ extern "C" { #define FAKE_make_parameter_variable_settings_s "settings" #define FAKE_make_parameter_variable_sources_s "sources" #define FAKE_make_parameter_variable_top_s "top" + #define FAKE_make_parameter_variable_under_s "under" #define FAKE_make_parameter_variable_verbosity_s "verbosity" #define FAKE_make_parameter_variable_work_s "work" @@ -642,6 +649,7 @@ extern "C" { #define FAKE_make_parameter_variable_option_process_s FAKE_make_parameter_variable_process_s FAKE_make_parameter_iki_option_s #define FAKE_make_parameter_variable_option_settings_s FAKE_make_parameter_variable_settings_s FAKE_make_parameter_iki_option_s #define FAKE_make_parameter_variable_option_sources_s FAKE_make_parameter_variable_sources_s FAKE_make_parameter_iki_option_s + #define FAKE_make_parameter_variable_option_under_s FAKE_make_parameter_variable_under_s FAKE_make_parameter_iki_option_s #define FAKE_make_parameter_variable_option_verbosity_s FAKE_make_parameter_variable_verbosity_s FAKE_make_parameter_iki_option_s #define FAKE_make_parameter_variable_option_work_s FAKE_make_parameter_variable_work_s FAKE_make_parameter_iki_option_s @@ -656,6 +664,7 @@ extern "C" { #define FAKE_make_parameter_variable_value_process_s FAKE_make_parameter_variable_process_s FAKE_make_parameter_iki_value_s #define FAKE_make_parameter_variable_value_settings_s FAKE_make_parameter_variable_settings_s FAKE_make_parameter_iki_value_s #define FAKE_make_parameter_variable_value_sources_s FAKE_make_parameter_variable_sources_s FAKE_make_parameter_iki_value_s + #define FAKE_make_parameter_variable_value_under_s FAKE_make_parameter_variable_under_s FAKE_make_parameter_iki_value_s #define FAKE_make_parameter_variable_value_verbosity_s FAKE_make_parameter_variable_verbosity_s FAKE_make_parameter_iki_value_s #define FAKE_make_parameter_variable_value_work_s FAKE_make_parameter_variable_work_s FAKE_make_parameter_iki_value_s @@ -677,6 +686,7 @@ extern "C" { #define FAKE_make_parameter_variable_settings_s_length 8 #define FAKE_make_parameter_variable_sources_s_length 7 #define FAKE_make_parameter_variable_top_s_length 3 + #define FAKE_make_parameter_variable_under_s_length 5 #define FAKE_make_parameter_variable_verbosity_s_length 9 #define FAKE_make_parameter_variable_work_s_length 4 @@ -691,6 +701,7 @@ extern "C" { #define FAKE_make_parameter_variable_option_process_s_length FAKE_make_parameter_variable_process_s_length + FAKE_make_parameter_iki_option_s_length #define FAKE_make_parameter_variable_option_settings_s_length FAKE_make_parameter_variable_settings_s_length + FAKE_make_parameter_iki_option_s_length #define FAKE_make_parameter_variable_option_sources_s_length FAKE_make_parameter_variable_sources_s_length + FAKE_make_parameter_iki_option_s_length + #define FAKE_make_parameter_variable_option_under_s_length FAKE_make_parameter_variable_under_s_length + FAKE_make_parameter_iki_option_s_length #define FAKE_make_parameter_variable_option_verbosity_s_length FAKE_make_parameter_variable_verbosity_s_length + FAKE_make_parameter_iki_option_s_length #define FAKE_make_parameter_variable_option_work_s_length FAKE_make_parameter_variable_work_s_length + FAKE_make_parameter_iki_option_s_length @@ -705,6 +716,7 @@ extern "C" { #define FAKE_make_parameter_variable_value_process_s_length FAKE_make_parameter_variable_process_s_length + FAKE_make_parameter_iki_value_s_length #define FAKE_make_parameter_variable_value_settings_s_length FAKE_make_parameter_variable_settings_s_length + FAKE_make_parameter_iki_value_s_length #define FAKE_make_parameter_variable_value_sources_s_length FAKE_make_parameter_variable_sources_s_length + FAKE_make_parameter_iki_value_s_length + #define FAKE_make_parameter_variable_value_under_s_length FAKE_make_parameter_variable_under_s_length + FAKE_make_parameter_iki_value_s_length #define FAKE_make_parameter_variable_value_verbosity_s_length FAKE_make_parameter_variable_verbosity_s_length + FAKE_make_parameter_iki_value_s_length #define FAKE_make_parameter_variable_value_work_s_length FAKE_make_parameter_variable_work_s_length + FAKE_make_parameter_iki_value_s_length @@ -725,6 +737,7 @@ extern "C" { extern const f_string_static_t fake_make_parameter_variable_settings_s; extern const f_string_static_t fake_make_parameter_variable_sources_s; extern const f_string_static_t fake_make_parameter_variable_top_s; + extern const f_string_static_t fake_make_parameter_variable_under_s; extern const f_string_static_t fake_make_parameter_variable_verbosity_s; extern const f_string_static_t fake_make_parameter_variable_work_s; @@ -739,6 +752,7 @@ extern "C" { extern const f_string_static_t fake_make_parameter_variable_option_process_s; extern const f_string_static_t fake_make_parameter_variable_option_settings_s; extern const f_string_static_t fake_make_parameter_variable_option_sources_s; + extern const f_string_static_t fake_make_parameter_variable_option_under_s; extern const f_string_static_t fake_make_parameter_variable_option_verbosity_s; extern const f_string_static_t fake_make_parameter_variable_option_work_s; @@ -753,6 +767,7 @@ extern "C" { extern const f_string_static_t fake_make_parameter_variable_value_process_s; extern const f_string_static_t fake_make_parameter_variable_value_settings_s; extern const f_string_static_t fake_make_parameter_variable_value_sources_s; + extern const f_string_static_t fake_make_parameter_variable_value_under_s; extern const f_string_static_t fake_make_parameter_variable_value_verbosity_s; extern const f_string_static_t fake_make_parameter_variable_value_work_s; #endif // _di_fake_make_parameter_s_ diff --git a/level_3/fake/c/main/common/type.c b/level_3/fake/c/main/common/type.c index 554f96d..6524675 100644 --- a/level_3/fake/c/main/common/type.c +++ b/level_3/fake/c/main/common/type.c @@ -225,6 +225,7 @@ extern "C" { f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.process.array, &data_make->parameter.process.used, &data_make->parameter.process.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.settings.array, &data_make->parameter.settings.used, &data_make->parameter.settings.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.sources.array, &data_make->parameter.sources.used, &data_make->parameter.sources.size, &f_string_dynamics_delete_callback); + f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.under.array, &data_make->parameter.under.used, &data_make->parameter.under.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.verbosity.array, &data_make->parameter.verbosity.used, &data_make->parameter.verbosity.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter.work.array, &data_make->parameter.work.used, &data_make->parameter.work.size, &f_string_dynamics_delete_callback); @@ -239,6 +240,7 @@ extern "C" { f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.process.array, &data_make->parameter_option.process.used, &data_make->parameter_option.process.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.settings.array, &data_make->parameter_option.settings.used, &data_make->parameter_option.settings.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.sources.array, &data_make->parameter_option.sources.used, &data_make->parameter_option.sources.size, &f_string_dynamics_delete_callback); + f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.under.array, &data_make->parameter_option.under.used, &data_make->parameter_option.under.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.verbosity.array, &data_make->parameter_option.verbosity.used, &data_make->parameter_option.verbosity.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_option.work.array, &data_make->parameter_option.work.used, &data_make->parameter_option.work.size, &f_string_dynamics_delete_callback); @@ -253,6 +255,7 @@ extern "C" { f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.process.array, &data_make->parameter_value.process.used, &data_make->parameter_value.process.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.settings.array, &data_make->parameter_value.settings.used, &data_make->parameter_value.settings.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.sources.array, &data_make->parameter_value.sources.used, &data_make->parameter_value.sources.size, &f_string_dynamics_delete_callback); + f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.under.array, &data_make->parameter_value.under.used, &data_make->parameter_value.under.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.verbosity.array, &data_make->parameter_value.verbosity.used, &data_make->parameter_value.verbosity.size, &f_string_dynamics_delete_callback); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &data_make->parameter_value.work.array, &data_make->parameter_value.work.used, &data_make->parameter_value.work.size, &f_string_dynamics_delete_callback); @@ -282,6 +285,7 @@ extern "C" { f_memory_array_resize(0, sizeof(f_char_t), (void **) &setting->process.string, &setting->process.used, &setting->process.size); f_memory_array_resize(0, sizeof(f_char_t), (void **) &setting->settings.string, &setting->settings.used, &setting->settings.size); f_memory_array_resize(0, sizeof(f_char_t), (void **) &setting->sources.string, &setting->sources.used, &setting->sources.size); + f_memory_array_resize(0, sizeof(f_char_t), (void **) &setting->under.string, &setting->under.used, &setting->under.size); f_memory_array_resize(0, sizeof(f_char_t), (void **) &setting->work.string, &setting->work.used, &setting->work.size); f_memory_arrays_resize(0, sizeof(f_string_dynamic_t), (void **) &setting->defines.array, &setting->defines.used, &setting->defines.size, &f_string_dynamics_delete_callback); diff --git a/level_3/fake/c/main/common/type.h b/level_3/fake/c/main/common/type.h index c605b75..c85fa66 100644 --- a/level_3/fake/c/main/common/type.h +++ b/level_3/fake/c/main/common/type.h @@ -71,6 +71,7 @@ extern "C" { * - process: The process name. * - settings: The settings file path. * - sources: The sources directory. + * - under: The under directory. * - work: The work directory. * - defines: The define data. @@ -93,6 +94,7 @@ extern "C" { f_string_dynamic_t process; f_string_dynamic_t settings; f_string_dynamic_t sources; + f_string_dynamic_t under; f_string_dynamic_t work; f_string_dynamics_t defines; @@ -115,6 +117,7 @@ extern "C" { f_string_dynamic_t_initialize, \ f_string_dynamic_t_initialize, \ f_string_dynamic_t_initialize, \ + f_string_dynamic_t_initialize, \ f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ f_uint8s_t_initialize, \ @@ -774,6 +777,7 @@ extern "C" { * - process: The process parameters. * - settings: The setting parameters. * - sources: The source parameters. + * - under: The under parameters. * - verbosity: The verbosity parameters. * - work: The work parameters. */ @@ -790,6 +794,7 @@ extern "C" { f_string_dynamics_t process; f_string_dynamics_t settings; f_string_dynamics_t sources; + f_string_dynamics_t under; f_string_dynamics_t verbosity; f_string_dynamics_t work; } fake_make_parameter_t; @@ -808,6 +813,7 @@ extern "C" { f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ + f_string_dynamics_t_initialize, \ } #endif // _di_fake_make_parameter_t_ diff --git a/level_3/fake/c/main/fake/path_generate.c b/level_3/fake/c/main/fake/path_generate.c index c3352e7..cdbcca7 100644 --- a/level_3/fake/c/main/fake/path_generate.c +++ b/level_3/fake/c/main/fake/path_generate.c @@ -77,7 +77,7 @@ extern "C" { fake_path_part_programs_s, fake_path_part_settings_s, fake_path_part_stage_s, - fake_path_part_build_s, + main->setting.under, fake_path_part_documentation_s, fake_path_part_settings_s, fake_path_part_documents_s, diff --git a/level_3/fake/c/main/make/load_parameters.c b/level_3/fake/c/main/make/load_parameters.c index bcf8e83..cbdde78 100644 --- a/level_3/fake/c/main/make/load_parameters.c +++ b/level_3/fake/c/main/make/load_parameters.c @@ -273,6 +273,7 @@ extern "C" { fake_short_process_s, fake_short_settings_s, fake_short_sources_s, + fake_short_under_s, fake_short_work_s, }; @@ -285,6 +286,7 @@ extern "C" { &main->program.parameters.array[fake_parameter_process_e], &main->program.parameters.array[fake_parameter_settings_e], &main->program.parameters.array[fake_parameter_sources_e], + &main->program.parameters.array[fake_parameter_under_e], &main->program.parameters.array[fake_parameter_work_e], }; @@ -297,6 +299,7 @@ extern "C" { data_make->data->main->setting.process, data_make->data->main->setting.settings, data_make->data->main->setting.sources, + data_make->data->main->setting.under, data_make->data->main->setting.work, }; @@ -309,6 +312,7 @@ extern "C" { &data_make->parameter.process, &data_make->parameter.settings, &data_make->parameter.sources, + &data_make->parameter.under, &data_make->parameter.work, }; @@ -321,6 +325,7 @@ extern "C" { &data_make->parameter_option.process, &data_make->parameter_option.settings, &data_make->parameter_option.sources, + &data_make->parameter_option.under, &data_make->parameter_option.work, }; @@ -333,10 +338,11 @@ extern "C" { &data_make->parameter_value.process, &data_make->parameter_value.settings, &data_make->parameter_value.sources, + &data_make->parameter_value.under, &data_make->parameter_value.work, }; - for (uint8_t i = 0; i < 9; ++i) { + for (uint8_t i = 0; i < 10; ++i) { if (!(console[i]->result & f_console_result_found_e)) continue; diff --git a/level_3/fake/c/main/make/operate.c b/level_3/fake/c/main/make/operate.c index dd9b7dd..46701c7 100644 --- a/level_3/fake/c/main/make/operate.c +++ b/level_3/fake/c/main/make/operate.c @@ -271,6 +271,7 @@ extern "C" { fake_make_parameter_variable_process_s, fake_make_parameter_variable_settings_s, fake_make_parameter_variable_sources_s, + fake_make_parameter_variable_under_s, fake_make_parameter_variable_verbosity_s, fake_make_parameter_variable_work_s, fake_make_parameter_variable_option_build_s, @@ -284,6 +285,7 @@ extern "C" { fake_make_parameter_variable_option_process_s, fake_make_parameter_variable_option_settings_s, fake_make_parameter_variable_option_sources_s, + fake_make_parameter_variable_option_under_s, fake_make_parameter_variable_option_verbosity_s, fake_make_parameter_variable_option_work_s, fake_make_parameter_variable_value_build_s, @@ -297,6 +299,7 @@ extern "C" { fake_make_parameter_variable_value_process_s, fake_make_parameter_variable_value_settings_s, fake_make_parameter_variable_value_sources_s, + fake_make_parameter_variable_value_under_s, fake_make_parameter_variable_value_verbosity_s, fake_make_parameter_variable_value_work_s, }; @@ -313,6 +316,7 @@ extern "C" { &data_make->parameter.process, &data_make->parameter.settings, &data_make->parameter.sources, + &data_make->parameter.under, &data_make->parameter.verbosity, &data_make->parameter.work, &data_make->parameter_option.build, @@ -326,6 +330,7 @@ extern "C" { &data_make->parameter_option.process, &data_make->parameter_option.settings, &data_make->parameter_option.sources, + &data_make->parameter_option.under, &data_make->parameter_option.verbosity, &data_make->parameter_option.work, &data_make->parameter_value.build, @@ -339,6 +344,7 @@ extern "C" { &data_make->parameter_value.process, &data_make->parameter_value.settings, &data_make->parameter_value.sources, + &data_make->parameter_value.under, &data_make->parameter_value.verbosity, &data_make->parameter_value.work, }; @@ -538,7 +544,7 @@ extern "C" { unmatched = F_false; } else { - for (k = 0; k < 39; ++k) { + for (k = 0; k < 42; ++k) { if (f_compare_dynamic_partial_string(reserved_name[k].string, main->buffer, reserved_name[k].used, iki_data->content.array[j]) != F_equal_to) { continue; diff --git a/level_3/fake/c/main/make/operate_process_type.c b/level_3/fake/c/main/make/operate_process_type.c index a8e6925..42084a4 100644 --- a/level_3/fake/c/main/make/operate_process_type.c +++ b/level_3/fake/c/main/make/operate_process_type.c @@ -1199,6 +1199,7 @@ extern "C" { fake_make_parameter_variable_process_s, fake_make_parameter_variable_settings_s, fake_make_parameter_variable_sources_s, + fake_make_parameter_variable_under_s, fake_make_parameter_variable_verbosity_s, fake_make_parameter_variable_work_s, fake_make_parameter_variable_option_build_s, @@ -1210,6 +1211,7 @@ extern "C" { fake_make_parameter_variable_option_process_s, fake_make_parameter_variable_option_settings_s, fake_make_parameter_variable_option_sources_s, + fake_make_parameter_variable_option_under_s, fake_make_parameter_variable_option_verbosity_s, fake_make_parameter_variable_option_work_s, fake_make_parameter_variable_value_build_s, @@ -1221,6 +1223,7 @@ extern "C" { fake_make_parameter_variable_value_process_s, fake_make_parameter_variable_value_settings_s, fake_make_parameter_variable_value_sources_s, + fake_make_parameter_variable_value_under_s, fake_make_parameter_variable_value_verbosity_s, fake_make_parameter_variable_value_work_s, }; @@ -1235,6 +1238,7 @@ extern "C" { main->setting.process.used, main->setting.settings.used, main->setting.sources.used, + main->setting.under.used, F_true, main->setting.work.used, main->program.parameters.array[fake_parameter_build_e].result & f_console_result_value_e, @@ -1246,6 +1250,7 @@ extern "C" { main->program.parameters.array[fake_parameter_process_e].result & f_console_result_value_e, main->program.parameters.array[fake_parameter_settings_e].result & f_console_result_value_e, main->program.parameters.array[fake_parameter_sources_e].result & f_console_result_value_e, + main->program.parameters.array[fake_parameter_under_e].result & f_console_result_value_e, (main->program.parameters.array[f_console_standard_parameter_verbosity_quiet_e].result & f_console_result_found_e) || (main->program.parameters.array[f_console_standard_parameter_verbosity_normal_e].result & f_console_result_found_e) || (main->program.parameters.array[f_console_standard_parameter_verbosity_verbose_e].result & f_console_result_found_e) || (main->program.parameters.array[f_console_standard_parameter_verbosity_debug_e].result & f_console_result_found_e), main->program.parameters.array[fake_parameter_work_e].result & f_console_result_value_e, data_make->parameter_value.build.used, @@ -1257,6 +1262,7 @@ extern "C" { data_make->parameter_value.process.used, data_make->parameter_value.settings.used, data_make->parameter_value.sources.used, + data_make->parameter_value.under.used, data_make->parameter_value.verbosity.used, data_make->parameter_value.work.used, }; @@ -1272,7 +1278,7 @@ extern "C" { // Multiple properties may pass and so if any of them fail, then they all fail. for (; i < main->cache_arguments.used && !result; ++i) { - for (j = 0; j < 33; ++j) { + for (j = 0; j < 36; ++j) { if (f_compare_dynamic(reserved_name[j], main->cache_arguments.array[i]) == F_equal_to) { result = reserved_parameter[j] ? 2 : 1; diff --git a/level_3/fake/c/main/make/operate_validate_type.c b/level_3/fake/c/main/make/operate_validate_type.c index 1661184..1f6f083 100644 --- a/level_3/fake/c/main/make/operate_validate_type.c +++ b/level_3/fake/c/main/make/operate_validate_type.c @@ -1249,6 +1249,7 @@ extern "C" { fake_make_parameter_variable_process_s, fake_make_parameter_variable_settings_s, fake_make_parameter_variable_sources_s, + fake_make_parameter_variable_under_s, fake_make_parameter_variable_verbosity_s, fake_make_parameter_variable_work_s, fake_make_parameter_variable_option_build_s, @@ -1260,6 +1261,7 @@ extern "C" { fake_make_parameter_variable_option_process_s, fake_make_parameter_variable_option_settings_s, fake_make_parameter_variable_option_sources_s, + fake_make_parameter_variable_option_under_s, fake_make_parameter_variable_option_verbosity_s, fake_make_parameter_variable_option_work_s, fake_make_parameter_variable_value_build_s, @@ -1271,13 +1273,14 @@ extern "C" { fake_make_parameter_variable_value_process_s, fake_make_parameter_variable_value_settings_s, fake_make_parameter_variable_value_sources_s, + fake_make_parameter_variable_value_under_s, fake_make_parameter_variable_value_verbosity_s, fake_make_parameter_variable_value_work_s, }; f_status_t status = F_okay; - for (f_number_unsigned_t i = 0; i < 33; ++i) { + for (f_number_unsigned_t i = 0; i < 36; ++i) { if (f_compare_dynamic(reserved_name[i], main->cache_arguments.array[0]) == F_equal_to) { fake_make_print_error_reserved_parameter_name(&main->program.error, reserved_name[i]); diff --git a/level_3/fake/c/main/print/message.c b/level_3/fake/c/main/print/message.c index b57e2cb..60b1d31 100644 --- a/level_3/fake/c/main/print/message.c +++ b/level_3/fake/c/main/print/message.c @@ -97,6 +97,7 @@ extern "C" { fll_program_print_help_option(print, fake_short_documents_s, fake_long_documents_s, f_console_symbol_short_normal_s, f_console_symbol_long_normal_s, "Specify a custom path to the documents files."); fll_program_print_help_option(print, fake_short_licenses_s, fake_long_licenses_s, f_console_symbol_short_normal_s, f_console_symbol_long_normal_s, " Specify a custom path to the licenses files."); fll_program_print_help_option(print, fake_short_sources_s, fake_long_sources_s, f_console_symbol_short_normal_s, f_console_symbol_long_normal_s, " Specify a custom path to the source files."); + fll_program_print_help_option(print, fake_short_under_s, fake_long_under_s, f_console_symbol_short_normal_s, f_console_symbol_long_normal_s, " Specify a custom path the data build files are under."); fll_program_print_help_option(print, fake_short_work_s, fake_long_work_s, f_console_symbol_short_normal_s, f_console_symbol_long_normal_s, " Use includes/libraries/programs from this directory instead of system."); fl_print_format("%r %[Special Options:%]%r", print->to, f_string_eol_s, print->set->important, print->set->important, f_string_eol_s); diff --git a/level_3/fake/data/documentation/man/man1/fake.1 b/level_3/fake/data/documentation/man/man1/fake.1 index 7b0ff96..3190cfe 100644 --- a/level_3/fake/data/documentation/man/man1/fake.1 +++ b/level_3/fake/data/documentation/man/man1/fake.1 @@ -1,4 +1,4 @@ -.TH FAKE "1" "March 2023" "FLL - Featureless Make 0.7.0" "User Commands" +.TH FAKE "1" "August 2023" "FLL - Featureless Make 0.7.0" "User Commands" .SH NAME fake \- Build or compile software similar to GNU Make. .SH SYNOPSIS @@ -92,6 +92,9 @@ Specify a custom path to the data files. \fB\-S, \-\-sources\fR Specify a custom path to the source files. .TP +\fB\-U, \-\-under\fR +Specify a custom path the data build files are under. +.TP \fB\-w, \-\-work\fR Use includes/libraries/programs from this directory instead of system. .TP diff --git a/level_3/fake/documents/fakefile.txt b/level_3/fake/documents/fakefile.txt index 7d81302..0ba1098 100644 --- a/level_3/fake/documents/fakefile.txt +++ b/level_3/fake/documents/fakefile.txt @@ -345,6 +345,7 @@ Fakefile Documentation: - code:"settings": Associated with code:"-s/--settings" parameter. - code:"sources": Associated with code:"-S/--sources" parameter. - code:"top": The absolute path to the code:"top" directory, which is the base project directory (Always has a trailing forward slash). + - code:"under": Associated with code:"-U/--under" parameter. - code:"verbosity": Associated with code:"+Q/++quiet", code:"+E/++error", code:"+N/++normal", code:"+V/++verbose", and code:"+D/++debug" parameters. - code:"work": Associated with code:"-w/--work" parameter. @@ -611,6 +612,10 @@ Fakefile Documentation: This variable holds the code:"sources" program parameters, such as code:"-S sources/". This supports both code:":option" and code:":value". + - code:"under"\: + This variable holds the code:"under" program parameters, such as code:"-U under/". + This supports both code:":option" and code:":value". + - code:"verbosity"\: This variable holds the verbosity related program parameters, such as code:"+V". This supports both code:":option" and code:":value" (value is always an empty string). diff --git a/level_3/fake/specifications/fakefile.txt b/level_3/fake/specifications/fakefile.txt index 2e27422..ccfb860 100644 --- a/level_3/fake/specifications/fakefile.txt +++ b/level_3/fake/specifications/fakefile.txt @@ -124,5 +124,5 @@ Fakefile Specification: - code:"<=" The code:"if" bold:"Section Operation" condition code:"parameter"\: - The following reserved words are available for parameter names: code:"build", code:"color", code:"current", code:"data", code:"documents", code:"define", code:"fakefile", code:"licenses", code:"mode", code:"process", code:"return", code:"settings", code:"sources", code:"top", code:"verbosity", and code:"work". + The following reserved words are available for parameter names: code:"build", code:"color", code:"current", code:"data", code:"documents", code:"define", code:"fakefile", code:"licenses", code:"mode", code:"process", code:"return", code:"settings", code:"sources", code:"top", code:"under", code:"verbosity", and code:"work". Each of the reserved words supports having code:":option" and code:":value" appended, such as: code:"work:value". -- 1.8.3.1