]> Kevux Git Server - fll/commitdiff
Feature: featureless make should support custom source paths in data/build/settings.
authorKevin Day <thekevinday@gmail.com>
Sat, 5 Sep 2020 04:44:45 +0000 (23:44 -0500)
committerKevin Day <thekevinday@gmail.com>
Sat, 5 Sep 2020 04:54:52 +0000 (23:54 -0500)
The standard path is used by the featureless linux library.
If any other project, such as bzip2, has its own directory structure provide a way to more likely support that when using the build operation.

This is not intended to handle all possible cases.
This is only intended to handle simple cases such as with bzip2.

For more complex builds the fakefile and the make operation should instead be used.

This adds a path_standard setting that is a yes/no boolean for designating if/when to follow the standard source path structure or not.
When this is 'yes', then the standard sources path such as 'sources/c/' is used or when -S/--sources is supplied then the path would be 'XXX/c/' when using "-S xxx/" as an example.
When this is 'no', then the sources path specified by a new setting 'path_sources' is used but when -S/--sources is supplied then the path would be 'XXX/' when using "-S xxx/" as an example.

The result of this change moves the "sources/" directory from required to optional.
This directory is no longer checked for during the check required directories process.

The bootstrap.sh script is exclusively intended to be used for compiling the featureless linux library.
Therefore, the 'path_standard' and 'path_sources' are unimplemented within that script (beyond being defined in the variable list).

61 files changed:
build/scripts/bootstrap.sh
level_0/f_account/data/build/settings
level_0/f_color/data/build/settings
level_0/f_console/data/build/settings
level_0/f_conversion/data/build/settings
level_0/f_directory/data/build/settings
level_0/f_environment/data/build/settings
level_0/f_file/data/build/settings
level_0/f_fss/data/build/settings
level_0/f_iki/data/build/settings
level_0/f_memory/data/build/settings
level_0/f_path/data/build/settings
level_0/f_pipe/data/build/settings
level_0/f_print/data/build/settings
level_0/f_serialize/data/build/settings
level_0/f_socket/data/build/settings
level_0/f_status/data/build/settings
level_0/f_string/data/build/settings
level_0/f_type/data/build/settings
level_0/f_utf/data/build/settings
level_1/fl_color/data/build/settings
level_1/fl_console/data/build/settings
level_1/fl_conversion/data/build/settings
level_1/fl_directory/data/build/settings
level_1/fl_environment/data/build/settings
level_1/fl_fss/data/build/settings
level_1/fl_iki/data/build/settings
level_1/fl_print/data/build/settings
level_1/fl_status/data/build/settings
level_1/fl_string/data/build/settings
level_1/fl_utf/data/build/settings
level_1/fl_utf_file/data/build/settings
level_2/fll_execute/data/build/settings
level_2/fll_file/data/build/settings
level_2/fll_fss/data/build/settings
level_2/fll_path/data/build/settings
level_2/fll_program/data/build/settings
level_2/fll_status/data/build/settings
level_3/byte_dump/data/build/settings
level_3/fake/c/fake.h
level_3/fake/c/private-build.c
level_3/fake/c/private-build.h
level_3/fake/c/private-fake.c
level_3/fake/c/private-make.c
level_3/fake/data/build/settings
level_3/fake/data/build/settings-example-bzip2
level_3/fake/data/build/settings-example-bzip2recover
level_3/fake/documents/settings.txt
level_3/fake/specifications/settings.txt
level_3/firewall/data/build/settings
level_3/fss_basic_list_read/data/build/settings
level_3/fss_basic_list_write/data/build/settings
level_3/fss_basic_read/data/build/settings
level_3/fss_basic_write/data/build/settings
level_3/fss_extended_list_read/data/build/settings
level_3/fss_extended_read/data/build/settings
level_3/fss_extended_write/data/build/settings
level_3/fss_status_code/data/build/settings
level_3/iki_read/data/build/settings
level_3/init/data/build/settings
level_3/status_code/data/build/settings

index 6341a178484bc2ede6c4354a85bf5cd1b5481aed..bb3169dd4b1d9b9ecbe83f5e72e00c96269adb21 100644 (file)
@@ -435,32 +435,34 @@ bootstrap_id() {
     "path_program_script") echo -n 28;;
     "path_program_shared") echo -n 29;;
     "path_program_static") echo -n 30;;
