]> Kevux Git Server - fll/commitdiff
Feature: Add -U/--under parameter to Featureless Make.
authorKevin Day <thekevinday@gmail.com>
Mon, 28 Aug 2023 02:56:01 +0000 (21:56 -0500)
committerKevin Day <thekevinday@gmail.com>
Mon, 28 Aug 2023 02:56:01 +0000 (21:56 -0500)
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.

15 files changed:
level_3/fake/c/common.c
level_3/fake/c/common.h
level_3/fake/c/fake.c
level_3/fake/c/private-build.c
level_3/fake/c/private-common.c
level_3/fake/c/private-common.h
level_3/fake/c/private-fake-path_generate.c
level_3/fake/c/private-fake.c
level_3/fake/c/private-make-load_parameters.c
level_3/fake/c/private-make-operate.c
level_3/fake/c/private-make-operate_process_type.c
level_3/fake/c/private-make-operate_validate_type.c
level_3/fake/data/documentation/man/man1/fake.1
level_3/fake/documents/fakefile.txt
level_3/fake/specifications/fakefile.txt

index 5ba17e6b6e5138da702fe55e46c1f2ef5b0914aa..ff80afd684b62b965bacbb2ef749a58c67be820b 100644 (file)
@@ -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);
index 474eaaccb85a70f2fbfc98fe29d0efe7edfd5302..0459c14fd042c5124669f72c4b010c4705f7697a 100644 (file)
@@ -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
index f8483813e2fec48b649bbb9b4e839898aab53bb5..bc397829e33b6ea277d2be9d9f713bce0107c296 100644 (file)
@@ -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);
index 350755fdb83bc297f578a30e7ec02ee2ffe7872f..c6037e99f337a7159306165716677ba79a3da43a 100644 (file)
@@ -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);
 
index c95b85d3337053f20a1a0b6b217fdd22398f3218..0fd46d209d806fafcf9afccacb30480d5aaee1f0 100644 (file)
@@ -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);
index 74e3784db6fda20a0296b8ce5bc396f6b2c85642..f3484c01400a48af2e7241ac3e70e9f23abf20e0 100644 (file)
@@ -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_
index dba4aa7eec4f7acb2dfabc6a8b552376770c1ce3..7f89e124f873c0b2ceec60a8cbf2d008ddbf885c 100644 (file)
@@ -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,
index ddf29061fad004c2a955bcc9570b1f93af31dab6..938c5583aece168730623b57b2bdde07955cc775 100644 (file)
@@ -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]);
index 16d3e8d920e1d98d02a9c961b8fc8b06ec886c1a..5d0e5eb04fe5d24eb23e6b9260c3e79b738e5d47 100644 (file)
@@ -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;
index 5eec7cfe882306bef7869cb55fd2555e4828a8e7..24a6b5c2751b1380acce9f2dc03c1afe13ad5fd2 100644 (file)
@@ -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;
index 92188844680c55f05bf8d48aad243215a666e899..fd6691b0d4d297b036a06feec7cfe76c41798eb9 100644 (file)
@@ -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;
index bd385adae4ddcbc033b70fd32aee1b725410a10d..2b7c71c6006741ead7171f0d5debd5304b84aa5d 100644 (file)
@@ -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) {
index c097398e45f42e2dba94ea5a44521f15baaeffe8..da799e6088c6905789f88e2984f47e10348fcd79 100644 (file)
@@ -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
index 7d5e43c3b44c88c0d57376814fd72a957df6d251..a3057a7a44e6f37bb6c17a35197e57a2a2336792 100644 (file)
@@ -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).
index c87cfaa3de21ae60c87843f89a3a8142beedb56a..169c45de0c13eeacb76887a8d2ac6c8ca2671ca4 100644 (file)
@@ -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".