From: Kevin Day Date: Sat, 26 Jun 2021 03:59:54 +0000 (-0500) Subject: Feature: Featureless Make must support both version_target and version_file. X-Git-Tag: 0.5.4~3 X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=0709470fc3c11fe66e20c94fcf253e187c54ddff;p=fll Feature: Featureless Make must support both version_target and version_file. This separates version_target into version_target and version_file. Previously, they were one in the same and the recent design change of version_target exposed a problem with this. Libraries are traditionally linked (as in dynamic linker and not as in the filesystem "ln") to the major version number (such as: "-Wl,-soname,libfake.so.0") and have a file path set to the micro version (such as: libfake.so.0.5.4). When the version_target was set to "micro", this instead results in "-Wl,-soname,libfake.so.0.5.4" and "libfake.so.0.5.4". By breaking this up, the linker and the file can be setup appropriately. The problem here is that they are both related to linking but in two different contexts: 1) Dynamic Linker (_wl,-soname,...). 2) System Linker (ln -vs a b). To disambiguate these, the version_target is now used to refer to the Dynamic Linker and the version_file is used with the file name in which the system linker is used to link files against. The Featureless Linux Library used Major.Minor.Micro such that Major.Minor could represent stable versions (for even Minor numbers). Set this new setting to have version_target set to "minor" instead of the traditional "major" in the appropriate settings files. When not specified in the build settings file, the defaults must always be provided which are: 1) version_target = "major" 2) version_file = "micro" This aligns the default behavior to align with traditional practices while manually setting the build settings for all FLL projects to use different settings. The bootstrap.sh script has been updated to be consistent with this. The bootstrap.sh has also been updated to include the version prefixes. --- diff --git a/build/level_0/settings b/build/level_0/settings index f374afbfa..2edc21acd 100644 --- a/build/level_0/settings +++ b/build/level_0/settings @@ -5,7 +5,8 @@ project_name fll_0 version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/build/level_1/settings b/build/level_1/settings index 88141532f..e65d9162e 100644 --- a/build/level_1/settings +++ b/build/level_1/settings @@ -5,7 +5,8 @@ project_name fll_1 version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/build/level_2/settings b/build/level_2/settings index 1399c509f..889d9f20a 100644 --- a/build/level_2/settings +++ b/build/level_2/settings @@ -5,7 +5,8 @@ project_name fll_2 version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/build/monolithic/settings b/build/monolithic/settings index e70f75e35..5effdf078 100644 --- a/build/monolithic/settings +++ b/build/monolithic/settings @@ -5,7 +5,8 @@ project_name fll version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/build/scripts/bootstrap.sh b/build/scripts/bootstrap.sh index dbf83de25..766a14f3a 100644 --- a/build/scripts/bootstrap.sh +++ b/build/scripts/bootstrap.sh @@ -473,43 +473,44 @@ bootstrap_id() { "search_exclusive") echo -n 39;; "search_shared") echo -n 40;; "search_static") echo -n 41;; - "version_major") echo -n 42;; - "version_major_prefix") echo -n 43;; - "version_micro") echo -n 44;; - "version_micro_prefix") echo -n 45;; - "version_minor") echo -n 46;; - "version_minor_prefix") echo -n 47;; - "version_nano") echo -n 48;; - "version_nano_prefix") echo -n 49;; - "version_target") echo -n 50;; - - "build_libraries-$mode") echo -n 51;; - "build_sources_headers-$mode") echo -n 52;; - "build_sources_library-$mode") echo -n 53;; - "build_sources_program-$mode") echo -n 54;; - "build_sources_script-$mode") echo -n 55;; - "build_sources_setting-$mode") echo -n 56;; - "defines_all-$mode") echo -n 57;; - "defines_library-$mode") echo -n 58;; - "defines_program-$mode") echo -n 59;; - "defines_shared-$mode") echo -n 60;; - "defines_static-$mode") echo -n 61;; - "environment-$mode") echo -n 62;; - "flags_all-$mode") echo -n 63;; - "flags_library-$mode") echo -n 64;; - "flags_program-$mode") echo -n 65;; - "flags_shared-$mode") echo -n 66;; - "flags_static-$mode") echo -n 67;; - - "has-version_major_prefix") echo -n 68;; - "has-version_micro_prefix") echo -n 69;; - "has-version_minor_prefix") echo -n 70;; - "has-version_nano_prefix") echo -n 71;; - - "has-version_major_prefix-$mode") echo -n 72;; - "has-version_micro_prefix-$mode") echo -n 73;; - "has-version_minor_prefix-$mode") echo -n 74;; - "has-version_nano_prefix-$mode") echo -n 75;; + "version_file") echo -n 42;; + "version_major") echo -n 43;; + "version_major_prefix") echo -n 44;; + "version_micro") echo -n 45;; + "version_micro_prefix") echo -n 46;; + "version_minor") echo -n 47;; + "version_minor_prefix") echo -n 48;; + "version_nano") echo -n 49;; + "version_nano_prefix") echo -n 50;; + "version_target") echo -n 51;; + + "build_libraries-$mode") echo -n 52;; + "build_sources_headers-$mode") echo -n 53;; + "build_sources_library-$mode") echo -n 54;; + "build_sources_program-$mode") echo -n 55;; + "build_sources_script-$mode") echo -n 56;; + "build_sources_setting-$mode") echo -n 57;; + "defines_all-$mode") echo -n 58;; + "defines_library-$mode") echo -n 59;; + "defines_program-$mode") echo -n 60;; + "defines_shared-$mode") echo -n 61;; + "defines_static-$mode") echo -n 62;; + "environment-$mode") echo -n 63;; + "flags_all-$mode") echo -n 64;; + "flags_library-$mode") echo -n 65;; + "flags_program-$mode") echo -n 66;; + "flags_shared-$mode") echo -n 67;; + "flags_static-$mode") echo -n 68;; + + "has-version_major_prefix") echo -n 69;; + "has-version_micro_prefix") echo -n 70;; + "has-version_minor_prefix") echo -n 71;; + "has-version_nano_prefix") echo -n 72;; + + "has-version_major_prefix-$mode") echo -n 73;; + "has-version_micro_prefix-$mode") echo -n 74;; + "has-version_minor_prefix-$mode") echo -n 75;; + "has-version_nano_prefix-$mode") echo -n 76;; esac } @@ -600,6 +601,7 @@ bootstrap_operation_build() { local micro_prefix=${variables[$(bootstrap_id version_micro_prefix)]} local nano=${variables[$(bootstrap_id version_nano)]} local nano_prefix=${variables[$(bootstrap_id version_nano_prefix)]} + local file=${variables[$(bootstrap_id version_file)]} local target=${variables[$(bootstrap_id version_target)]} local compiler=${variables[$(bootstrap_id build_compiler)]} local indexer=${variables[$(bootstrap_id build_indexer)]} @@ -631,7 +633,8 @@ bootstrap_operation_build() { local flags_static=${variables[$(bootstrap_id flags_static)]} local i= local n= - local version= + local version_file= + local version_target= local alt=$1 local directory= local path_headers=${variables[$(bootstrap_id path_headers)]} @@ -650,18 +653,32 @@ bootstrap_operation_build() { nano_prefix="." fi + if [[ $file == "" ]] ; then + file="micro" + fi + if [[ $target == "" ]] ; then - target="micro" + target="major" + fi + + if [[ $file == "major" ]] ; then + version_file="$major_prefix$major" + elif [[ $file == "minor" ]] ; then + version_file="$major_prefix$major$minor_prefix$minor" + elif [[ $file == "micro" ]] ; then + version_file="$major_prefix$major$minor_prefix$minor$micro_prefix$micro" + elif [[ $file == "nano" ]] ; then + version_file="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano" fi if [[ $target == "major" ]] ; then - version="$major_prefix$major" + version_target="$major_prefix$major" elif [[ $target == "minor" ]] ; then - version="$major_prefix$major$minor_prefix$minor" + version_target="$major_prefix$major$minor_prefix$minor" elif [[ $target == "micro" ]] ; then - version="$major_prefix$major$minor_prefix$minor$micro_prefix$micro" + version_target="$major_prefix$major$minor_prefix$minor$micro_prefix$micro" elif [[ $target == "nano" ]] ; then - version="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano" + version_target="$major_prefix$major$minor_prefix$minor$micro_prefix$micro$nano_prefix$nano" fi if [[ $sources_library == "" ]] ; then @@ -933,17 +950,35 @@ bootstrap_operation_build() { done if [[ $verbosity == "verbose" ]] ; then - echo $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$version $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library + echo $compiler $sources -shared -Wl,-soname,lib$name.so.$version_target -o ${path_build}libraries/shared/lib$name.so.$version_file $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library fi - $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$version $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library || failure=1 + $compiler $sources -shared -Wl,-soname,lib$name.so.$version_target -o ${path_build}libraries/shared/lib$name.so.$version_file $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library $defines_all $defines_shared $defines_library || failure=1 if [[ $failure == "" ]] ; then - if [[ $target != "major" ]] ; then - ln $verbose -sf lib$name.so.$version ${path_build}libraries/shared/lib$name.so.$major || failure=1 + if [[ $file != "major" ]] ; then + if [[ $file == "minor" ]] ; then + ln $verbose -sf lib$name.so.$version_file ${path_build}libraries/shared/lib$name.so.$major_prefix$major || failure=1 + else + ln $verbose -sf lib$name.so.$major_prefix$major$minor_prefix$minor ${path_build}libraries/shared/lib$name.so.$major_prefix$major || failure=1 + + if [[ $failure == "" ]] ; then + if [[ $file == "micro" ]] ; then + ln $verbose -sf lib$name.so.$version_file ${path_build}libraries/shared/lib$name.so.$major_prefix$major$minor_prefix$minor || failure=1 + else + ln $verbose -sf lib$name.so.$major_prefix$major$minor_prefix$minor$micro_prefix$micro ${path_build}libraries/shared/lib$name.so.$major_prefix$major$minor_prefix$minor || failure=1 + + if [[ $failure == "" ]] ; then + ln $verbose -sf lib$name.so.$version_file ${path_build}libraries/shared/lib$name.so.$major_prefix$major$minor_prefix$minor_prefix$minor$micro_prefix$micro || failure=1 + fi + fi + fi + fi fi - ln $verbose -sf lib$name.so.$major ${path_build}libraries/shared/lib$name.so || failure=1 + if [[ $failure == "" ]] ; then + ln $verbose -sf lib$name.so.$major_prefix$major ${path_build}libraries/shared/lib$name.so || failure=1 + fi fi fi diff --git a/level_0/f_account/data/build/settings b/level_0/f_account/data/build/settings index 3fe24fb3b..4f4047dad 100644 --- a/level_0/f_account/data/build/settings +++ b/level_0/f_account/data/build/settings @@ -5,6 +5,7 @@ project_name f_account version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_capability/data/build/settings b/level_0/f_capability/data/build/settings index 27722d85c..b20a07fdf 100644 --- a/level_0/f_capability/data/build/settings +++ b/level_0/f_capability/data/build/settings @@ -5,6 +5,7 @@ project_name f_capability version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_color/data/build/settings b/level_0/f_color/data/build/settings index 95b4dfe62..42d62e763 100644 --- a/level_0/f_color/data/build/settings +++ b/level_0/f_color/data/build/settings @@ -5,6 +5,7 @@ project_name f_color version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_console/data/build/settings b/level_0/f_console/data/build/settings index 1a1678c3a..b33ae2398 100644 --- a/level_0/f_console/data/build/settings +++ b/level_0/f_console/data/build/settings @@ -5,6 +5,7 @@ project_name f_console version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_control_group/data/build/settings b/level_0/f_control_group/data/build/settings index f85fea32d..39d9f1bfc 100644 --- a/level_0/f_control_group/data/build/settings +++ b/level_0/f_control_group/data/build/settings @@ -5,6 +5,7 @@ project_name f_control_group version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_conversion/data/build/settings b/level_0/f_conversion/data/build/settings index 7ef969a47..2d0eb39be 100644 --- a/level_0/f_conversion/data/build/settings +++ b/level_0/f_conversion/data/build/settings @@ -5,6 +5,7 @@ project_name f_conversion version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_directory/data/build/settings b/level_0/f_directory/data/build/settings index 16aae95f6..bc6edc546 100644 --- a/level_0/f_directory/data/build/settings +++ b/level_0/f_directory/data/build/settings @@ -5,6 +5,7 @@ project_name f_directory version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_environment/data/build/settings b/level_0/f_environment/data/build/settings index 56f22ad93..368d40d0f 100644 --- a/level_0/f_environment/data/build/settings +++ b/level_0/f_environment/data/build/settings @@ -5,6 +5,7 @@ project_name f_environment version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_execute/data/build/settings b/level_0/f_execute/data/build/settings index 297bf6550..2e46c92d0 100644 --- a/level_0/f_execute/data/build/settings +++ b/level_0/f_execute/data/build/settings @@ -5,6 +5,7 @@ project_name f_execute version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_file/data/build/settings b/level_0/f_file/data/build/settings index 1c103a24a..1ac45877d 100644 --- a/level_0/f_file/data/build/settings +++ b/level_0/f_file/data/build/settings @@ -5,6 +5,7 @@ project_name f_file version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_fss/data/build/settings b/level_0/f_fss/data/build/settings index cc1b833ae..8590a310b 100644 --- a/level_0/f_fss/data/build/settings +++ b/level_0/f_fss/data/build/settings @@ -5,6 +5,7 @@ project_name f_fss version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_iki/data/build/settings b/level_0/f_iki/data/build/settings index 4bc11d24e..d094c2c42 100644 --- a/level_0/f_iki/data/build/settings +++ b/level_0/f_iki/data/build/settings @@ -5,6 +5,7 @@ project_name f_iki version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_limit/data/build/settings b/level_0/f_limit/data/build/settings index 1d2cc9500..a6d3590ba 100644 --- a/level_0/f_limit/data/build/settings +++ b/level_0/f_limit/data/build/settings @@ -5,6 +5,7 @@ project_name f_limit version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_memory/data/build/settings b/level_0/f_memory/data/build/settings index e601a572e..59b4eb989 100644 --- a/level_0/f_memory/data/build/settings +++ b/level_0/f_memory/data/build/settings @@ -5,6 +5,7 @@ project_name f_memory version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_path/data/build/settings b/level_0/f_path/data/build/settings index 973b76fff..22ec9f865 100644 --- a/level_0/f_path/data/build/settings +++ b/level_0/f_path/data/build/settings @@ -5,6 +5,7 @@ project_name f_path version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_pipe/data/build/settings b/level_0/f_pipe/data/build/settings index 9de6fddd7..171e68965 100644 --- a/level_0/f_pipe/data/build/settings +++ b/level_0/f_pipe/data/build/settings @@ -5,6 +5,7 @@ project_name f_pipe version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_print/data/build/settings b/level_0/f_print/data/build/settings index 119785c2f..d0454a6d4 100644 --- a/level_0/f_print/data/build/settings +++ b/level_0/f_print/data/build/settings @@ -5,6 +5,7 @@ project_name f_print version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_serialize/data/build/settings b/level_0/f_serialize/data/build/settings index 6f4d8aea2..da3a95b83 100644 --- a/level_0/f_serialize/data/build/settings +++ b/level_0/f_serialize/data/build/settings @@ -5,6 +5,7 @@ project_name f_serialize version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_signal/data/build/settings b/level_0/f_signal/data/build/settings index 6d336af7d..9f063b02f 100644 --- a/level_0/f_signal/data/build/settings +++ b/level_0/f_signal/data/build/settings @@ -5,6 +5,7 @@ project_name f_signal version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_socket/data/build/settings b/level_0/f_socket/data/build/settings index 561936119..9c10a5669 100644 --- a/level_0/f_socket/data/build/settings +++ b/level_0/f_socket/data/build/settings @@ -5,6 +5,7 @@ project_name f_socket version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_status/data/build/settings b/level_0/f_status/data/build/settings index 6a631ab8d..80e40c9ae 100644 --- a/level_0/f_status/data/build/settings +++ b/level_0/f_status/data/build/settings @@ -5,6 +5,7 @@ project_name f_status version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_string/data/build/settings b/level_0/f_string/data/build/settings index 45c22782e..fad6b0652 100644 --- a/level_0/f_string/data/build/settings +++ b/level_0/f_string/data/build/settings @@ -5,6 +5,7 @@ project_name f_string version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_thread/data/build/settings b/level_0/f_thread/data/build/settings index 8b32453d2..f193daff4 100644 --- a/level_0/f_thread/data/build/settings +++ b/level_0/f_thread/data/build/settings @@ -5,6 +5,7 @@ project_name f_thread version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_type/data/build/settings b/level_0/f_type/data/build/settings index 5ef106cd4..206728bb0 100644 --- a/level_0/f_type/data/build/settings +++ b/level_0/f_type/data/build/settings @@ -5,6 +5,7 @@ project_name f_type version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_type_array/data/build/settings b/level_0/f_type_array/data/build/settings index c4708ef28..8f4629e8b 100644 --- a/level_0/f_type_array/data/build/settings +++ b/level_0/f_type_array/data/build/settings @@ -5,6 +5,7 @@ project_name f_type_array version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_0/f_utf/data/build/settings b/level_0/f_utf/data/build/settings index ccc8bd323..d704b73c7 100644 --- a/level_0/f_utf/data/build/settings +++ b/level_0/f_utf/data/build/settings @@ -5,6 +5,7 @@ project_name f_utf version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_console/data/build/settings b/level_1/fl_console/data/build/settings index 0741e9f33..4c420ca58 100644 --- a/level_1/fl_console/data/build/settings +++ b/level_1/fl_console/data/build/settings @@ -5,6 +5,7 @@ project_name fl_console version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_control_group/data/build/settings b/level_1/fl_control_group/data/build/settings index 6de5384a4..3e7566b55 100644 --- a/level_1/fl_control_group/data/build/settings +++ b/level_1/fl_control_group/data/build/settings @@ -5,6 +5,7 @@ project_name fl_control_group version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_conversion/data/build/settings b/level_1/fl_conversion/data/build/settings index 35248a047..09af0fd39 100644 --- a/level_1/fl_conversion/data/build/settings +++ b/level_1/fl_conversion/data/build/settings @@ -5,6 +5,7 @@ project_name fl_conversion version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_directory/data/build/settings b/level_1/fl_directory/data/build/settings index cfda9d365..e0f3dc94d 100644 --- a/level_1/fl_directory/data/build/settings +++ b/level_1/fl_directory/data/build/settings @@ -5,6 +5,7 @@ project_name fl_directory version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_environment/data/build/settings b/level_1/fl_environment/data/build/settings index 9b6c1d4cb..3a55d0a17 100644 --- a/level_1/fl_environment/data/build/settings +++ b/level_1/fl_environment/data/build/settings @@ -5,6 +5,7 @@ project_name fl_environment version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_execute/data/build/settings b/level_1/fl_execute/data/build/settings index 55e942d10..e310b9ccf 100644 --- a/level_1/fl_execute/data/build/settings +++ b/level_1/fl_execute/data/build/settings @@ -5,6 +5,7 @@ project_name fl_execute version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_fss/data/build/settings b/level_1/fl_fss/data/build/settings index de5e07f49..70ea49d3a 100644 --- a/level_1/fl_fss/data/build/settings +++ b/level_1/fl_fss/data/build/settings @@ -5,6 +5,7 @@ project_name fl_fss version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_iki/data/build/settings b/level_1/fl_iki/data/build/settings index 03be9e879..84c38797e 100644 --- a/level_1/fl_iki/data/build/settings +++ b/level_1/fl_iki/data/build/settings @@ -5,6 +5,7 @@ project_name fl_iki version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_print/data/build/settings b/level_1/fl_print/data/build/settings index 2b627e389..50e10a8ef 100644 --- a/level_1/fl_print/data/build/settings +++ b/level_1/fl_print/data/build/settings @@ -5,6 +5,7 @@ project_name fl_print version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_signal/data/build/settings b/level_1/fl_signal/data/build/settings index 9107aeff5..5098d74e7 100644 --- a/level_1/fl_signal/data/build/settings +++ b/level_1/fl_signal/data/build/settings @@ -5,6 +5,7 @@ project_name fl_iki version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_status/data/build/settings b/level_1/fl_status/data/build/settings index a7c80ff39..345d9cb66 100644 --- a/level_1/fl_status/data/build/settings +++ b/level_1/fl_status/data/build/settings @@ -5,6 +5,7 @@ project_name fl_status version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_string/data/build/settings b/level_1/fl_string/data/build/settings index fb89d0ac2..b29c36a89 100644 --- a/level_1/fl_string/data/build/settings +++ b/level_1/fl_string/data/build/settings @@ -5,6 +5,7 @@ project_name fl_string version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_utf/data/build/settings b/level_1/fl_utf/data/build/settings index be6ad5418..f2047f9a8 100644 --- a/level_1/fl_utf/data/build/settings +++ b/level_1/fl_utf/data/build/settings @@ -5,6 +5,7 @@ project_name fl_utf version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_1/fl_utf_file/data/build/settings b/level_1/fl_utf_file/data/build/settings index 7b91ce3a0..9605e8186 100644 --- a/level_1/fl_utf_file/data/build/settings +++ b/level_1/fl_utf_file/data/build/settings @@ -5,6 +5,7 @@ project_name fl_utf_file version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_control_group/data/build/settings b/level_2/fll_control_group/data/build/settings index f5b09c1d1..4c13dc3c0 100644 --- a/level_2/fll_control_group/data/build/settings +++ b/level_2/fll_control_group/data/build/settings @@ -5,6 +5,7 @@ project_name fll_control_group version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_error/data/build/settings b/level_2/fll_error/data/build/settings index 88fbe4f6e..885241919 100644 --- a/level_2/fll_error/data/build/settings +++ b/level_2/fll_error/data/build/settings @@ -5,6 +5,7 @@ project_name fll_error version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_execute/data/build/settings b/level_2/fll_execute/data/build/settings index bcfb09f03..b3661fa02 100644 --- a/level_2/fll_execute/data/build/settings +++ b/level_2/fll_execute/data/build/settings @@ -5,6 +5,7 @@ project_name fll_execute version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_file/data/build/settings b/level_2/fll_file/data/build/settings index 0448e2d20..a84b15e54 100644 --- a/level_2/fll_file/data/build/settings +++ b/level_2/fll_file/data/build/settings @@ -5,6 +5,7 @@ project_name fll_file version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_fss/data/build/settings b/level_2/fll_fss/data/build/settings index 97b272ecb..995afefaa 100644 --- a/level_2/fll_fss/data/build/settings +++ b/level_2/fll_fss/data/build/settings @@ -5,6 +5,7 @@ project_name fll_fss version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_iki/data/build/settings b/level_2/fll_iki/data/build/settings index 587ee86dc..b03dbe5db 100644 --- a/level_2/fll_iki/data/build/settings +++ b/level_2/fll_iki/data/build/settings @@ -5,6 +5,7 @@ project_name fll_iki version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_path/data/build/settings b/level_2/fll_path/data/build/settings index 1061c3b05..d6be4a2b5 100644 --- a/level_2/fll_path/data/build/settings +++ b/level_2/fll_path/data/build/settings @@ -5,6 +5,7 @@ project_name fll_path version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_program/data/build/settings b/level_2/fll_program/data/build/settings index 85a8e41db..c2a88e78a 100644 --- a/level_2/fll_program/data/build/settings +++ b/level_2/fll_program/data/build/settings @@ -5,6 +5,7 @@ project_name fll_program version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_2/fll_status/data/build/settings b/level_2/fll_status/data/build/settings index 265b63cb1..f01ca99f1 100644 --- a/level_2/fll_status/data/build/settings +++ b/level_2/fll_status/data/build/settings @@ -5,6 +5,7 @@ project_name fll_status version_major 0 version_minor 5 version_micro 4 +version_file minor version_target micro environment diff --git a/level_3/byte_dump/data/build/settings b/level_3/byte_dump/data/build/settings index 1189fc9a4..5b68c1b91 100644 --- a/level_3/byte_dump/data/build/settings +++ b/level_3/byte_dump/data/build/settings @@ -5,7 +5,8 @@ project_name byte_dump version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/control/data/build/settings b/level_3/control/data/build/settings index 90879d69f..b971b4fc1 100644 --- a/level_3/control/data/build/settings +++ b/level_3/control/data/build/settings @@ -5,7 +5,8 @@ project_name control version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/controller/data/build/settings b/level_3/controller/data/build/settings index 065ab6cfe..7ab6a1054 100644 --- a/level_3/controller/data/build/settings +++ b/level_3/controller/data/build/settings @@ -5,7 +5,8 @@ project_name controller version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fake/c/private-build.c b/level_3/fake/c/private-build.c index d90a6e0d8..0a94f185d 100644 --- a/level_3/fake/c/private-build.c +++ b/level_3/fake/c/private-build.c @@ -1020,21 +1020,30 @@ extern "C" { f_array_length_t parameter_linker_length = fake_build_parameter_library_shared_prefix_length; f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used; + if (data_build.setting.version_file == fake_build_version_type_major) { + parameter_file_path_length += parameter_file_name_major_length; + } + else if (data_build.setting.version_file == fake_build_version_type_minor) { + parameter_file_path_length += parameter_file_name_minor_length; + } + else if (data_build.setting.version_file == fake_build_version_type_micro) { + parameter_file_path_length += parameter_file_name_micro_length; + } + else if (data_build.setting.version_file == fake_build_version_type_nano) { + parameter_file_path_length += parameter_file_name_nano_length; + } + if (data_build.setting.version_target == fake_build_version_type_major) { parameter_linker_length += parameter_file_name_major_length; - parameter_file_path_length += parameter_file_name_major_length; } else if (data_build.setting.version_target == fake_build_version_type_minor) { parameter_linker_length += parameter_file_name_minor_length; - parameter_file_path_length += parameter_file_name_minor_length; } else if (data_build.setting.version_target == fake_build_version_type_micro) { parameter_linker_length += parameter_file_name_micro_length; - parameter_file_path_length += parameter_file_name_micro_length; } else if (data_build.setting.version_target == fake_build_version_type_nano) { parameter_linker_length += parameter_file_name_nano_length; - parameter_file_path_length += parameter_file_name_nano_length; } char parameter_linker[parameter_linker_length + 1]; @@ -1043,21 +1052,30 @@ extern "C" { memcpy(parameter_linker, fake_build_parameter_library_shared_prefix, fake_build_parameter_library_shared_prefix_length); memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); + if (data_build.setting.version_file == fake_build_version_type_major) { + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); + } + else if (data_build.setting.version_file == fake_build_version_type_minor) { + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_minor, parameter_file_name_minor_length); + } + else if (data_build.setting.version_file == fake_build_version_type_micro) { + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_micro, parameter_file_name_micro_length); + } + else if (data_build.setting.version_file == fake_build_version_type_nano) { + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_nano, parameter_file_name_nano_length); + } + if (data_build.setting.version_target == fake_build_version_type_major) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_major, parameter_file_name_major_length); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); } else if (data_build.setting.version_target == fake_build_version_type_minor) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_minor, parameter_file_name_minor_length); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_minor, parameter_file_name_minor_length); } else if (data_build.setting.version_target == fake_build_version_type_micro) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_micro, parameter_file_name_micro_length); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_micro, parameter_file_name_micro_length); } else if (data_build.setting.version_target == fake_build_version_type_nano) { memcpy(parameter_linker + fake_build_parameter_library_shared_prefix_length, parameter_file_name_nano, parameter_file_name_nano_length); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_nano, parameter_file_name_nano_length); } parameter_linker[parameter_linker_length] = 0; @@ -1108,24 +1126,14 @@ extern "C" { } } - if (data_build.setting.version_target != fake_build_version_type_major && parameter_file_name_major_length) { - f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_major_length; + if (parameter_file_name_major_length) { - char *link_target = 0; - char parameter_file_path[parameter_file_path_length + 1]; + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_length; - if (data_build.setting.version_target == fake_build_version_type_minor) { - link_target = parameter_file_name_minor; - } - else if (data_build.setting.version_target == fake_build_version_type_micro) { - link_target = parameter_file_name_micro; - } - else if (data_build.setting.version_target == fake_build_version_type_nano) { - link_target = parameter_file_name_nano; - } + char parameter_file_path[parameter_file_path_length + 1]; memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name, parameter_file_name_length); parameter_file_path[parameter_file_path_length] = 0; @@ -1135,10 +1143,10 @@ extern "C" { return 0; } - *status = f_file_link(link_target, parameter_file_path); + *status = f_file_link(parameter_file_name_major, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, link_target, f_string_eol_s[0]); + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_major, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1147,20 +1155,20 @@ extern "C" { return 0; } - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, link_target, "link", fll_error_file_type_file); + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_major, "link", fll_error_file_type_file); return 0; } } - if (F_status_is_error_not(*status) && parameter_file_name_major_length) { + if (data_build.setting.version_file != fake_build_version_type_major && parameter_file_name_major_length) { - f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_length; + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_major_length; char parameter_file_path[parameter_file_path_length + 1]; memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); - memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name, parameter_file_name_length); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length); parameter_file_path[parameter_file_path_length] = 0; @@ -1170,10 +1178,10 @@ extern "C" { return 0; } - *status = f_file_link(parameter_file_name_major, parameter_file_path); + *status = f_file_link(parameter_file_name_minor, parameter_file_path); if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { - fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_major, f_string_eol_s[0]); + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_minor, f_string_eol_s[0]); } else if (F_status_is_error(*status)) { if (F_status_set_fine(*status) == F_file_found) { @@ -1182,10 +1190,80 @@ extern "C" { return 0; } - fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_major, "link", fll_error_file_type_file); + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_minor, "link", fll_error_file_type_file); return 0; } + + if (data_build.setting.version_file != fake_build_version_type_minor && parameter_file_name_minor_length) { + + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_minor_length; + + char parameter_file_path[parameter_file_path_length + 1]; + + memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_minor, parameter_file_name_minor_length); + + parameter_file_path[parameter_file_path_length] = 0; + + if (fake_signal_received(main)) { + *status = F_status_set_error(F_signal); + + return 0; + } + + *status = f_file_link(parameter_file_name_micro, parameter_file_path); + + if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_micro, f_string_eol_s[0]); + } + else if (F_status_is_error(*status)) { + if (F_status_set_fine(*status) == F_file_found) { + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_path, "link", fll_error_file_type_file); + + return 0; + } + + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_micro, "link", fll_error_file_type_file); + + return 0; + } + + if (data_build.setting.version_file != fake_build_version_type_micro && parameter_file_name_micro_length) { + + f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_micro_length; + + char parameter_file_path[parameter_file_path_length + 1]; + + memcpy(parameter_file_path, main.path_build_libraries_shared.string, main.path_build_libraries_shared.used); + memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_micro, parameter_file_name_micro_length); + + parameter_file_path[parameter_file_path_length] = 0; + + if (fake_signal_received(main)) { + *status = F_status_set_error(F_signal); + + return 0; + } + + *status = f_file_link(parameter_file_name_nano, parameter_file_path); + + if (F_status_is_error_not(*status) && main.error.verbosity == f_console_verbosity_verbose) { + fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, parameter_file_name_nano, f_string_eol_s[0]); + } + else if (F_status_is_error(*status)) { + if (F_status_set_fine(*status) == F_file_found) { + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_path, "link", fll_error_file_type_file); + + return 0; + } + + fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, parameter_file_name_nano, "link", fll_error_file_type_file); + + return 0; + } + } + } } fake_build_touch(main, file_stage, status); @@ -1537,6 +1615,7 @@ extern "C" { f_string_dynamics_t search_exclusive = f_string_dynamics_t_initialize; f_string_dynamics_t search_shared = f_string_dynamics_t_initialize; f_string_dynamics_t search_static = f_string_dynamics_t_initialize; + f_string_dynamics_t version_file = f_string_dynamics_t_initialize; f_string_dynamics_t version_major = f_string_dynamics_t_initialize; f_string_dynamics_t version_major_prefix = f_string_dynamics_t_initialize; f_string_dynamics_t version_micro = f_string_dynamics_t_initialize; @@ -1590,6 +1669,7 @@ extern "C" { fake_build_setting_name_search_exclusive, fake_build_setting_name_search_shared, fake_build_setting_name_search_static, + fake_build_setting_name_version_file, fake_build_setting_name_version_major, fake_build_setting_name_version_major_prefix, fake_build_setting_name_version_micro, @@ -1644,6 +1724,7 @@ extern "C" { fake_build_setting_name_search_exclusive_length, fake_build_setting_name_search_shared_length, fake_build_setting_name_search_static_length, + fake_build_setting_name_version_file_length, fake_build_setting_name_version_major_length, fake_build_setting_name_version_major_prefix_length, fake_build_setting_name_version_micro_length, @@ -1698,6 +1779,7 @@ extern "C" { &search_exclusive, &search_shared, &search_static, + &version_file, &version_major, &version_major_prefix, &version_micro, @@ -1761,6 +1843,7 @@ extern "C" { F_false, F_false, F_false, + F_false, }; f_string_t function = "fll_fss_snatch_apart"; @@ -1917,6 +2000,7 @@ extern "C" { fake_build_setting_name_search_exclusive, fake_build_setting_name_search_shared, fake_build_setting_name_search_static, + fake_build_setting_name_version_file, fake_build_setting_name_version_major, fake_build_setting_name_version_major_prefix, fake_build_setting_name_version_micro, @@ -1952,6 +2036,7 @@ extern "C" { &search_exclusive, &search_shared, &search_static, + &version_file, &version_major, &version_major_prefix, &version_micro, @@ -2013,6 +2098,7 @@ extern "C" { 0, 0, 0, + 0, &setting->version_major, &setting->version_major_prefix, &setting->version_micro, @@ -2053,6 +2139,7 @@ extern "C" { 0, 0, 0, + &setting->version_file, 0, 0, 0, @@ -2064,6 +2151,78 @@ extern "C" { &setting->version_target, }; + const uint8_t settings_single_version_default[] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + fake_build_version_type_micro, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + fake_build_version_type_major, + }; + + const char *settings_single_version_default_name[] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + fake_build_version_micro, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + fake_build_version_major, + }; + // 1 = "yes" or "no", 2 = path/, 3 = literal, 4 = "bash", "c", or "c++", 5 = "major", "minor", "micro", or "nano". const uint8_t settings_single_type[] = { 3, @@ -2089,6 +2248,7 @@ extern "C" { 1, 1, 1, + 5, 3, 3, 3, @@ -2100,7 +2260,7 @@ extern "C" { 5, }; - for (f_array_length_t i = 0; i < 32; ++i) { + for (f_array_length_t i = 0; i < 33; ++i) { if (!settings_single_source[i]->used) continue; @@ -2191,7 +2351,7 @@ extern "C" { *settings_single_version[i] = fake_build_version_type_nano; } else { - *settings_single_version[i] = fake_build_version_type_major; + *settings_single_version[i] = settings_single_version_default[i]; if (main.error.verbosity == f_console_verbosity_verbose) { fprintf(main.output.stream, "%c", f_string_eol_s[0]); @@ -2208,7 +2368,7 @@ extern "C" { f_color_print(main.output.stream, main.context.set.warning, "', or '"); f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_nano); f_color_print(main.output.stream, main.context.set.warning, "', defaulting to '"); - f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); + f_color_print(main.output.stream, main.context.set.notable, "%s", settings_single_version_default_name[i]); f_color_print(main.output.stream, main.context.set.warning, "'."); fprintf(main.output.stream, "%c", f_string_eol_s[0]); } @@ -2243,6 +2403,40 @@ extern "C" { } } // for + if (F_status_is_error_not(*status)) { + if (!setting->version_file) { + setting->version_file = fake_build_version_type_micro; + + if (main.error.verbosity == f_console_verbosity_verbose) { + fprintf(main.output.stream, "%c", f_string_eol_s[0]); + f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); + f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_setting_name_version_file); + f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); + f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); + f_color_print(main.output.stream, main.context.set.warning, "' is required, defaulting to '"); + f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_micro); + f_color_print(main.output.stream, main.context.set.warning, "'."); + fprintf(main.output.stream, "%c", f_string_eol_s[0]); + } + } + + if (!setting->version_target) { + setting->version_target = fake_build_version_type_major; + + if (main.error.verbosity == f_console_verbosity_verbose) { + fprintf(main.output.stream, "%c", f_string_eol_s[0]); + f_color_print(main.output.stream, main.context.set.warning, "%sthe setting '", fll_error_print_warning); + f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_setting_name_version_target); + f_color_print(main.output.stream, main.context.set.warning, "' in the file '"); + f_color_print(main.output.stream, main.context.set.notable, "%s", path_file); + f_color_print(main.output.stream, main.context.set.warning, "' is required, defaulting to '"); + f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_major); + f_color_print(main.output.stream, main.context.set.warning, "'."); + fprintf(main.output.stream, "%c", f_string_eol_s[0]); + } + } + } + // Provide these defaults only if the Object is not defined (this allows for empty Content to exist if the Object is defined). // In the case of the version prefixes, if the associated version is empty, then instead clear the associated version prefix. if (F_status_is_error_not(*status)) { @@ -2261,10 +2455,10 @@ extern "C" { }; bool has_prefix_object[] = { - settings_matches[43], // version_major_prefix - settings_matches[45], // version_minor_prefix - settings_matches[47], // version_micro_prefix - settings_matches[49], // version_nano_prefix + settings_matches[44], // version_major_prefix + settings_matches[46], // version_minor_prefix + settings_matches[48], // version_micro_prefix + settings_matches[50], // version_nano_prefix }; const char *name_target[] = { @@ -2281,7 +2475,20 @@ extern "C" { fake_build_setting_name_version_nano, }; - for (f_array_length_t i = 0; i < 4; ++i) { + const char *setting_name[] = { + fake_build_setting_name_version_file, + fake_build_setting_name_version_target, + }; + + const uint8_t setting_target[] = { + setting->version_file, + setting->version_target, + }; + + f_array_length_t i = 0; + f_array_length_t j = 0; + + for (; i < 4; ++i) { if (version[i]->used) { if (!has_prefix_object[i]) { @@ -2298,20 +2505,26 @@ extern "C" { else { prefix[i]->used = 0; - if (setting->version_target && i + 1 <= setting->version_target) { - if (main.error.verbosity != f_console_verbosity_quiet) { - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); - f_color_print(main.error.to.stream, main.context.set.error, "%sWhen the version target is set to '", fll_error_print_error); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_target[setting->version_target - 1]); - f_color_print(main.error.to.stream, main.context.set.error, "', then the '"); - f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_object[i]); - f_color_print(main.error.to.stream, main.context.set.error, "' Object must have Content."); - fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + for (j = 0; j < 2; ++j) { + if (setting_target[j] && i + 1 <= setting_target[j]) { + if (main.error.verbosity != f_console_verbosity_quiet) { + fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + f_color_print(main.error.to.stream, main.context.set.error, "%sWhen the '", fll_error_print_error); + f_color_print(main.error.to.stream, main.context.set.notable, "%s", setting_name[j]); + f_color_print(main.error.to.stream, main.context.set.error, "' is set to '"); + f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_target[setting_target[j] - 1]); + f_color_print(main.error.to.stream, main.context.set.error, "', then the '"); + f_color_print(main.error.to.stream, main.context.set.notable, "%s", name_object[i]); + f_color_print(main.error.to.stream, main.context.set.error, "' Object must have Content."); + fprintf(main.error.to.stream, "%c", f_string_eol_s[0]); + } + + *status = F_status_set_error(F_failure); + break; } + } // for - *status = F_status_set_error(F_failure); - break; - } + if (F_status_is_error(*status)) break; } } // for } @@ -2340,6 +2553,7 @@ extern "C" { macro_f_string_dynamics_t_delete_simple(search_exclusive); macro_f_string_dynamics_t_delete_simple(search_shared); macro_f_string_dynamics_t_delete_simple(search_static); + macro_f_string_dynamics_t_delete_simple(version_file); macro_f_string_dynamics_t_delete_simple(version_major); macro_f_string_dynamics_t_delete_simple(version_major_prefix); macro_f_string_dynamics_t_delete_simple(version_micro); diff --git a/level_3/fake/c/private-common.h b/level_3/fake/c/private-common.h index 18d522664..73ae70339 100644 --- a/level_3/fake/c/private-common.h +++ b/level_3/fake/c/private-common.h @@ -16,6 +16,7 @@ extern "C" { typedef struct { uint8_t build_language; + uint8_t version_file; uint8_t version_target; bool build_script; @@ -74,6 +75,7 @@ extern "C" { } fake_build_setting_t; #define fake_build_setting_t_initialize { \ + 0, \ 0, \ 0, \ F_true, \ @@ -212,6 +214,7 @@ extern "C" { #define fake_build_setting_name_search_exclusive "search_exclusive" #define fake_build_setting_name_search_shared "search_shared" #define fake_build_setting_name_search_static "search_static" + #define fake_build_setting_name_version_file "version_file" #define fake_build_setting_name_version_major "version_major" #define fake_build_setting_name_version_major_prefix "version_major_prefix" #define fake_build_setting_name_version_micro "version_micro" @@ -264,6 +267,7 @@ extern "C" { #define fake_build_setting_name_search_exclusive_length 16 #define fake_build_setting_name_search_shared_length 13 #define fake_build_setting_name_search_static_length 13 + #define fake_build_setting_name_version_file_length 12 #define fake_build_setting_name_version_major_length 13 #define fake_build_setting_name_version_major_prefix_length 20 #define fake_build_setting_name_version_micro_length 13 @@ -274,7 +278,7 @@ extern "C" { #define fake_build_setting_name_version_nano_prefix_length 19 #define fake_build_setting_name_version_target_length 14 - #define fake_build_setting_total 51 + #define fake_build_setting_total 52 #define fake_build_setting_default_version "0" #define fake_build_setting_default_version_prefix "." diff --git a/level_3/fake/c/private-make.c b/level_3/fake/c/private-make.c index b1a2b5f0a..e2ec44f51 100644 --- a/level_3/fake/c/private-make.c +++ b/level_3/fake/c/private-make.c @@ -1592,20 +1592,23 @@ extern "C" { { const f_string_t uint8_name[] = { fake_build_setting_name_build_language, + fake_build_setting_name_version_file, fake_build_setting_name_version_target, }; const f_array_length_t uint8_length[] = { fake_build_setting_name_build_language_length, + fake_build_setting_name_version_file_length, fake_build_setting_name_version_target_length, }; const uint8_t uint8_value[] = { data_make->setting_build.build_language, + data_make->setting_build.version_file, data_make->setting_build.version_target, }; - for (uint8_t i = 0; i < 2; ++i) { + for (uint8_t i = 0; i < 3; ++i) { status = fl_string_dynamic_partial_compare_string(uint8_name[i], data_make->buffer, uint8_length[i], range_name); diff --git a/level_3/fake/data/build/settings b/level_3/fake/data/build/settings index fb5bf9c66..814d16d72 100644 --- a/level_3/fake/data/build/settings +++ b/level_3/fake/data/build/settings @@ -5,7 +5,8 @@ project_name fake version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fake/documents/settings.txt b/level_3/fake/documents/settings.txt index 24340131a..e1779cc96 100644 --- a/level_3/fake/documents/settings.txt +++ b/level_3/fake/documents/settings.txt @@ -229,6 +229,17 @@ Settings Documentation: When "yes", static library paths are searched during compile. Both this and search_shared cannot be "no" at the same time. + version_file\: + Designates which version should be used when building the symbolic links. + Any version prefixes are used as defined. + A Symbolic link is created against this created file such that "libX.so" is a link to "libX.so.A". + For all files other than when file is "major", another symbolic link is created against this such that "libX.so.A" is a link to "libX.so.A.X" such that X is the respective "B", "B.C', or "B.C.D" as described below. + The default file is "major". + When "major" is used, the file created is "libX.so.A", whereas "X" is the "project_name" and "A" is the major version. + When "minor" is used, the file created is "libX.so.A.B", whereas "X" is the "project_name" and "A.B" is the major and minor versions, respectively. + When "micro" is used, the file created is "libX.so.A.B.C", whereas "X" is the "project_name" and "A.B.C" is the major, minor, and micro versions, respectively. + When "nano" is used, the file created is "libX.so.A.B.C.D", whereas "X" is the "project_name" and "A.B.C.D" is the major, minor, micro, and nano versions, respectively. + version_major\: The major version number (or in theory any characters allowed in a filename). This should generally be a positive number or 0. @@ -282,10 +293,10 @@ Settings Documentation: This is only added if "version_nano" is not empty. version_target\: - Designates which version should be used when building the shared library and creating the respective symbolic links. + Designates which version should be used when linking the shared library. Any version prefixes are used as defined. The default target is "micro". - When "major" is used, a shared library is generated with "-Wl,-soname,libX.A", whereas "X" is the "project_name" and "A" is the major version. - When "minor" is used, a shared library is generated with "-Wl,-soname,libX.A.B", whereas "X" is the "project_name" and "A.B" is the major and minor versions, respectively. - When "micro" is used, a shared library is generated with "-Wl,-soname,libX.A.B.C", whereas "X" is the "project_name" and "A.B.C" is the major, minor, and micro versions, respectively. - When "nano" is used, a shared library is generated with "-Wl,-soname,libX.A.B.C.D", whereas "X" is the "project_name" and "A.B.C.D" is the major, minor, micro, and nano versions, respectively. + When "major" is used, a shared library is generated with "-Wl,-soname,libX.so.A", whereas "X" is the "project_name" and "A" is the major version. + When "minor" is used, a shared library is generated with "-Wl,-soname,libX.so.A.B", whereas "X" is the "project_name" and "A.B" is the major and minor versions, respectively. + When "micro" is used, a shared library is generated with "-Wl,-soname,libX.so.A.B.C", whereas "X" is the "project_name" and "A.B.C" is the major, minor, and micro versions, respectively. + When "nano" is used, a shared library is generated with "-Wl,-soname,libX.so.A.B.C.D", whereas "X" is the "project_name" and "A.B.C.D" is the major, minor, micro, and nano versions, respectively. diff --git a/level_3/fake/specifications/settings.txt b/level_3/fake/specifications/settings.txt index 09e6818b7..e116bc6dd 100644 --- a/level_3/fake/specifications/settings.txt +++ b/level_3/fake/specifications/settings.txt @@ -52,6 +52,7 @@ Settings Specification: "search_exclusive": Must only one of: "yes" or "no". "search_shared": Must only one of: "yes" or "no". "search_static": Must only one of: "yes" or "no". + "version_file": Must only be one of: "major", "minor", "micro", or "nano". "version_major": Must only be a single value containing valid filename characters. "version_major_prefix": Must be zero or more valid filename characters. "version_minor": Must only be a single value containing valid filename characters. diff --git a/level_3/firewall/data/build/settings b/level_3/firewall/data/build/settings index 896130a38..ba2265051 100644 --- a/level_3/firewall/data/build/settings +++ b/level_3/firewall/data/build/settings @@ -5,7 +5,8 @@ project_name firewall version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_basic_list_read/data/build/settings b/level_3/fss_basic_list_read/data/build/settings index 8d363ca94..e9f92be61 100644 --- a/level_3/fss_basic_list_read/data/build/settings +++ b/level_3/fss_basic_list_read/data/build/settings @@ -5,7 +5,8 @@ project_name fss_basic_list_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_basic_list_write/data/build/settings b/level_3/fss_basic_list_write/data/build/settings index a31145dee..51ecd889f 100644 --- a/level_3/fss_basic_list_write/data/build/settings +++ b/level_3/fss_basic_list_write/data/build/settings @@ -5,7 +5,8 @@ project_name fss_basic_list_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_basic_read/data/build/settings b/level_3/fss_basic_read/data/build/settings index 54656f674..671faf8b0 100644 --- a/level_3/fss_basic_read/data/build/settings +++ b/level_3/fss_basic_read/data/build/settings @@ -5,7 +5,8 @@ project_name fss_basic_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_basic_write/data/build/settings b/level_3/fss_basic_write/data/build/settings index ada933b62..7841ca7bc 100644 --- a/level_3/fss_basic_write/data/build/settings +++ b/level_3/fss_basic_write/data/build/settings @@ -5,7 +5,8 @@ project_name fss_basic_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_embedded_list_read/data/build/settings b/level_3/fss_embedded_list_read/data/build/settings index cd8bb167a..18f534056 100644 --- a/level_3/fss_embedded_list_read/data/build/settings +++ b/level_3/fss_embedded_list_read/data/build/settings @@ -5,7 +5,8 @@ project_name fss_embedded_list_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_embedded_list_write/data/build/settings b/level_3/fss_embedded_list_write/data/build/settings index c70ac40a6..2f74e4ef1 100644 --- a/level_3/fss_embedded_list_write/data/build/settings +++ b/level_3/fss_embedded_list_write/data/build/settings @@ -5,7 +5,8 @@ project_name fss_embedded_list_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_extended_list_read/data/build/settings b/level_3/fss_extended_list_read/data/build/settings index cc53cf214..60efc4364 100644 --- a/level_3/fss_extended_list_read/data/build/settings +++ b/level_3/fss_extended_list_read/data/build/settings @@ -5,7 +5,8 @@ project_name fss_extended_list_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_extended_list_write/data/build/settings b/level_3/fss_extended_list_write/data/build/settings index bd98b6d6d..7b1bf9fbd 100644 --- a/level_3/fss_extended_list_write/data/build/settings +++ b/level_3/fss_extended_list_write/data/build/settings @@ -5,7 +5,8 @@ project_name fss_extended_list_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_extended_read/data/build/settings b/level_3/fss_extended_read/data/build/settings index 7449e6ade..192272832 100644 --- a/level_3/fss_extended_read/data/build/settings +++ b/level_3/fss_extended_read/data/build/settings @@ -5,7 +5,8 @@ project_name fss_extended_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_extended_write/data/build/settings b/level_3/fss_extended_write/data/build/settings index 19a8c2973..197722224 100644 --- a/level_3/fss_extended_write/data/build/settings +++ b/level_3/fss_extended_write/data/build/settings @@ -5,7 +5,8 @@ project_name fss_extended_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_identify/data/build/settings b/level_3/fss_identify/data/build/settings index fedacddf6..2712d6394 100644 --- a/level_3/fss_identify/data/build/settings +++ b/level_3/fss_identify/data/build/settings @@ -5,7 +5,8 @@ project_name fss_identify version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/fss_status_code/data/build/settings b/level_3/fss_status_code/data/build/settings index 91436ebed..40ae41247 100644 --- a/level_3/fss_status_code/data/build/settings +++ b/level_3/fss_status_code/data/build/settings @@ -5,7 +5,8 @@ project_name fss_status_code version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/iki_read/data/build/settings b/level_3/iki_read/data/build/settings index a6b740a7b..1acf2a63d 100644 --- a/level_3/iki_read/data/build/settings +++ b/level_3/iki_read/data/build/settings @@ -5,7 +5,8 @@ project_name iki_read version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/iki_write/data/build/settings b/level_3/iki_write/data/build/settings index cd821adba..1340fa20a 100644 --- a/level_3/iki_write/data/build/settings +++ b/level_3/iki_write/data/build/settings @@ -5,7 +5,8 @@ project_name iki_write version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment diff --git a/level_3/status_code/data/build/settings b/level_3/status_code/data/build/settings index 732705dc1..d092a28b9 100644 --- a/level_3/status_code/data/build/settings +++ b/level_3/status_code/data/build/settings @@ -5,7 +5,8 @@ project_name status_code version_major 0 version_minor 5 version_micro 4 -version_target micro +version_file micro +version_target minor environment