-    "process_post") echo -n 31;;
-    "process_pre") echo -n 32;;
-    "project_name") echo -n 33;;
-    "search_exclusive") echo -n 34;;
-    "search_shared") echo -n 35;;
-    "search_static") echo -n 36;;
-    "version_major") echo -n 37;;
-    "version_micro") echo -n 38;;
-    "version_minor") echo -n 39;;
-    "version_target") echo -n 40;;
-
-    "build_libraries-$mode") echo -n 41;;
-    "build_sources_headers-$mode") echo -n 42;;
-    "build_sources_library-$mode") echo -n 43;;
-    "build_sources_program-$mode") echo -n 44;;
-    "build_sources_setting-$mode") echo -n 45;;
-    "build_sources_script-$mode") echo -n 46;;
-    "defines_all-$mode") echo -n 47;;
-    "defines_shared-$mode") echo -n 48;;
-    "defines_static-$mode") echo -n 49;;
-    "environment-$mode") echo -n 50;;
-    "flags_all-$mode") echo -n 51;;
-    "flags_library-$mode") echo -n 52;;
-    "flags_program-$mode") echo -n 53;;
-    "flags_shared-$mode") echo -n 54;;
-    "flags_static-$mode") echo -n 55;;
+    "path_sources") echo -n 31;;
+    "path_standard") echo -n 32;;
+    "process_post") echo -n 33;;
+    "process_pre") echo -n 34;;
+    "project_name") echo -n 35;;
+    "search_exclusive") echo -n 36;;
+    "search_shared") echo -n 37;;
+    "search_static") echo -n 38;;
+    "version_major") echo -n 39;;
+    "version_micro") echo -n 40;;
+    "version_minor") echo -n 41;;
+    "version_target") echo -n 42;;
+
+    "build_libraries-$mode") echo -n 43;;
+    "build_sources_headers-$mode") echo -n 44;;
+    "build_sources_library-$mode") echo -n 45;;
+    "build_sources_program-$mode") echo -n 46;;
+    "build_sources_setting-$mode") echo -n 47;;
+    "build_sources_script-$mode") echo -n 48;;
+    "defines_all-$mode") echo -n 49;;
+    "defines_shared-$mode") echo -n 50;;
+    "defines_static-$mode") echo -n 51;;
+    "environment-$mode") echo -n 52;;
+    "flags_all-$mode") echo -n 53;;
+    "flags_library-$mode") echo -n 54;;
+    "flags_program-$mode") echo -n 55;;
+    "flags_shared-$mode") echo -n 56;;
+    "flags_static-$mode") echo -n 57;;
   esac
 }
 
@@ -488,7 +490,7 @@ bootstrap_load_settings() {
     exit $failure
   fi
 
-  for i in build_compiler build_language build_libraries build_linker build_script build_shared build_sources_headers build_sources_library build_sources_program build_sources_setting build_sources_script build_static defines_all defines_shared defines_static environment flags_all flags_library flags_program flags_shared flags_static modes modes_default path_language path_headers path_library_script path_library_shared path_library_static path_program_script path_program_shared path_program_static process_post process_pre project_name search_exclusive search_shared search_static version_major version_micro version_minor ; do
+  for i in build_compiler build_language build_libraries build_linker build_script build_shared build_sources_headers build_sources_library build_sources_program build_sources_setting build_sources_script build_static defines_all defines_shared defines_static environment flags_all flags_library flags_program flags_shared flags_static modes modes_default path_language path_headers path_library_script path_library_shared path_library_static path_program_script path_program_shared path_program_static path_sources path_standard process_post process_pre project_name search_exclusive search_shared search_static version_major version_micro version_minor ; do
     variables[$(bootstrap_id $i)]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
   done
 }
