From 18b103849ffbaeb33c76191a50afc1e2a492c59f Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Sun, 27 Aug 2023 21:56:01 -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/common.c | 2 ++ level_3/fake/c/common.h | 10 +++++++++- level_3/fake/c/fake.c | 1 + level_3/fake/c/private-build.c | 5 ++++- level_3/fake/c/private-common.c | 7 ++++--- level_3/fake/c/private-common.h | 19 ++++++++++++++++--- level_3/fake/c/private-fake-path_generate.c | 2 +- level_3/fake/c/private-fake.c | 6 +++++- level_3/fake/c/private-make-load_parameters.c | 8 +++++++- level_3/fake/c/private-make-operate.c | 8 +++++++- level_3/fake/c/private-make-operate_process_type.c | 8 +++++++- level_3/fake/c/private-make-operate_validate_type.c | 5 ++++- level_3/fake/data/documentation/man/man1/fake.1 | 3 +++ level_3/fake/documents/fakefile.txt | 5 +++++ level_3/fake/specifications/fakefile.txt | 2 +- 15 files changed, 76 insertions(+), 15 deletions(-) diff --git a/level_3/fake/c/common.c b/level_3/fake/c/common.c index 5ba17e6..ff80afd 100644 --- a/level_3/fake/c/common.c +++ b/level_3/fake/c/common.c @@ -81,6 +81,7 @@ extern "C" { const f_string_static_t fake_short_path_build_s = macro_f_string_static_t_initialize(FAKE_short_path_build_s, 0, FAKE_short_path_build_s_length); const f_string_static_t fake_short_path_data_s = macro_f_string_static_t_initialize(FAKE_short_path_data_s, 0, FAKE_short_path_data_s_length); const f_string_static_t fake_short_path_sources_s = macro_f_string_static_t_initialize(FAKE_short_path_sources_s, 0, FAKE_short_path_sources_s_length); + const f_string_static_t fake_short_path_under_s = macro_f_string_static_t_initialize(FAKE_short_path_under_s, 0, FAKE_short_path_under_s_length); const f_string_static_t fake_short_path_work_s = macro_f_string_static_t_initialize(FAKE_short_path_work_s, 0, FAKE_short_path_work_s_length); const f_string_static_t fake_long_define_s = macro_f_string_static_t_initialize(FAKE_long_define_s, 0, FAKE_long_define_s_length); @@ -92,6 +93,7 @@ extern "C" { const f_string_static_t fake_long_path_build_s = macro_f_string_static_t_initialize(FAKE_long_path_build_s, 0, FAKE_long_path_build_s_length); const f_string_static_t fake_long_path_data_s = macro_f_string_static_t_initialize(FAKE_long_path_data_s, 0, FAKE_long_path_data_s_length); const f_string_static_t fake_long_path_sources_s = macro_f_string_static_t_initialize(FAKE_long_path_sources_s, 0, FAKE_long_path_sources_s_length); + const f_string_static_t fake_long_path_under_s = macro_f_string_static_t_initialize(FAKE_long_path_under_s, 0, FAKE_long_path_under_s_length); const f_string_static_t fake_long_path_work_s = macro_f_string_static_t_initialize(FAKE_long_path_work_s, 0, FAKE_long_path_work_s_length); const f_string_static_t fake_long_documents_disabled_s = macro_f_string_static_t_initialize(FAKE_long_documents_disabled_s, 0, FAKE_long_documents_disabled_s_length); diff --git a/level_3/fake/c/common.h b/level_3/fake/c/common.h index 474eaac..0459c14 100644 --- a/level_3/fake/c/common.h +++ b/level_3/fake/c/common.h @@ -283,6 +283,7 @@ extern "C" { #define FAKE_short_path_build_s "b" #define FAKE_short_path_data_s "D" #define FAKE_short_path_sources_s "S" + #define FAKE_short_path_under_s "U" #define FAKE_short_path_work_s "w" #define FAKE_long_define_s "define" @@ -294,6 +295,7 @@ extern "C" { #define FAKE_long_path_build_s "build" #define FAKE_long_path_data_s "data" #define FAKE_long_path_sources_s "sources" + #define FAKE_long_path_under_s "under" #define FAKE_long_path_work_s "work" // These special parameters are provided in such a way that they mimic the traditional ./configure script. @@ -318,6 +320,7 @@ extern "C" { #define FAKE_short_path_build_s_length 1 #define FAKE_short_path_data_s_length 1 #define FAKE_short_path_sources_s_length 1 + #define FAKE_short_path_under_s_length 1 #define FAKE_short_path_work_s_length 1 #define FAKE_long_define_s_length 6 @@ -329,6 +332,7 @@ extern "C" { #define FAKE_long_path_build_s_length 5 #define FAKE_long_path_data_s_length 4 #define FAKE_long_path_sources_s_length 7 + #define FAKE_long_path_under_s_length 5 #define FAKE_long_path_work_s_length 4 #define FAKE_long_documents_disabled_s_length 11 @@ -352,6 +356,7 @@ extern "C" { extern const f_string_static_t fake_short_path_build_s; extern const f_string_static_t fake_short_path_data_s; extern const f_string_static_t fake_short_path_sources_s; + extern const f_string_static_t fake_short_path_under_s; extern const f_string_static_t fake_short_path_work_s; extern const f_string_static_t fake_long_define_s; @@ -363,6 +368,7 @@ extern "C" { extern const f_string_static_t fake_long_path_build_s; extern const f_string_static_t fake_long_path_data_s; extern const f_string_static_t fake_long_path_sources_s; + extern const f_string_static_t fake_long_path_under_s; extern const f_string_static_t fake_long_path_work_s; extern const f_string_static_t fake_long_documents_disabled_s; @@ -399,6 +405,7 @@ extern "C" { fake_parameter_path_build_e, fake_parameter_path_data_e, fake_parameter_path_sources_e, + fake_parameter_path_under_e, fake_parameter_path_work_e, fake_parameter_documents_disabled_e, @@ -435,6 +442,7 @@ extern "C" { macro_f_console_parameter_t_initialize(fake_short_path_build_s.string, fake_long_path_build_s.string, 0, 1, f_console_type_normal_e), \ macro_f_console_parameter_t_initialize(fake_short_path_data_s.string, fake_long_path_data_s.string, 0, 1, f_console_type_normal_e), \ macro_f_console_parameter_t_initialize(fake_short_path_sources_s.string, fake_long_path_sources_s.string, 0, 1, f_console_type_normal_e), \ + macro_f_console_parameter_t_initialize(fake_short_path_under_s.string, fake_long_path_under_s.string, 0, 1, f_console_type_normal_e), \ macro_f_console_parameter_t_initialize(fake_short_path_work_s.string, fake_long_path_work_s.string, 0, 1, f_console_type_normal_e), \ macro_f_console_parameter_t_initialize(0, fake_long_documents_disabled_s.string, 0, 0, f_console_type_normal_e), \ macro_f_console_parameter_t_initialize(0, fake_long_documents_enabled_s.string, 0, 0, f_console_type_normal_e), \ @@ -448,7 +456,7 @@ extern "C" { macro_f_console_parameter_t_initialize(0, 0, fake_other_operation_skeleton_s.string, 0, f_console_type_other_e), \ } - #define fake_total_parameters_d 30 + #define fake_total_parameters_d 31 #endif // _di_fake_parameters_ #ifdef __cplusplus diff --git a/level_3/fake/c/fake.c b/level_3/fake/c/fake.c index f848381..bc39782 100644 --- a/level_3/fake/c/fake.c +++ b/level_3/fake/c/fake.c @@ -69,6 +69,7 @@ extern "C" { fll_program_print_help_option(file, context, fake_short_path_build_s, fake_long_path_build_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom build directory."); fll_program_print_help_option(file, context, fake_short_path_data_s, fake_long_path_data_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom path to the data files."); fll_program_print_help_option(file, context, fake_short_path_sources_s, fake_long_path_sources_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, "Specify a custom path to the source files."); + fll_program_print_help_option(file, context, fake_short_path_under_s, fake_long_path_under_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Specify a custom path the data build files are under."); fll_program_print_help_option(file, context, fake_short_path_work_s, fake_long_path_work_s, f_console_symbol_short_enable_s, f_console_symbol_long_enable_s, " Use includes/libraries/programs from this directory instead of system."); fl_print_format("%r%r %[Special Options:%] ", file.stream, f_string_eol_s, f_string_eol_s, context.set.important, context.set.important); diff --git a/level_3/fake/c/private-build.c b/level_3/fake/c/private-build.c index 350755f..c6037e9 100644 --- a/level_3/fake/c/private-build.c +++ b/level_3/fake/c/private-build.c @@ -650,6 +650,7 @@ const f_string_static_t fake_build_documentation_files_s = macro_f_string_static f_console_symbol_short_enable_s, f_console_symbol_short_enable_s, f_console_symbol_short_enable_s, + f_console_symbol_short_enable_s, }; const f_string_static_t parameters_name[] = { @@ -659,6 +660,7 @@ const f_string_static_t fake_build_documentation_files_s = macro_f_string_static fake_short_path_build_s, fake_short_path_data_s, fake_short_path_sources_s, + fake_short_path_under_s, fake_short_path_work_s, }; @@ -669,10 +671,11 @@ const f_string_static_t fake_build_documentation_files_s = macro_f_string_static data->path_build, data->path_data, data_build->setting.path_sources, + data->path_under, data->path_work, }; - *status = fll_execute_arguments_add_parameter_set(parameters_prefix, parameters_name, parameters_value, 7, &arguments); + *status = fll_execute_arguments_add_parameter_set(parameters_prefix, parameters_name, parameters_value, 8, &arguments); f_string_dynamic_resize(0, &defines); diff --git a/level_3/fake/c/private-common.c b/level_3/fake/c/private-common.c index c95b85d..0fd46d2 100644 --- a/level_3/fake/c/private-common.c +++ b/level_3/fake/c/private-common.c @@ -265,6 +265,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_settings_s = macro_f_string_static_t_initialize(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(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(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(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(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(FAKE_make_parameter_variable_work_s, 0, FAKE_make_parameter_variable_work_s_length); @@ -277,6 +278,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_option_process_s = macro_f_string_static_t_initialize(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(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(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(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(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(FAKE_make_parameter_variable_option_work_s, 0, FAKE_make_parameter_variable_option_work_s_length); @@ -289,6 +291,7 @@ extern "C" { const f_string_static_t fake_make_parameter_variable_value_process_s = macro_f_string_static_t_initialize(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(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(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(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(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(FAKE_make_parameter_variable_value_work_s, 0, FAKE_make_parameter_variable_value_work_s_length); #endif // _di_fake_make_parameter_t_ @@ -346,7 +349,6 @@ extern "C" { f_string_dynamic_resize(0, &data->path_build_programs_static); f_string_dynamic_resize(0, &data->path_build_settings); f_string_dynamic_resize(0, &data->path_build_stage); - f_string_dynamic_resize(0, &data->path_work); f_string_dynamic_resize(0, &data->path_data); f_string_dynamic_resize(0, &data->path_data_build); @@ -354,10 +356,9 @@ extern "C" { f_string_dynamic_resize(0, &data->path_data_settings); f_string_dynamic_resize(0, &data->path_documents); - f_string_dynamic_resize(0, &data->path_licenses); - f_string_dynamic_resize(0, &data->path_sources); + f_string_dynamic_resize(0, &data->path_under); f_string_dynamic_resize(0, &data->path_work); f_string_dynamic_resize(0, &data->path_work_includes); diff --git a/level_3/fake/c/private-common.h b/level_3/fake/c/private-common.h index 74e3784..f3484c0 100644 --- a/level_3/fake/c/private-common.h +++ b/level_3/fake/c/private-common.h @@ -54,7 +54,8 @@ extern "C" { * * path_documents: The documents path. * path_licenses: The licenses path. - * path_sources: The sources path. + * path_sources: The sources path + * path_under: The under path (used to construct the "build" part of the path_data_build). * * path_work: The work path. * path_work_includes: The includes work path. @@ -120,10 +121,9 @@ extern "C" { f_string_dynamic_t path_data_settings; f_string_dynamic_t path_documents; - f_string_dynamic_t path_licenses; - f_string_dynamic_t path_sources; + f_string_dynamic_t path_under; f_string_dynamic_t path_work; f_string_dynamic_t path_work_includes; @@ -200,6 +200,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, \ } @@ -1517,6 +1518,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" @@ -1529,6 +1531,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 @@ -1541,6 +1544,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 @@ -1559,6 +1563,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 @@ -1571,6 +1576,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 @@ -1583,6 +1589,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 @@ -1601,6 +1608,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; @@ -1613,6 +1621,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; @@ -1625,6 +1634,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; @@ -1638,6 +1648,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; @@ -1654,6 +1665,7 @@ extern "C" { f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ f_string_dynamics_t_initialize, \ + f_string_dynamics_t_initialize, \ } #define macro_fake_make_parameter_delete_simple(parameter) \ @@ -1666,6 +1678,7 @@ extern "C" { macro_f_string_dynamics_t_delete_simple(parameter.process) \ macro_f_string_dynamics_t_delete_simple(parameter.settings) \ macro_f_string_dynamics_t_delete_simple(parameter.sources) \ + macro_f_string_dynamics_t_delete_simple(parameter.under) \ macro_f_string_dynamics_t_delete_simple(parameter.verbosity) \ macro_f_string_dynamics_t_delete_simple(parameter.work) #endif // _di_fake_make_parameter_t_ diff --git a/level_3/fake/c/private-fake-path_generate.c b/level_3/fake/c/private-fake-path_generate.c index dba4aa7..7f89e12 100644 --- a/level_3/fake/c/private-fake-path_generate.c +++ b/level_3/fake/c/private-fake-path_generate.c @@ -74,7 +74,7 @@ extern "C" { fake_path_part_programs_s, fake_path_part_settings_s, fake_path_part_stage_s, - fake_path_part_build_s, + data->path_under, fake_path_part_documentation_s, fake_path_part_settings_s, fake_path_part_documents_s, diff --git a/level_3/fake/c/private-fake.c b/level_3/fake/c/private-fake.c index ddf2906..938c558 100644 --- a/level_3/fake/c/private-fake.c +++ b/level_3/fake/c/private-fake.c @@ -368,6 +368,7 @@ extern "C" { fake_parameter_path_build_e, fake_parameter_path_data_e, fake_parameter_path_sources_e, + fake_parameter_path_under_e, fake_parameter_path_work_e, }; @@ -375,6 +376,7 @@ extern "C" { fake_long_path_build_s, fake_long_path_data_s, fake_long_path_sources_s, + fake_long_path_under_s, fake_long_path_work_s, }; @@ -382,6 +384,7 @@ extern "C" { fake_default_path_build_s, fake_default_path_data_s, fake_default_path_sources_s, + fake_path_part_build_s, fake_default_path_work_s, }; @@ -389,10 +392,11 @@ extern "C" { &data->path_build, &data->path_data, &data->path_sources, + &data->path_under, &data->path_work, }; - for (uint8_t i = 0; i < 4; ++i) { + for (uint8_t i = 0; i < 5; ++i) { if (data->main->parameters.array[parameters_id[i]].result == f_console_result_found_e) { fake_print_error_parameter_missing_value(data, parameters_name[i]); diff --git a/level_3/fake/c/private-make-load_parameters.c b/level_3/fake/c/private-make-load_parameters.c index 16d3e8d..5d0e5eb 100644 --- a/level_3/fake/c/private-make-load_parameters.c +++ b/level_3/fake/c/private-make-load_parameters.c @@ -271,6 +271,7 @@ extern "C" { fake_short_path_build_s, fake_short_path_data_s, fake_short_path_sources_s, + fake_short_path_under_s, fake_short_path_work_s, fake_short_process_s, fake_short_settings_s, @@ -281,6 +282,7 @@ extern "C" { &data_make->main->parameters.array[fake_parameter_path_build_e], &data_make->main->parameters.array[fake_parameter_path_data_e], &data_make->main->parameters.array[fake_parameter_path_sources_e], + &data_make->main->parameters.array[fake_parameter_path_under_e], &data_make->main->parameters.array[fake_parameter_path_work_e], &data_make->main->parameters.array[fake_parameter_process_e], &data_make->main->parameters.array[fake_parameter_settings_e], @@ -291,6 +293,7 @@ extern "C" { &data_make->data->path_build, &data_make->data->path_data, &data_make->data->path_sources, + &data_make->data->path_under, &data_make->data->path_work, &data_make->data->process, &data_make->data->settings, @@ -301,6 +304,7 @@ extern "C" { &data_make->parameter.build, &data_make->parameter.data, &data_make->parameter.sources, + &data_make->parameter.under, &data_make->parameter.work, &data_make->parameter.process, &data_make->parameter.settings, @@ -311,6 +315,7 @@ extern "C" { &data_make->parameter_option.build, &data_make->parameter_option.data, &data_make->parameter_option.sources, + &data_make->parameter_option.under, &data_make->parameter_option.work, &data_make->parameter_option.process, &data_make->parameter_option.settings, @@ -321,12 +326,13 @@ extern "C" { &data_make->parameter_value.build, &data_make->parameter_value.data, &data_make->parameter_value.sources, + &data_make->parameter_value.under, &data_make->parameter_value.work, &data_make->parameter_value.process, &data_make->parameter_value.settings, }; - for (uint8_t i = 0; i < 7; ++i) { + for (uint8_t i = 0; i < 8; ++i) { if (console[i]->result == f_console_result_none_e) { continue; diff --git a/level_3/fake/c/private-make-operate.c b/level_3/fake/c/private-make-operate.c index 5eec7cf..24a6b5c 100644 --- a/level_3/fake/c/private-make-operate.c +++ b/level_3/fake/c/private-make-operate.c @@ -324,6 +324,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, @@ -335,6 +336,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, @@ -346,6 +348,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, }; @@ -360,6 +363,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, @@ -371,6 +375,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, @@ -382,6 +387,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, }; @@ -580,7 +586,7 @@ extern "C" { unmatched = F_false; } else { - for (k = 0; k < 33; ++k) { + for (k = 0; k < 36; ++k) { if (fl_string_dynamic_partial_compare_string(reserved_name[k].string, data_make->buffer, reserved_name[k].used, iki_data->content.array[j]) != F_equal_to) { continue; diff --git a/level_3/fake/c/private-make-operate_process_type.c b/level_3/fake/c/private-make-operate_process_type.c index 9218884..fd6691b 100644 --- a/level_3/fake/c/private-make-operate_process_type.c +++ b/level_3/fake/c/private-make-operate_process_type.c @@ -1171,6 +1171,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, @@ -1182,6 +1183,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, @@ -1193,6 +1195,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, }; @@ -1207,6 +1210,7 @@ extern "C" { data_make->data->process.used, data_make->data->settings.used, data_make->data->path_sources.used, + data_make->data->path_under.used, F_true, data_make->data->path_work.used, data_make->main->parameters.array[fake_parameter_path_build_e].result == f_console_result_additional_e, @@ -1218,6 +1222,7 @@ extern "C" { data_make->main->parameters.array[fake_parameter_process_e].result == f_console_result_additional_e, data_make->main->parameters.array[fake_parameter_settings_e].result == f_console_result_additional_e, data_make->main->parameters.array[fake_parameter_path_sources_e].result == f_console_result_additional_e, + data_make->main->parameters.array[fake_parameter_path_under_e].result == f_console_result_additional_e, data_make->main->parameters.array[fake_parameter_verbosity_quiet_e].result == f_console_result_found_e || data_make->main->parameters.array[fake_parameter_verbosity_normal_e].result == f_console_result_found_e || data_make->main->parameters.array[fake_parameter_verbosity_verbose_e].result == f_console_result_found_e || data_make->main->parameters.array[fake_parameter_verbosity_debug_e].result == f_console_result_found_e, data_make->main->parameters.array[fake_parameter_path_work_e].result == f_console_result_additional_e, data_make->parameter_value.build.used, @@ -1229,6 +1234,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, }; @@ -1244,7 +1250,7 @@ extern "C" { // Multiple properties may pass and so if any of them fail, then they all fail. for (; i < data_make->cache_arguments.used && !result; ++i) { - for (j = 0; j < 33; ++j) { + for (j = 0; j < 36; ++j) { if (fl_string_dynamic_compare(reserved_name[j], data_make->cache_arguments.array[i]) == F_equal_to) { result = reserved_parameter[j] ? 2 : 1; diff --git a/level_3/fake/c/private-make-operate_validate_type.c b/level_3/fake/c/private-make-operate_validate_type.c index bd385ad..2b7c71c 100644 --- a/level_3/fake/c/private-make-operate_validate_type.c +++ b/level_3/fake/c/private-make-operate_validate_type.c @@ -1352,6 +1352,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, @@ -1363,6 +1364,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, @@ -1374,13 +1376,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_none; - for (f_array_length_t i = 0; i < 33; ++i) { + for (f_array_length_t i = 0; i < 36; ++i) { if (fl_string_dynamic_compare(reserved_name[i], data_make->cache_arguments.array[0]) == F_equal_to) { if (data_make->error.verbosity != f_console_verbosity_quiet_e && data_make->error.to.stream) { diff --git a/level_3/fake/data/documentation/man/man1/fake.1 b/level_3/fake/data/documentation/man/man1/fake.1 index c097398..da799e6 100644 --- a/level_3/fake/data/documentation/man/man1/fake.1 +++ b/level_3/fake/data/documentation/man/man1/fake.1 @@ -86,6 +86,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 7d5e43c..a3057a7 100644 --- a/level_3/fake/documents/fakefile.txt +++ b/level_3/fake/documents/fakefile.txt @@ -347,6 +347,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. @@ -615,6 +616,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 build/". + 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 c87cfaa..169c45d 100644 --- a/level_3/fake/specifications/fakefile.txt +++ b/level_3/fake/specifications/fakefile.txt @@ -124,6 +124,6 @@ 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". The reserved words code:"documents" and code:"licenses" are neither implemented nor supported by Featureless Make 0.6.x and earlier) Each of the reserved words supports having code:":option" and code:":value" appended, such as: code:"work:value". -- 1.8.3.1