index 82ded25cc5cda743e8a3d367fbaedf3081267c72..5d289640281d5e06e0fd1a8052c00895ed32b31c 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 4d9de0bd2d2015f7b1a22eb01d0f7d9a29241b4c..c4f5eac15f1ab90103a4f218dca13e154542a5e7 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 327133def508f5cce01008e7a3be1647ab6cd5e1..7dab93709cb5ab526a5bc2c29a04b1def487e3d7 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 182ed6e9eaca9adfb785638ec4abe6ba4e794352..11624ccb9b08c0016541ab7f945c13e20524d881 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 62041c82d1be51f4510f5abc47ce7a7e7a3dbf99..01c4e2482a1bd8d5c405476ec5ca90b0d9a06c84 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index e140d64cbe84cf113ff72c8012f2b5b42cde3cd2..97dc09d1d40449d96a11fb46eccabce3a039c400 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a8ba777c8d39f8aa01a923c56c9e662c8bcbc9e1..953619c5ea521dc48a5c4aadef339f56578c90c4 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 2aed8004fde8e4d0e44820e950d35e5322a15cd2..5b746028672b7004b34e50e782c34890a7fc3fab 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 570317e8c72c105e0a88d54ed3185a3c06710d3f..d17147dfa8c4a5d791d7adaeb97b5f419278e3ac 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index d55eb1fc13ec521c5b104688ad7a74a65e362c3a..8dbc4964c4df83903309933a9b66645620741d36 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 0c0f90843f4c21440f10aef90952ace255cabd34..fc6701a5bba10da905b7b9a597aee70c3bc2905d 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index df155e8031f5aa2283458d9315142c074bd42fc0..1147df1812b59e95223bfb856c191c3c22f592a4 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index c4d061cfc7d48078d888d38c902f042dd11c1c19..54be37cd3434a992218790769971d4b84eb8f0c4 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index fc7659db0908573bb21106c49fa5a093e3fe755f..0d08928787f7dd823c15a92d2f5860f199ea32c9 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index e20a3f69aa3caad9ce5f2f31e7acb4f205a46690..9b4dc47f67468824a24375250318c359241eef64 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a3243085d4f7643c56af3f58196eed15ef24b78d..7b357292fa071e1c1ac5aa53a27805429d978b3e 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a3a80b2290248db109e101d1e1821406d023dfe4..fbcd0d4434dd299fb50dce2b09e6f51047ed8078 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index b29c3c8928abf1f733abb9adfe371fa4f2cffe78..93b9eb96ef59e6295ca40fcdbd22b314d4fe2e9d 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 6d506b859df398013d737a11924b61c2f2e4e18d..5c149bb9acf02871d4ca861fa0407349d2a2edc5 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index b1243a1c07c33372dcb5cb0b6b4bc87b4e3b8a6b..7fec93b09540673b66b1048f5333511e6ceb7735 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 41e2041a5866d1a3441d45fcbc989af8db2ac648..491a237caccd451f335958b36eaef073570326c5 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 36f5aa9fb9680adb802b3dc2db4f2d8546d3cc1e..6105dee68afdcbff7066a350257ec87593065daf 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 3353f3c350439da31155664b80a0cda62b89c34a..6184d2c0e21697d4f32b3b0566a7513af5f806bb 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index df413424d61349a78ffe2573d59544ea1051ebf3..3988b5a660ed7ede86fe438d599380e2a69b5d85 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 57a55880435fe733194639828afa551da8d17214..0539c6666c7a729346d7949d21ad1c795041f15e 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index ff67114997e3f63615bd08de66db28288e545796..5b94f71907ac4e1a5af3cae8543e8106e4bc27bf 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 19fe593627de51c94a7ec07f7ce1ca116bf413ae..2068a958f57e426c1fbf83f8205b1ee25a4a317f 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 647294e9d576503701951bd05e3aeb184d7f4cd1..e582323a114b24c29dc9449f3a42a88769e51be9 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 16939490668e004aab4d67ee81fb964b5ed462ff..d17a1e9d47a324d78b9d646cf45e47a28d3f5daf 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index f0fa132ef36c8ff117585de1cfb7f13003f7a6cc..0533a88b73bf3dd93c6f69d8bc4ece5ffbf4e71c 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a772548e5af29947955f7d0537171619cddd681e..83edb99fa596750ee9291116a9c6297f21e47dc5 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a5531af682585aae1312f46c9cf97e629fa39d7e..a70371b5b2fec6b8ef956dc329b9be52114a1596 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index fa37f7ddca0dbdb812d391045ab8ce882c609bc2..ac1cfb8173fd53716f667e3b50f79533fe460586 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 450ac05cf1aa82641adf8e034898478a0e043945..5983b60fb8f3fa9d0d48dda250bc548c9d4bdbad 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 53312c0ec6d628b9fd4b5d82b30ddd6f2da6573e..26fa3f2e3b94ad25c3d4c6dd61784a0f61ca106b 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 3d303a9bb19a12e06feee83bb5448b4f14326cce..e73e732fdc4e80ddb2d62c8a66ae30ebdcdb523f 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index f57a4a3f1b86023e6f1cad129cd40327295fc3ae..2665e87c81fc947820c532e2d6626a23ea98de7c 100644 (file)
@@ -36,6 +36,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 963be4c1a3934304437683f77d883cbd4ca3022a..c87f4a31091564c99999d0367234fc231ef2ebe9 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a370e2200d1a9084cedad589edef94f498689aa7..da8ab33e19953318811ddaaf383c6091ea0727fe 100644 (file)
@@ -120,7 +120,6 @@ extern "C" {
   #define fake_path_part_script    "script"    f_path_separator
   #define fake_path_part_settings  "settings"  f_path_separator
   #define fake_path_part_shared    "shared"    f_path_separator
-  #define fake_path_part_sources   "sources"   f_path_separator
   #define fake_path_part_stage     "stage"     f_path_separator
   #define fake_path_part_static    "static"    f_path_separator
 
@@ -139,7 +138,6 @@ extern "C" {
   #define fake_path_part_script_length    7
   #define fake_path_part_settings_length  9
   #define fake_path_part_shared_length    7
-  #define fake_path_part_sources_length   8
   #define fake_path_part_stage_length     6
   #define fake_path_part_static_length    7
 #endif // _di_fake_path_
index fe720f047b8dd6fb6d4b2dcc85a9005c03c414c1..e31ab317dfe36ec8805bccf619d578bba418aef8 100644 (file)
@@ -597,10 +597,17 @@ extern "C" {
     f_string_dynamics_t arguments = f_string_dynamics_t_initialize;
 
     {
-      const f_string_static_t *path_sources = &data.path_sources_c;
+      const f_string_static_t *path_sources = &data.path_sources;
 
-      if (data_build.setting.build_language == fake_build_language_type_cpp) {
-        path_sources = &data.path_sources_cpp;
+      if (data_build.setting.path_standard) {
+        path_sources = &data.path_sources_c;
+
+        if (data_build.setting.build_language == fake_build_language_type_cpp) {
+          path_sources = &data.path_sources_cpp;
+        }
+      }
+      else if (data.parameters[fake_parameter_path_sources].result != f_console_result_additional) {
+        path_sources = &data_build.setting.path_sources;
       }
 
       f_string_length_t source_length = 0;
@@ -1260,6 +1267,8 @@ extern "C" {
       fake_build_setting_name_path_program_script,
       fake_build_setting_name_path_program_shared,
       fake_build_setting_name_path_program_static,
+      fake_build_setting_name_path_sources,
+      fake_build_setting_name_path_standard,
       fake_build_setting_name_process_post,
       fake_build_setting_name_process_pre,
       fake_build_setting_name_project_name,
@@ -1304,6 +1313,8 @@ extern "C" {
       fake_build_setting_name_path_program_script_length,
       fake_build_setting_name_path_program_shared_length,
       fake_build_setting_name_path_program_static_length,
+      fake_build_setting_name_path_sources_length,
+      fake_build_setting_name_path_standard_length,
       fake_build_setting_name_process_post_length,
       fake_build_setting_name_process_pre_length,
       fake_build_setting_name_project_name_length,
@@ -1330,6 +1341,8 @@ extern "C" {
     f_string_dynamics_t path_program_script = f_string_dynamics_t_initialize;
     f_string_dynamics_t path_program_shared = f_string_dynamics_t_initialize;
     f_string_dynamics_t path_program_static = f_string_dynamics_t_initialize;
+    f_string_dynamics_t path_sources = f_string_dynamics_t_initialize;
+    f_string_dynamics_t path_standard = f_string_dynamics_t_initialize;
     f_string_dynamics_t process_post = f_string_dynamics_t_initialize;
     f_string_dynamics_t process_pre = f_string_dynamics_t_initialize;
     f_string_dynamics_t project_name = f_string_dynamics_t_initialize;
@@ -1373,6 +1386,8 @@ extern "C" {
       &path_program_script,
       &path_program_shared,
       &path_program_static,
+      &path_sources,
+      &path_standard,
       &process_post,
       &process_pre,
       &project_name,
@@ -1496,6 +1511,8 @@ extern "C" {
         fake_build_setting_name_path_program_script,
         fake_build_setting_name_path_program_shared,
         fake_build_setting_name_path_program_static,
+        fake_build_setting_name_path_sources,
+        fake_build_setting_name_path_standard,
         fake_build_setting_name_process_post,
         fake_build_setting_name_process_pre,
         fake_build_setting_name_project_name,
@@ -1523,6 +1540,8 @@ extern "C" {
         &path_program_script,
         &path_program_shared,
         &path_program_static,
+        &path_sources,
+        &path_standard,
         &process_post,
         &process_pre,
         &project_name,
@@ -1551,6 +1570,8 @@ extern "C" {
         0,
         0,
         0,
+        &setting->path_standard,
+        0,
         0,
         0,
         &setting->search_exclusive,
@@ -1573,6 +1594,8 @@ extern "C" {
         &setting->path_program_script,
         &setting->path_program_shared,
         &setting->path_program_static,
+        &setting->path_sources,
+        0,
         &setting->process_post,
         &setting->process_pre,
         &setting->project_name,
@@ -1613,6 +1636,8 @@ extern "C" {
         0,
         0,
         0,
+        0,
+        0,
         &setting->version_target,
       };
 
@@ -1632,6 +1657,8 @@ extern "C" {
         2,
         2,
         2,
+        2,
+        1,
         3,
         3,
         3,
@@ -1644,7 +1671,7 @@ extern "C" {
         5,
       };
 
-      for (f_array_length_t i = 0; i < 24; i++) {
+      for (f_array_length_t i = 0; i < 26; i++) {
         if (settings_single_source[i]->used == 0) continue;
 
         if (settings_single_source[i]->used > 1) {
@@ -1789,6 +1816,8 @@ extern "C" {
     f_macro_string_dynamics_t_delete_simple(path_program_script);
     f_macro_string_dynamics_t_delete_simple(path_program_shared);
     f_macro_string_dynamics_t_delete_simple(path_program_static);
+    f_macro_string_dynamics_t_delete_simple(path_sources);
+    f_macro_string_dynamics_t_delete_simple(path_standard);
     f_macro_string_dynamics_t_delete_simple(process_post);
     f_macro_string_dynamics_t_delete_simple(process_pre);
     f_macro_string_dynamics_t_delete_simple(project_name);
@@ -2055,10 +2084,17 @@ extern "C" {
     f_string_length_t source_length = 0;
     f_string_length_t destination_length = 0;
 
-    const f_string_static_t *path_sources = &data.path_sources_c;
+    const f_string_static_t *path_sources = &data.path_sources;
 
-    if (data_build.setting.build_language == fake_build_language_type_cpp) {
-      path_sources = &data.path_sources_cpp;
+    if (data_build.setting.path_standard) {
+      path_sources = &data.path_sources_c;
+
+      if (data_build.setting.build_language == fake_build_language_type_cpp) {
+        path_sources = &data.path_sources_cpp;
+      }
+    }
+    else if (data.parameters[fake_parameter_path_sources].result != f_console_result_additional) {
+      path_sources = &data_build.setting.path_sources;
     }
 
     for (f_array_length_t i = 0; i < data_build.setting.build_sources_library.used; i++) {
@@ -2250,10 +2286,17 @@ extern "C" {
     }
     else {
       if (data_build.setting.build_sources_headers.used) {
-        const f_string_static_t *path_sources = &data.path_sources_c;
+        const f_string_static_t *path_sources = &data.path_sources;
 
-        if (data_build.setting.build_language == fake_build_language_type_cpp) {
-          path_sources = &data.path_sources_cpp;
+        if (data_build.setting.path_standard) {
+          path_sources = &data.path_sources_c;
+
+          if (data_build.setting.build_language == fake_build_language_type_cpp) {
+            path_sources = &data.path_sources_cpp;
+          }
+        }
+        else if (data.parameters[fake_parameter_path_sources].result != f_console_result_additional) {
+          path_sources = &data_build.setting.path_sources;
         }
 
         f_string_static_t path_headers = f_string_static_t_initialize;
@@ -2335,10 +2378,17 @@ extern "C" {
     f_string_dynamics_t arguments = f_string_dynamics_t_initialize;
 
     {
-      const f_string_static_t *path_sources = &data.path_sources_c;
+      const f_string_static_t *path_sources = &data.path_sources;
 
-      if (data_build.setting.build_language == fake_build_language_type_cpp) {
-        path_sources = &data.path_sources_cpp;
+      if (data_build.setting.path_standard) {
+        path_sources = &data.path_sources_c;
+
+        if (data_build.setting.build_language == fake_build_language_type_cpp) {
+          path_sources = &data.path_sources_cpp;
+        }
+      }
+      else if (data.parameters[fake_parameter_path_sources].result != f_console_result_additional) {
+        path_sources = &data_build.setting.path_sources;
       }
 
       f_string_length_t source_length = 0;
@@ -2427,10 +2477,17 @@ extern "C" {
     f_string_dynamics_t arguments = f_string_dynamics_t_initialize;
 
     {
-      const f_string_static_t *path_sources = &data.path_sources_c;
+      const f_string_static_t *path_sources = &data.path_sources;
 
-      if (data_build.setting.build_language == fake_build_language_type_cpp) {
-        path_sources = &data.path_sources_cpp;
+      if (data_build.setting.path_standard) {
+        path_sources = &data.path_sources_c;
+
+        if (data_build.setting.build_language == fake_build_language_type_cpp) {
+          path_sources = &data.path_sources_cpp;
+        }
+      }
+      else if (data.parameters[fake_parameter_path_sources].result != f_console_result_additional) {
+        path_sources = &data_build.setting.path_sources;
       }
 
       f_string_length_t source_length = 0;
index db78e22aa3a0f30137759163cae496cb1683a1b8..ac3334973ddd34cd7438726b7bc93d9ba90bf975 100644 (file)
@@ -22,6 +22,8 @@ extern "C" {
     bool build_shared;
     bool build_static;
 
+    bool path_standard;
+
     bool search_exclusive;
     bool search_shared;
     bool search_static;
@@ -36,6 +38,7 @@ extern "C" {
     f_string_dynamic_t path_program_script;
     f_string_dynamic_t path_program_shared;
     f_string_dynamic_t path_program_static;
+    f_string_dynamic_t path_sources;
     f_string_dynamic_t process_post;
     f_string_dynamic_t process_pre;
     f_string_dynamic_t project_name;
@@ -71,6 +74,8 @@ extern "C" {
     F_true, \
     F_true, \
     F_true, \
+    F_true, \
+    f_string_dynamic_t_initialize, \
     f_string_dynamic_t_initialize, \
     f_string_dynamic_t_initialize, \
     f_string_dynamic_t_initialize, \
@@ -117,6 +122,7 @@ extern "C" {
     f_macro_string_dynamic_t_delete_simple(setting.path_program_script) \
     f_macro_string_dynamic_t_delete_simple(setting.path_program_shared) \
     f_macro_string_dynamic_t_delete_simple(setting.path_program_static) \
+    f_macro_string_dynamic_t_delete_simple(setting.path_sources) \
     f_macro_string_dynamic_t_delete_simple(setting.process_post) \
     f_macro_string_dynamic_t_delete_simple(setting.process_pre) \
     f_macro_string_dynamic_t_delete_simple(setting.project_name) \
@@ -172,6 +178,8 @@ extern "C" {
   #define fake_build_setting_name_path_program_script    "path_program_script"
   #define fake_build_setting_name_path_program_shared    "path_program_shared"
   #define fake_build_setting_name_path_program_static    "path_program_static"
+  #define fake_build_setting_name_path_sources           "path_sources"
+  #define fake_build_setting_name_path_standard          "path_standard"
   #define fake_build_setting_name_process_post           "process_post"
   #define fake_build_setting_name_process_pre            "process_pre"
   #define fake_build_setting_name_project_name           "project_name"
@@ -214,6 +222,8 @@ extern "C" {
   #define fake_build_setting_name_path_program_script_length    19
   #define fake_build_setting_name_path_program_shared_length    19
   #define fake_build_setting_name_path_program_static_length    19
+  #define fake_build_setting_name_path_sources_length           12
+  #define fake_build_setting_name_path_standard_length          13
   #define fake_build_setting_name_process_post_length           12
   #define fake_build_setting_name_process_pre_length            11
   #define fake_build_setting_name_project_name_length           12
@@ -225,7 +235,7 @@ extern "C" {
   #define fake_build_setting_name_version_minor_length          13
   #define fake_build_setting_name_version_target_length         14
 
-  #define fake_build_setting_total 41
+  #define fake_build_setting_total 43
 
   #define fake_build_setting_default_version "0"
 
index cfe6e3c376ebd1ac5096604653a2272d85a440d2..fee84c51157d06d3652fc8aa28a631fcd799c197 100644 (file)
@@ -30,7 +30,12 @@ extern "C" {
     {
       int result = 0;
 
-      *status = fll_execute_program_environment(program.string, arguments, environment.names, environment.values, &result);
+      if (program.used) {
+        *status = fll_execute_program_environment(program.string, arguments, environment.names, environment.values, &result);
+      }
+      else {
+        *status = F_status_set_error(F_file_found_not);
+      }
 
       if (result != 0) {
         *status = F_status_set_error(F_failure);
@@ -40,7 +45,7 @@ extern "C" {
           if (data.verbosity != fake_verbosity_quiet) {
             fprintf(f_type_error, "%c", f_string_eol[0]);
             fl_color_print(f_type_error, data.context.error, data.context.reset, "ERROR: Failed to find program '");
-            fl_color_print(f_type_error, data.context.notable, data.context.reset, "%s", program.string);
+            fl_color_print(f_type_error, data.context.notable, data.context.reset, "%s", program.used ? program.string : "");
             fl_color_print_line(f_type_error, data.context.error, data.context.reset, "' for executing.");
           }
         }
@@ -888,42 +893,37 @@ extern "C" {
     const f_string_t parameters_name[] = {
       fake_long_path_build,
       fake_long_path_data,
-      fake_long_path_sources,
       fake_long_path_work,
     };
 
     const f_string_t parameter_defaults[] = {
       fake_default_path_build,
       fake_default_path_data,
-      fake_default_path_sources,
       fake_default_path_work,
     };
 
     const f_string_length_t parameter_default_lengths[] = {
       fake_default_path_build_length,
       fake_default_path_data_length,
-      fake_default_path_sources_length,
       fake_default_path_work_length,
     };
 
     const f_string_dynamic_t *parameters_value[] = {
       &data.path_build,
       &data.path_data,
-      &data.path_sources,
       &data.path_work,
     };
 
     const bool parameters_required[] = {
       F_false,
       F_true,
-      F_true,
       F_false,
     };
 
     struct stat directory_stat;
     f_status_t status = F_none;
 
-    for (uint8_t i = 0; i < 4; i++) {
+    for (uint8_t i = 0; i < 3; i++) {
       if (parameters_value[i]->used > 0) {
         memset(&directory_stat, 0, sizeof(struct stat));
 
index 068d8c8c8b6992afd302bf14eb317e6fcde1334f..a9f97a8cb399607559f27985d173ef295e6dbac3 100644 (file)
@@ -1063,6 +1063,7 @@ extern "C" {
         fake_build_setting_name_build_script,
         fake_build_setting_name_build_shared,
         fake_build_setting_name_build_static,
+        fake_build_setting_name_path_standard,
         fake_build_setting_name_search_exclusive,
         fake_build_setting_name_search_shared,
         fake_build_setting_name_search_static,
@@ -1072,6 +1073,7 @@ extern "C" {
         fake_build_setting_name_build_script_length,
         fake_build_setting_name_build_shared_length,
         fake_build_setting_name_build_static_length,
+        fake_build_setting_name_path_standard_length,
         fake_build_setting_name_search_exclusive_length,
         fake_build_setting_name_search_shared_length,
         fake_build_setting_name_search_static_length,
@@ -1081,12 +1083,13 @@ extern "C" {
         data_make->setting_build.build_script,
         data_make->setting_build.build_shared,
         data_make->setting_build.build_static,
+        data_make->setting_build.path_standard,
         data_make->setting_build.search_exclusive,
         data_make->setting_build.search_shared,
         data_make->setting_build.search_static,
       };
 
-      for (uint8_t i = 0; i < 6; i++) {
+      for (uint8_t i = 0; i < 7; i++) {
         status = fl_string_dynamic_partial_compare_string(bool_name[i], data_make->buffer, bool_length[i], range_name);
 
         if (status == F_equal_to) {
@@ -1116,6 +1119,7 @@ extern "C" {
         fake_build_setting_name_path_program_script,
         fake_build_setting_name_path_program_shared,
         fake_build_setting_name_path_program_static,
+        fake_build_setting_name_path_sources,
         fake_build_setting_name_process_post,
         fake_build_setting_name_process_pre,
         fake_build_setting_name_project_name,
@@ -1135,6 +1139,7 @@ extern "C" {
         fake_build_setting_name_path_program_script_length,
         fake_build_setting_name_path_program_shared_length,
         fake_build_setting_name_path_program_static_length,
+        fake_build_setting_name_path_sources_length,
         fake_build_setting_name_process_post_length,
         fake_build_setting_name_process_pre_length,
         fake_build_setting_name_project_name_length,
@@ -1154,6 +1159,7 @@ extern "C" {
         data_make->setting_build.path_program_script,
         data_make->setting_build.path_program_shared,
         data_make->setting_build.path_program_static,
+        data_make->setting_build.path_sources,
         data_make->setting_build.process_post,
         data_make->setting_build.process_pre,
         data_make->setting_build.project_name,
@@ -1162,7 +1168,7 @@ extern "C" {
         data_make->setting_build.version_minor,
       };
 
-      for (uint8_t i = 0; i < 16; i++) {
+      for (uint8_t i = 0; i < 17; i++) {
         status = fl_string_dynamic_partial_compare_string(dynamic_name[i], data_make->buffer, dynamic_length[i], range_name);
 
         if (status == F_equal_to) {
index 2d1ce3751eb7578f39b7c120a88adfef633f44a7..e0b9cfe5794f492c407cecaab8a43df313ee674e 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a4e6f4d55719cfc5440032331e329afde730936f..d409f84ed55b648db12cb2d68cad4056d01fb9f9 100644 (file)
@@ -39,6 +39,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard no
 
 search_exclusive yes
 search_shared yes
index 5004eb2063b155cfa88d16543e16236629c4c866..fd53c1d54ddbba421b40a165e4a91c0b172d71a3 100644 (file)
@@ -39,6 +39,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard no
 
 search_exclusive yes
 search_shared yes
index a232b32618418ba4b77da14bfe66a61edbde816e..d339346a5fd1d88eab286b6aa0b45591c83800d2 100644 (file)
@@ -136,6 +136,14 @@ Settings Documentation:
   path_program_static\:
     A sub-path representing when the built shared program files are placed.
 
+  path_sources\:
+    A sub-path representing when the built shared program files are placed.
+
+  path_standard\:
+    When "yes", the sources path will be built using the sources path with the language, such as "sources/c/", ignoring "path_sources" completely.
+    When "no", the default sources path structure is not used and instead "path_sources" is used.
+    When the parameter -S/--sources is specified, such as "-S xxx", then when "yes" is used path would be "xxx/c/" and when "no" path would be "xxx/".
+
   project_name\:
     The name of the project.
     If program sources are specified, then this will be used as the program name.
index 0ef3624f23e5144c3199acfa45d2651957d3ddea..2e5047d1906aa587935f9ca3344233e7dfa8e3ea 100644 (file)
@@ -41,6 +41,8 @@ Settings Specification:
     "path_program_script": Must be a single valid path.
     "path_program_shared": Must be a single valid path.
     "path_program_static": Must be a single valid path.
+    "path_sources": Must only be a valid directory path or not specified.
+    "path_standard": Must only one of: "yes" or "no".
     "project_name": Must only contain characters allowed in a filename.
     "process_post": Must contain only a single valid filename.
     "process_pre": Must contain only a single valid filename.
index 7755289e173f36be6c9a8838c3ef6b6ca8637a15..ed213840f007a4614530d02acba21bc491826115 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 28831ba131ba4647623ffd02a41d53ba7e795e66..ff5c8d890ced7b1beeaa66d248164baeed4f10cb 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 71e0677c92f224a003edd1f2745c799866b69b0c..147f7c91d10aad48b5db1e8b09db5f4ec373ac0d 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index a23f0c0cbda32004de00539aea649e9995fc47d3..759f9380e6ec27657218df2fde6b6056bdc61cde 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 3ab73d93cf191fd70630ada31f7d2b6b9481fae6..d392fa113d2b35f5f73c635dadfa7820becbd1e4 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 568dd96aa9a74196145dfff22bbb7a06836dcfed..ef0577976e43e651ecfb4a96d5610ccc454271b4 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 7afeeb1e07ffed2d2d2d19c7681f5cfd40e370f0..d9183451ffb2e82c60fb9137a0f25decb13422ac 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index f5b74715da6d9f02076874cc6e0a6f57ae901185..5249e338c45768e64186b7a5cde208c82348adc8 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 326b6b12738c1469a2397123a3237230819906c4..a8b9c6edb40d8f5f5155d88555c061cb829a96f8 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index af608ee39809a171a8f27928aaa1ffa524d73d07..8eedb023475c1c38f569433d4e58f7476bb35abc 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index cab8836617eda494dd9adc52cc379c6f359c4ff2..4f70f184ec726e880d47929e24a39433569d043a 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes
index 8d350941c7cc58c550fd9451a0fb05d74131a1a8..47522561e481d07cecc5d8675d613de7e23828ab 100644 (file)
@@ -38,6 +38,8 @@ path_library_static static
 path_program_script script
 path_program_shared shared
 path_program_static static
+path_sources
+path_standard yes
 
 search_exclusive yes
 search_shared yes