The documentation has version_target described as the target to build but the C source for Featureless Make is using it for the link file name.
Change this behavior to be consistent with the documentation.
Update all build settings to now be set to micro to be consistent with this change.
The default values should only be assigned if the Object is not provided at all.
This allows for the value to be set to empty (aka NULL).
The version_major, version_minor, and version_micro all are currently required to be defined and if empty will be set to 0.
Some projects use four versions and others like to add things like "-dev" or "-rc1".
Provide a way to do this by adding a version_nano as well as adding version prefixes.
For each version there is now a version_X_prefix such as version_major now has version_major_prefix.
For all version prefixes, except version_major_prefix, the prefix will be in place of the '.' in the version name.
The major version is an exception case as there is no value by default.
For example "1.2.3" would have version_major = "1", version_minor_prefix = ".", version_minor = "2", version_micro_prefix = "." version_micro = "3".
The default version continues to be a version_target of micro, such as "1.2.3".
The build settings documentation is out of date and needed some corrections to be made.
There is still more work to do in adding the prefixes and making the bootstrap.sh script and the fake program more consistent with the version numbers.
I simply ran out of time.
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
return 1
fi
+ bootstrap_load_settings_has
+
+ if [[ $? -ne 0 ]] ; then
+ bootstrap_cleanup
+ return 1
+ fi
+
project_built="${path_build_stage}${variables[$(bootstrap_id project_name)]}"
if [[ $process != "" ]] ; then
project_built="${project_built}-$process"
"build_sources_headers") echo -n 6;;
"build_sources_library") echo -n 7;;
"build_sources_program") echo -n 8;;
- "build_sources_setting") echo -n 9;;
- "build_sources_script") echo -n 10;;
+ "build_sources_script") echo -n 9;;
+ "build_sources_setting") echo -n 10;;
"build_static") echo -n 11;;
"defines_all") echo -n 12;;
- "defines_shared") echo -n 13;;
- "defines_static") echo -n 14;;
- "environment") echo -n 15;;
- "flags_all") echo -n 16;;
- "flags_library") echo -n 17;;
- "flags_program") echo -n 18;;
- "flags_shared") echo -n 19;;
- "flags_static") echo -n 20;;
- "modes") echo -n 21;;
- "modes_default") echo -n 22;;
- "path_language") echo -n 23;;
- "path_headers") echo -n 24;;
- "path_headers_preserve") echo -n 25;;
- "path_library_script") echo -n 26;;
- "path_library_shared") echo -n 27;;
- "path_library_static") echo -n 28;;
- "path_program_script") echo -n 29;;
- "path_program_shared") echo -n 30;;
- "path_program_static") echo -n 31;;
- "path_sources") echo -n 32;;
- "path_standard") echo -n 33;;
- "process_post") echo -n 34;;
- "process_pre") echo -n 35;;
- "project_name") echo -n 36;;
- "search_exclusive") echo -n 37;;
- "search_shared") echo -n 38;;
- "search_static") echo -n 39;;
- "version_major") echo -n 40;;
- "version_micro") echo -n 41;;
- "version_minor") echo -n 42;;
- "version_target") echo -n 43;;
-
- "build_libraries-$mode") echo -n 44;;
- "build_sources_headers-$mode") echo -n 45;;
- "build_sources_library-$mode") echo -n 46;;
- "build_sources_program-$mode") echo -n 47;;
- "build_sources_setting-$mode") echo -n 48;;
- "build_sources_script-$mode") echo -n 49;;
- "defines_all-$mode") echo -n 50;;
- "defines_shared-$mode") echo -n 51;;
- "defines_static-$mode") echo -n 52;;
- "environment-$mode") echo -n 53;;
- "flags_all-$mode") echo -n 54;;
- "flags_library-$mode") echo -n 55;;
- "flags_program-$mode") echo -n 56;;
- "flags_shared-$mode") echo -n 57;;
- "flags_static-$mode") echo -n 58;;
+ "defines_library") echo -n 13;;
+ "defines_program") echo -n 14;;
+ "defines_shared") echo -n 15;;
+ "defines_static") echo -n 16;;
+ "environment") echo -n 17;;
+ "flags_all") echo -n 18;;
+ "flags_library") echo -n 19;;
+ "flags_program") echo -n 20;;
+ "flags_shared") echo -n 21;;
+ "flags_static") echo -n 22;;
+ "modes") echo -n 23;;
+ "modes_default") echo -n 24;;
+ "path_headers") echo -n 25;;
+ "path_headers_preserve") echo -n 26;;
+ "path_language") echo -n 27;;
+ "path_library_script") echo -n 28;;
+ "path_library_shared") echo -n 29;;
+ "path_library_static") echo -n 30;;
+ "path_program_script") echo -n 31;;
+ "path_program_shared") echo -n 32;;
+ "path_program_static") echo -n 33;;
+ "path_sources") echo -n 34;;
+ "path_standard") echo -n 35;;
+ "process_post") echo -n 36;;
+ "process_pre") echo -n 37;;
+ "project_name") echo -n 38;;
+ "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;;
esac
}
return 1
fi
- for i in build_compiler build_indexer build_language build_libraries 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_headers_preserve 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
+ for i in build_compiler build_indexer build_language build_libraries build_script build_shared build_sources_headers build_sources_library build_sources_program build_sources_script build_sources_setting build_static defines_all defines_library defines_program defines_shared defines_static environment flags_all flags_library flags_program flags_shared flags_static modes modes_default path_headers path_headers_preserve path_language 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_major_prefix version_micro version_micro_prefix version_minor version_minor_prefix version_nano version_nano_prefix version_target ; do
variables[$(bootstrap_id $i)]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
done
}
bootstrap_load_settings_mode() {
local i=
- for i in build_libraries-$mode build_sources_headers-$mode build_sources_library-$mode build_sources_program-$mode build_sources_setting-$mode build_sources_script-$mode defines_all-$mode defines_shared-$mode defines_static-$mode environment-$mode flags_all-$mode flags_library-$mode flags_program-$mode flags_shared-$mode flags_static-$mode ; do
+ for i in build_libraries-$mode build_sources_headers-$mode build_sources_library-$mode build_sources_program-$mode build_sources_script-$mode build_sources_setting-$mode defines_all-$mode defines_library-$mode defines_program-$mode defines_shared-$mode defines_static-$mode environment-$mode flags_all-$mode flags_library-$mode flags_program-$mode flags_shared-$mode flags_static-$mode ; do
variables[$(bootstrap_id $i)]=$(grep -s -o "^[[:space:]]*$i[[:space:]].*\$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||')
done
}
+bootstrap_load_settings_has() {
+ local i=
+
+ for i in version_major_prefix version_minor_prefix version_micro_prefix version_nano_prefix ; do
+ if [[ $(grep -s -o "^[[:space:]]*$i\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then
+ variables[$(bootstrap_id has-$i)]="yes"
+ else
+ variables[$(bootstrap_id has-$i)]="no"
+ fi
+ done
+
+ for i in version_major_prefix-$mode version_minor_prefix-$mode version_micro_prefix-$mode version_nano_prefix-$mode ; do
+ if [[ $(grep -s -o "^[[:space:]]*$i-$mode\>" $settings_file | sed -e "s|^[[:space:]]*||") ]] ; then
+ variables[$(bootstrap_id has-$i)]="yes"
+ else
+ variables[$(bootstrap_id has-$i)]="no"
+ fi
+ done
+}
+
bootstrap_prepare_build() {
local failure=
local alt=$1
local failure=
local name=${variables[$(bootstrap_id project_name)]}
local major=${variables[$(bootstrap_id version_major)]}
+ local major_prefix=${variables[$(bootstrap_id version_major_prefix)]}
local minor=${variables[$(bootstrap_id version_minor)]}
+ local minor_prefix=${variables[$(bootstrap_id version_minor_prefix)]}
local micro=${variables[$(bootstrap_id version_micro)]}
+ 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 target=${variables[$(bootstrap_id version_target)]}
local compiler=${variables[$(bootstrap_id build_compiler)]}
local indexer=${variables[$(bootstrap_id build_indexer)]}
local search_static=${variables[$(bootstrap_id search_static)]}
local shared=${variables[$(bootstrap_id build_shared)]}
local static=${variables[$(bootstrap_id build_static)]}
+ local sources_headers=${variables[$(bootstrap_id build_sources_headers)]}
local sources_library=${variables[$(bootstrap_id build_sources_library)]}
local sources_program=${variables[$(bootstrap_id build_sources_program)]}
- local sources_headers=${variables[$(bootstrap_id build_sources_headers)]}
- local sources_bash=${variables[$(bootstrap_id build_sources_bash)]}
+ local sources_script=${variables[$(bootstrap_id build_sources_script)]}
local sources_setting=${variables[$(bootstrap_id build_sources_setting)]}
local sources=
local libraries=${variables[$(bootstrap_id build_libraries)]}
local links=
- local defines=${variables[$(bootstrap_id defines_all)]}
+ local defines_all=${variables[$(bootstrap_id defines_all)]}
+ local defines_library=${variables[$(bootstrap_id defines_library)]}
+ local defines_program=${variables[$(bootstrap_id defines_program)]}
local defines_shared=${variables[$(bootstrap_id defines_shared)]}
local defines_static=${variables[$(bootstrap_id defines_static)]}
local flags_all=${variables[$(bootstrap_id flags_all)]}
- local flags_shared=${variables[$(bootstrap_id flags_shared)]}
- local flags_static=${variables[$(bootstrap_id flags_static)]}
local flags_library=${variables[$(bootstrap_id flags_library)]}
local flags_program=${variables[$(bootstrap_id flags_program)]}
+ local flags_shared=${variables[$(bootstrap_id flags_shared)]}
+ local flags_static=${variables[$(bootstrap_id flags_static)]}
local i=
local n=
local version=
local path_headers=${variables[$(bootstrap_id path_headers)]}
local path_headers_preserve=${variables[$(bootstrap_id path_headers_preserve)]}
+ # provide defaults for version prefixes if they are not specified (except for major).
+ if [[ ${variables[$(bootstrap_id has-version_minor_prefix)]} != "yes" && $minor != "" ]] ; then
+ minor_prefix="."
+ fi
+
+ if [[ ${variables[$(bootstrap_id has-version_micro_prefix)]} != "yes" && $micro != "" ]] ; then
+ micro_prefix="."
+ fi
+
+ if [[ ${variables[$(bootstrap_id has-version_nano_prefix)]} != "yes" && $nano != "" ]] ; then
+ nano_prefix="."
+ fi
+
if [[ $target == "" ]] ; then
- target="major"
+ target="micro"
fi
if [[ $target == "major" ]] ; then
- version="$major"
+ version="$major_prefix$major"
elif [[ $target == "minor" ]] ; then
- version="${major}.$minor"
+ version="$major_prefix$major$minor_prefix$minor"
elif [[ $target == "micro" ]] ; then
- version="${major}.${minor}.$micro"
+ version="$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"
fi
if [[ $sources_library == "" ]] ; then
libraries="${variables[$(bootstrap_id build_libraries-$mode)]} $libraries"
fi
- if [[ $defines == "" ]] ; then
- defines=${variables[$(bootstrap_id defines_all-$mode)]}
+ if [[ $defines_all == "" ]] ; then
+ defines_all=${variables[$(bootstrap_id defines_all-$mode)]}
+ else
+ defines_all="$defines_all ${variables[$(bootstrap_id defines_all-$mode)]}"
+ fi
+
+ if [[ $defines_library == "" ]] ; then
+ defines_library=${variables[$(bootstrap_id defines_library-$mode)]}
+ else
+ defines_library="$defines_library ${variables[$(bootstrap_id defines_library-$mode)]}"
+ fi
+
+ if [[ $defines_program == "" ]] ; then
+ defines_program=${variables[$(bootstrap_id defines_program-$mode)]}
else
- defines="$defines ${variables[$(bootstrap_id defines_all-$mode)]}"
+ defines_program="$defines_program ${variables[$(bootstrap_id defines_program-$mode)]}"
fi
if [[ $defines_shared == "" ]] ; then
flags_all="$flags_all ${variables[$(bootstrap_id flags_all-$mode)]}"
fi
- if [[ $flags_shared == "" ]] ; then
- flags_shared=${variables[$(bootstrap_id flags_shared-$mode)]}
- else
- flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-$mode)]}"
- fi
-
- if [[ $flags_static == "" ]] ; then
- flags_static=${variables[$(bootstrap_id flags_static-$mode)]}
- else
- flags_static="$flags_static ${variables[$(bootstrap_id flags_static-$mode)]}"
- fi
-
if [[ $flags_library == "" ]] ; then
flags_library=${variables[$(bootstrap_id flags_library-$mode)]}
else
flags_program="$flags_program ${variables[$(bootstrap_id flags_program-$mode)]}"
fi
+ if [[ $flags_shared == "" ]] ; then
+ flags_shared=${variables[$(bootstrap_id flags_shared-$mode)]}
+ else
+ flags_shared="$flags_shared ${variables[$(bootstrap_id flags_shared-$mode)]}"
+ fi
+
+ if [[ $flags_static == "" ]] ; then
+ flags_static=${variables[$(bootstrap_id flags_static-$mode)]}
+ else
+ flags_static="$flags_static ${variables[$(bootstrap_id flags_static-$mode)]}"
+ fi
+
if [[ $path_work != "" ]] ; then
arguments_include="$arguments_include -I${path_work}includes/"
arguments_shared="$arguments_shared -L${path_work}libraries/shared/"
fi
if [[ $defines_override != "" ]] ; then
- defines="$defines_override"
+ defines_all="$defines_override"
+ defines_library=
+ defines_program=
defines_shared=
defines_static=
fi
- if [[ $defines != "" ]] ; then
- flags_all="$flags_all "
- for i in $defines ; do
- flags_all="${flags_all}$i "
- done
- fi
-
- if [[ $defines_shared != "" ]] ; then
- flags_shared="$flags_shared "
- for i in $defines_shared ; do
- flags_shared="${flags_shared}$i "
- done
- fi
-
- if [[ $defines_static != "" ]] ; then
- flags_static="$flags_static "
- for i in $defines_static ; do
- flags_static="${flags_static}$i "
- done
- fi
-
if [[ $enable_shared == "yes" ]] ; then
shared="yes"
search_shared="yes"
done
if [[ $verbosity == "verbose" ]] ; then
- echo $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$major.$minor.$micro $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library
+ 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
fi
- $compiler $sources -shared -Wl,-soname,lib$name.so.$version -o ${path_build}libraries/shared/lib$name.so.$major.$minor.$micro $arguments_shared $arguments_include $libraries $flags_all $flags_shared $flags_library || failure=1
+ $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
if [[ $failure == "" ]] ; then
- ln $verbose -sf lib$name.so.$major.$minor.$micro ${path_build}libraries/shared/lib$name.so.$major || failure=1
+ if [[ $target != "major" ]] ; then
+ ln $verbose -sf lib$name.so.$version ${path_build}libraries/shared/lib$name.so.$major || failure=1
+ fi
+
ln $verbose -sf lib$name.so.$major ${path_build}libraries/shared/lib$name.so || failure=1
fi
fi
done
if [[ $verbosity == "verbose" ]] ; then
- echo $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program
+ echo $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program $defines_all $defines_shared $defines_program
fi
- $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program || failure=1
+ $compiler $sources -o ${path_build}programs/shared/$name $arguments_shared $arguments_include $links $libraries $flags_all $flags_shared $flags_program $defines_all $defines_shared $defines_program || failure=1
fi
fi
sources="$sources${path_build}objects/$directory/$n.o "
if [[ $verbosity == "verbose" ]] ; then
- echo $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library
+ echo $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library $defines_all $defines_static $defines_library
fi
- $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library || failure=1
+ $compiler $path_c$i -c -static -o ${path_build}objects/$directory/$n.o $arguments_static $arguments_include $libraries $flags_all $flags_static $flags_library $defines_all $defines_static $defines_library || failure=1
if [[ $failure == "1" ]] ; then
break;
done
if [[ $verbosity == "verbose" ]] ; then
- echo $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program
+ echo $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program $defines_all $defines_static $defines_program
fi
- $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program || failure=1
+ $compiler $sources -static -o ${path_build}programs/static/$name $arguments_static $arguments_include $links $libraries $flags_all $flags_static $flags_program $defines_all $defines_static $defines_program || failure=1
fi
fi
unset bootstrap_id
unset bootstrap_load_settings
unset bootstrap_load_settings_mode
+ unset bootstrap_load_settings_has
unset bootstrap_prepare_build
unset bootstrap_operation_build
unset bootstrap_operation_clean
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
#endif // _di_fll_fss_identify_
#ifndef _di_fll_fss_snatch_
- f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], f_array_length_t *indexs[]) {
+ f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
memset(&matched, 0, sizeof(bool) * size);
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
+
if (matched[j]) continue;
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
matched[j] = F_true;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
if (!contents.array[i].used) continue;
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], values[j]);
#endif // _di_fll_fss_snatch_
#ifndef _di_fll_fss_snatch_apart_
- f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_array_length_t j = 0;
f_array_length_t k = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
value = values[j];
content = &contents.array[i];
+ if (matches) {
+ matches[j] = F_true;
+ }
+
if (values[j]->used + contents.array[i].used > values[j]->size) {
if (values[j]->used + contents.array[i].used > f_array_length_t_size) {
return F_status_set_error(F_array_too_large);
}
}
- for (k = 0; k < contents.array[i].used; k++) {
+ for (k = 0; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[k], &values[j]->array[values[j]->used]);
if (F_status_is_error(status)) return status;
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
} // for
} // for
#endif // _di_fll_fss_snatch_apart_
#ifndef _di_fll_fss_snatch_map_
- f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_string_map_t *map = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
+
if (!contents.array[i].used) continue;
length_name = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
matched = F_false;
length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1;
- for (k = 0; k < values[j]->used; k++) {
+ for (k = 0; k < values[j]->used; ++k) {
status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
if (status == F_equal_to) {
matched = F_true;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
macro_f_string_dynamic_t_delete_simple(name);
break;
}
if (matched) {
name.used = 0;
+
continue;
}
if (values[j]->used + f_fss_default_allocation_step > f_array_length_t_size) {
if (values[j]->used == f_array_length_t_size) {
macro_f_string_dynamic_t_delete_simple(name);
+
return F_status_set_error(F_array_too_large);
}
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
}
map->name.used = name.used;
map->name.size = name.size;
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
macro_f_string_dynamic_t_clear(name);
#endif // _di_fll_fss_snatch_map_
#ifndef _di_fll_fss_snatch_map_apart_
- f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_string_map_multi_t *map_multi = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
+
if (!contents.array[i].used) continue;
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
status = f_string_map_multis_increase(f_fss_default_allocation_step_small, values[j]);
if (F_status_is_error(status)) return status;
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &map_multi->name);
if (F_status_is_error(status)) return status;
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
if (contents.array[i].used > 1) {
status = f_string_dynamics_increase_by(contents.array[i].used - 1, &map_multi->value);
if (F_status_is_error(status)) return status;
- for (k = 1; k < contents.array[i].used; k++) {
+ for (k = 1; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[k], &map_multi->value.array[map_multi->value.used]);
if (F_status_is_error(status)) return status;
- map_multi->value.used++;
+ ++map_multi->value.used;
} // for
}
} // for
#endif // _di_fll_fss_snatch_map_apart_
#ifndef _di_fll_fss_snatch_map_mash_
- f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_string_map_t *map = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
+
if (!contents.array[i].used) continue;
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
status = f_string_maps_increase(f_fss_default_allocation_step_small, values[j]);
if (F_status_is_error(status)) return status;
#endif // _di_fll_fss_snatch_map_mash_
#ifndef _di_fll_fss_snatch_map_mash_apart_
- f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_string_map_multi_t *map_multi = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
+
if (!contents.array[i].used) continue;
length_name = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
+
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &name);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
matched = F_false;
length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1;
- for (k = 0; k < values[j]->used; k++) {
+ for (k = 0; k < values[j]->used; ++k) {
status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
map_multi->name.used = name.used;
map_multi->name.size = name.size;
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
macro_f_string_dynamic_t_clear(name);
status = f_string_dynamics_increase(f_fss_default_allocation_step_small, &map_multi->value);
if (F_status_is_error(status)) return status;
- for (k = 1; k < contents.array[i].used; k++) {
+ for (k = 1; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], &map_multi->value.array[map_multi->value.used]);
if (F_status_is_error(status)) return status;
} // for
- map_multi->value.used++;
+ ++map_multi->value.used;
} // for
} // for
macro_f_string_dynamic_t_delete_simple(name);
+
return F_none;
}
#endif // _di_fll_fss_snatch_map_mash_apart_
#ifndef _di_fll_fss_snatch_map_together_
- f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_string_map_t *map = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
+
if (!contents.array[i].used) continue;
length_name = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_name, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
status = f_string_dynamic_partial_append_nulless(buffer, contents.array[i].array[0], &name);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
matched = F_false;
length_name = (contents.array[i].array[0].stop - contents.array[i].array[0].start) + 1;
- for (k = 0; k < values[j]->used; k++) {
+ for (k = 0; k < values[j]->used; ++k) {
status = fl_string_compare_trim(buffer.string + contents.array[i].array[0].start, values[j]->array[k].name.string, length_name, values[j]->array[k].name.used);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
map->name.used = name.used;
map->name.size = name.size;
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
macro_f_string_dynamic_t_clear(name);
if (F_status_is_error(status)) {
macro_f_string_dynamic_t_delete_simple(name);
+
return status;
}
}
} // for
macro_f_string_dynamic_t_delete_simple(name);
+
return F_none;
}
#endif // _di_fll_fss_snatch_map_together_
#ifndef _di_fll_fss_snatch_mash_
- f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]) {
+ f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
memset(&matched, 0, sizeof(bool) * size);
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
+
if (matched[j]) continue;
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
matched[j] = F_true;
- for (k = 0; k < contents.array[i].used; k++) {
+ for (k = 0; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]);
if (F_status_is_error(status)) return status;
#endif // _di_fll_fss_snatch_mash_
#ifndef _di_fll_fss_snatch_mash_apart_
- f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]) {
+ f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_array_length_t j = 0;
f_array_length_t k = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
+ if (matches) {
+ matches[j] = F_true;
+ }
+
status = f_string_dynamics_increase(f_fss_default_allocation_step_small, values[j]);
if (F_status_is_error(status)) return status;
if (F_status_is_error(status)) return status;
}
- for (k = 0; k < contents.array[i].used; k++) {
+ for (k = 0; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], &values[j]->array[values[j]->used]);
if (F_status_is_error(status)) return status;
} // for
- values[j]->used++;
+ ++values[j]->used;
if (indexs) {
indexs[j]->array[indexs[j]->used] = i;
- indexs[j]->used++;
+ ++indexs[j]->used;
}
} // for
} // for
#endif // _di_fll_fss_snatch_mash_apart_
#ifndef _di_fll_fss_snatch_together_
- f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]) {
+ f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]) {
#ifndef _di_level_2_parameter_checking_
if (!size) return F_status_set_error(F_parameter);
if (objects.used != contents.used) return F_status_set_error(F_parameter);
f_array_length_t j = 0;
f_array_length_t k = 0;
- for (; i < objects.used; i++) {
+ for (; i < objects.used; ++i) {
length_object = (objects.array[i].stop - objects.array[i].start) + 1;
- for (j = 0; j < size; j++) {
+ for (j = 0; j < size; ++j) {
status = fl_string_compare_trim(buffer.string + objects.array[i].start, names[j], length_object, lengths[j]);
if (F_status_is_error(status)) return status;
if (status == F_equal_to_not) continue;
- for (k = 0; k < contents.array[i].used; k++) {
+ if (matches) {
+ matches[j] = F_true;
+ }
+
+ for (k = 0; k < contents.array[i].used; ++k) {
status = f_string_dynamic_partial_mash_nulless(glue, glue_length, buffer, contents.array[i].array[k], values[j]);
if (F_status_is_error(status)) return status;
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_
- extern f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], f_array_length_t *indexs[]);
+ extern f_status_t fll_fss_snatch(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]);
#endif // _di_fll_fss_snatch_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_apart_
- extern f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_apart_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of map arrays where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_map_
- extern f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_map(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_map_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of multi map arrays where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_map_apart_
- extern f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_map_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_map_apart_
/**
* The length of the glue string
* @param values
* An array of multi map value arrays where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* Errors (with error bit) from: f_string_dynamic_partial_mash_nulless().
*/
#ifndef _di_fll_fss_snatch_map_mash_
- extern f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_map_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_map_mash_
/**
* The length of the glue string
* @param values
* An array of multi map value arrays where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_map_mash_apart_
- extern f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_map_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_map_multis_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_map_mash_apart_
/**
* The length of the glue string
* @param values
* An array of map arrays where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_map_together_
- extern f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_map_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_maps_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_map_together_
/**
* The length of the glue string.
* @param values
* An array of values where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* Errors (with error bit) from: f_string_dynamic_partial_mash_nulless().
*/
#ifndef _di_fll_fss_snatch_mash_
- extern f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]);
+ extern f_status_t fll_fss_snatch_mash(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]);
#endif // _di_fll_fss_snatch_mash_
/**
* The length of the glue string
* @param values
* An array of values where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_mash_apart_
- extern f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], f_array_lengths_t *indexs[]);
+ extern f_status_t fll_fss_snatch_mash_apart(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamics_t *values[], bool matches[], f_array_lengths_t *indexs[]);
#endif // _di_fll_fss_snatch_mash_apart_
/**
* The total size of the names, lengths, and values arrays.
* @param values
* An array of values where "snatched" content is stored.
+ * @param matches
+ * An array representing the if an Object was matched.
+ * Set the pointer address to 0 to disable.
* @param indexs
- * An array representing the index within the objects where the match was made.
+ * An array representing the index within the Objects where the Content match was made.
* Set the pointer address to 0 to disable.
*
* @return
* @see fl_string_compare_trim()
*/
#ifndef _di_fll_fss_snatch_together_
- extern f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], f_array_length_t *indexs[]);
+ extern f_status_t fll_fss_snatch_together(const f_string_static_t buffer, const f_fss_objects_t objects, const f_fss_contents_t contents, const f_string_t names[], const f_array_length_t lengths[], const f_array_length_t size, const f_string_t glue, const f_array_length_t glue_length, f_string_dynamic_t *values[], bool matches[], f_array_length_t *indexs[]);
#endif // _di_fll_fss_snatch_together_
#ifdef __cplusplus
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
fake_build_version_type_major = 1,
fake_build_version_type_micro,
fake_build_version_type_minor,
+ fake_build_version_type_nano,
};
#define fake_build_version_major "major"
#define fake_build_version_micro "micro"
#define fake_build_version_minor "minor"
+ #define fake_build_version_nano "nano"
#define fake_build_version_major_length 5
#define fake_build_version_micro_length 5
#define fake_build_version_minor_length 5
+ #define fake_build_version_nano_length 4
#endif // _di_fake_build_version_
#ifndef _di_fake_defines_
if (F_status_is_error(*status)) break;
} // for
}
+
+ if (is_library) {
+ for (i = 0; i < data_build.setting.defines_library.used && F_status_is_error_not(*status); ++i) {
+
+ *status = fll_execute_arguments_add(data_build.setting.defines_library.array[i].string, data_build.setting.defines_library.array[i].used, arguments);
+ if (F_status_is_error(*status)) break;
+ } // for
+ }
+ else {
+ for (i = 0; i < data_build.setting.defines_program.used && F_status_is_error_not(*status); ++i) {
+
+ *status = fll_execute_arguments_add(data_build.setting.defines_program.array[i].string, data_build.setting.defines_program.array[i].used, arguments);
+ if (F_status_is_error(*status)) break;
+ } // for
+ }
}
}
#endif // _di_fake_build_arguments_standard_add_
}
}
- f_array_length_t parameter_file_name_length = fake_build_parameter_library_name_prefix_length;
- f_array_length_t parameter_file_name_major_length = fake_build_parameter_library_name_prefix_length;
- f_array_length_t parameter_file_name_minor_length = fake_build_parameter_library_name_prefix_length;
- f_array_length_t parameter_file_name_micro_length = fake_build_parameter_library_name_prefix_length;
-
- parameter_file_name_micro_length += data_build.setting.project_name.used + fake_build_parameter_library_name_suffix_shared_length;
- parameter_file_name_length = parameter_file_name_micro_length;
-
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_major.used;
- parameter_file_name_major_length = parameter_file_name_micro_length;
-
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_minor.used;
- parameter_file_name_minor_length = parameter_file_name_micro_length;
-
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length + data_build.setting.version_micro.used;
+ const f_array_length_t parameter_file_name_length = fake_build_parameter_library_name_prefix_length + data_build.setting.project_name.used + fake_build_parameter_library_name_suffix_shared_length;
+ const f_array_length_t parameter_file_name_major_length = data_build.setting.version_major.used ? parameter_file_name_length + data_build.setting.version_major_prefix.used + data_build.setting.version_major.used : 0;
+ const f_array_length_t parameter_file_name_minor_length = data_build.setting.version_minor.used ? parameter_file_name_major_length + data_build.setting.version_minor_prefix.used + data_build.setting.version_minor.used : 0;
+ const f_array_length_t parameter_file_name_micro_length = data_build.setting.version_micro.used ? parameter_file_name_minor_length + data_build.setting.version_micro_prefix.used + data_build.setting.version_micro.used : 0;
+ const f_array_length_t parameter_file_name_nano_length = data_build.setting.version_nano.used ? parameter_file_name_micro_length + data_build.setting.version_nano_prefix.used + data_build.setting.version_nano.used : 0;
char parameter_file_name[parameter_file_name_length + 1];
char parameter_file_name_major[parameter_file_name_major_length + 1];
char parameter_file_name_minor[parameter_file_name_minor_length + 1];
char parameter_file_name_micro[parameter_file_name_micro_length + 1];
-
- parameter_file_name_micro_length = 0;
-
- memcpy(parameter_file_name, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- memcpy(parameter_file_name_major, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- memcpy(parameter_file_name_minor, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- memcpy(parameter_file_name_micro, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- parameter_file_name_micro_length += fake_build_parameter_library_name_prefix_length;
-
- memcpy(parameter_file_name + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used);
- memcpy(parameter_file_name_major + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used);
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.project_name.string, data_build.setting.project_name.used);
- parameter_file_name_micro_length += data_build.setting.project_name.used;
-
- memcpy(parameter_file_name + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
- memcpy(parameter_file_name_major + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
- parameter_file_name_micro_length += fake_build_parameter_library_name_suffix_shared_length;
-
- memcpy(parameter_file_name_major + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length;
-
- memcpy(parameter_file_name_major + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used);
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_major.string, data_build.setting.version_major.used);
- parameter_file_name_micro_length += data_build.setting.version_major.used;
- parameter_file_name_major_length = parameter_file_name_micro_length;
-
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length;
-
- memcpy(parameter_file_name_minor + parameter_file_name_micro_length, data_build.setting.version_minor.string, data_build.setting.version_minor.used);
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_minor.string, data_build.setting.version_minor.used);
- parameter_file_name_micro_length += data_build.setting.version_minor.used;
- parameter_file_name_minor_length = parameter_file_name_micro_length;
-
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, fake_build_parameter_library_separator, fake_build_parameter_library_separator_length);
- parameter_file_name_micro_length += fake_build_parameter_library_separator_length;
-
- memcpy(parameter_file_name_micro + parameter_file_name_micro_length, data_build.setting.version_micro.string, data_build.setting.version_micro.used);
- parameter_file_name_micro_length += data_build.setting.version_micro.used;
+ char parameter_file_name_nano[parameter_file_name_nano_length + 1];
parameter_file_name[parameter_file_name_length] = 0;
parameter_file_name_major[parameter_file_name_major_length] = 0;
parameter_file_name_minor[parameter_file_name_minor_length] = 0;
parameter_file_name_micro[parameter_file_name_micro_length] = 0;
+ parameter_file_name_nano[parameter_file_name_nano_length] = 0;
- {
- f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_micro_length;
+ memcpy(parameter_file_name, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- char parameter_file_path[parameter_file_path_length + 1];
+ if (parameter_file_name_major_length) {
+ memcpy(parameter_file_name_major, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- 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);
+ if (parameter_file_name_minor_length) {
+ memcpy(parameter_file_name_minor, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
- parameter_file_path[parameter_file_path_length] = 0;
+ if (parameter_file_name_micro_length) {
+ memcpy(parameter_file_name_micro, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
+
+ if (parameter_file_name_nano_length) {
+ memcpy(parameter_file_name_nano, fake_build_parameter_library_name_prefix, fake_build_parameter_library_name_prefix_length);
+ }
+ }
+ }
+ }
+
+ f_array_length_t count = fake_build_parameter_library_name_prefix_length;
+
+ memcpy(parameter_file_name + count, data_build.setting.project_name.string, data_build.setting.project_name.used);
+
+ if (parameter_file_name_major_length) {
+ memcpy(parameter_file_name_major + count, data_build.setting.project_name.string, data_build.setting.project_name.used);
+
+ if (parameter_file_name_minor_length) {
+ memcpy(parameter_file_name_minor + count, data_build.setting.project_name.string, data_build.setting.project_name.used);
+
+ if (parameter_file_name_micro_length) {
+ memcpy(parameter_file_name_micro + count, data_build.setting.project_name.string, data_build.setting.project_name.used);
+
+ if (parameter_file_name_nano_length) {
+ memcpy(parameter_file_name_nano + count, data_build.setting.project_name.string, data_build.setting.project_name.used);
+ }
+ }
+ }
+ }
+
+ count += data_build.setting.project_name.used;
+
+ memcpy(parameter_file_name + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
+
+ if (parameter_file_name_major_length) {
+ memcpy(parameter_file_name_major + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
+
+ if (parameter_file_name_minor_length) {
+ memcpy(parameter_file_name_minor + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
+
+ if (parameter_file_name_micro_length) {
+ memcpy(parameter_file_name_micro + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
+
+ if (parameter_file_name_nano_length) {
+ memcpy(parameter_file_name_nano + count, fake_build_parameter_library_name_suffix_shared, fake_build_parameter_library_name_suffix_shared_length);
+ }
+ }
+ }
+ }
+
+ count += fake_build_parameter_library_name_suffix_shared_length;
+
+ if (parameter_file_name_major_length) {
+ if (data_build.setting.version_major_prefix.used) {
+ memcpy(parameter_file_name_major + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used);
+ memcpy(parameter_file_name_minor + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used);
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_major_prefix.string, data_build.setting.version_major_prefix.used);
+ count += data_build.setting.version_major_prefix.used;
+ }
+ memcpy(parameter_file_name_major + count, data_build.setting.version_major.string, data_build.setting.version_major.used);
+ memcpy(parameter_file_name_minor + count, data_build.setting.version_major.string, data_build.setting.version_major.used);
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_major.string, data_build.setting.version_major.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_major.string, data_build.setting.version_major.used);
+ count += data_build.setting.version_major.used;
+
+ if (parameter_file_name_minor_length) {
+ if (data_build.setting.version_minor_prefix.used) {
+ memcpy(parameter_file_name_minor + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used);
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_minor_prefix.string, data_build.setting.version_minor_prefix.used);
+ count += data_build.setting.version_minor_prefix.used;
+ }
+
+ memcpy(parameter_file_name_minor + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used);
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_minor.string, data_build.setting.version_minor.used);
+ count += data_build.setting.version_minor.used;
+
+ if (parameter_file_name_micro_length) {
+ if (data_build.setting.version_micro_prefix.used) {
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_micro_prefix.string, data_build.setting.version_micro_prefix.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_micro_prefix.string, data_build.setting.version_micro_prefix.used);
+ count += data_build.setting.version_micro_prefix.used;
+ }
+
+ memcpy(parameter_file_name_micro + count, data_build.setting.version_micro.string, data_build.setting.version_micro.used);
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_micro.string, data_build.setting.version_micro.used);
+ count += data_build.setting.version_micro.used;
+
+ if (parameter_file_name_nano_length) {
+ if (data_build.setting.version_nano_prefix.used) {
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_nano_prefix.string, data_build.setting.version_nano_prefix.used);
+ count += data_build.setting.version_nano_prefix.used;
+ }
+
+ memcpy(parameter_file_name_nano + count, data_build.setting.version_nano.string, data_build.setting.version_nano.used);
+ count += data_build.setting.version_nano.used;
+ }
+ }
+ }
+ }
+
+ {
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_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];
+ char parameter_file_path[parameter_file_path_length + 1];
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_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;
+ parameter_file_path[parameter_file_path_length] = 0;
const f_string_t values[] = {
fake_build_parameter_library_shared,
fll_error_print(main.error, F_status_set_fine(*status), "fll_execute_arguments_add", F_true);
macro_f_string_dynamics_t_delete_simple(arguments);
+
return 0;
}
}
}
}
- if (data_build.setting.version_target != fake_build_version_type_micro) {
- f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used;
-
- if (data_build.setting.version_target == fake_build_version_type_major) {
- parameter_file_path_length += parameter_file_name_major_length;
- }
- else {
- parameter_file_path_length += parameter_file_name_minor_length;
- }
+ 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;
+ char *link_target = 0;
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);
-
- if (data_build.setting.version_target == fake_build_version_type_major) {
- memcpy(parameter_file_path + main.path_build_libraries_shared.used, parameter_file_name_major, parameter_file_name_major_length);
+ if (data_build.setting.version_target == fake_build_version_type_minor) {
+ link_target = parameter_file_name_minor;
}
- else {
- 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) {
+ link_target = parameter_file_name_micro;
+ }
+ else if (data_build.setting.version_target == fake_build_version_type_nano) {
+ link_target = parameter_file_name_nano;
}
- parameter_file_path[parameter_file_path_length] = 0;
+ 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);
+ 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);
+ *status = f_file_link(link_target, 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]);
+ fprintf(main.output.stream, "Linked file '%s' to '%s'.%c", parameter_file_path, link_target, f_string_eol_s[0]);
}
else if (F_status_is_error(*status)) {
if (F_status_set_fine(*status) == F_file_found) {
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);
+ fll_error_file_print(main.error, F_status_set_fine(*status), "f_file_link", F_true, link_target, "link", fll_error_file_type_file);
return 0;
}
}
- if (F_status_is_error_not(*status)) {
+ if (F_status_is_error_not(*status) && parameter_file_name_major_length) {
+
f_array_length_t parameter_file_path_length = main.path_build_libraries_shared.used + parameter_file_name_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);
parameter_file_path[parameter_file_path_length] = 0;
if (fake_signal_received(main)) {
*status = F_status_set_error(F_signal);
+
return 0;
}
- if (data_build.setting.version_target == fake_build_version_type_major) {
- *status = f_file_link(parameter_file_name_major, parameter_file_path);
- }
- else if (data_build.setting.version_target == fake_build_version_type_minor) {
- *status = f_file_link(parameter_file_name_minor, parameter_file_path);
- }
- else if (data_build.setting.version_target == fake_build_version_type_micro) {
- *status = f_file_link(parameter_file_name_micro, 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 '", parameter_file_path);
-
- if (data_build.setting.version_target == fake_build_version_type_major) {
- fprintf(main.output.stream, "%s", parameter_file_name_major);
- }
- else if (data_build.setting.version_target == fake_build_version_type_minor) {
- fprintf(main.output.stream, "%s", parameter_file_name_minor);
- }
- else if (data_build.setting.version_target == fake_build_version_type_micro) {
- fprintf(main.output.stream, "%s", parameter_file_name_micro);
- }
-
- fprintf(main.output.stream, "'.%c", 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) {
return 0;
}
- if (data_build.setting.version_target == fake_build_version_type_major) {
- 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);
- }
- else if (data_build.setting.version_target == fake_build_version_type_minor) {
- 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);
- }
- else if (data_build.setting.version_target == fake_build_version_type_micro) {
- 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);
- }
+ 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;
}
bool error_printed = F_false;
+ f_string_dynamics_t build_compiler = f_string_dynamics_t_initialize;
+ f_string_dynamics_t build_indexer = f_string_dynamics_t_initialize;
+ f_string_dynamics_t build_language = f_string_dynamics_t_initialize;
+ f_string_dynamics_t build_script = f_string_dynamics_t_initialize;
+ f_string_dynamics_t build_shared = f_string_dynamics_t_initialize;
+ f_string_dynamics_t build_static = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_headers = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_headers_preserve = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_language = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_library_script = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_library_shared = f_string_dynamics_t_initialize;
+ f_string_dynamics_t path_library_static = f_string_dynamics_t_initialize;
+ 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;
+ 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_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;
+ f_string_dynamics_t version_micro_prefix = f_string_dynamics_t_initialize;
+ f_string_dynamics_t version_minor = f_string_dynamics_t_initialize;
+ f_string_dynamics_t version_minor_prefix = f_string_dynamics_t_initialize;
+ f_string_dynamics_t version_nano = f_string_dynamics_t_initialize;
+ f_string_dynamics_t version_nano_prefix = f_string_dynamics_t_initialize;
+ f_string_dynamics_t version_target = f_string_dynamics_t_initialize;
+
const f_string_t settings_name[] = {
fake_build_setting_name_build_compiler,
fake_build_setting_name_build_indexer,
fake_build_setting_name_build_sources_headers,
fake_build_setting_name_build_sources_library,
fake_build_setting_name_build_sources_program,
- fake_build_setting_name_build_sources_settings,
fake_build_setting_name_build_sources_script,
+ fake_build_setting_name_build_sources_settings,
fake_build_setting_name_build_static,
fake_build_setting_name_defines_all,
+ fake_build_setting_name_defines_library,
+ fake_build_setting_name_defines_program,
fake_build_setting_name_defines_shared,
fake_build_setting_name_defines_static,
fake_build_setting_name_environment,
fake_build_setting_name_search_shared,
fake_build_setting_name_search_static,
fake_build_setting_name_version_major,
+ fake_build_setting_name_version_major_prefix,
fake_build_setting_name_version_micro,
+ fake_build_setting_name_version_micro_prefix,
fake_build_setting_name_version_minor,
+ fake_build_setting_name_version_minor_prefix,
+ fake_build_setting_name_version_nano,
+ fake_build_setting_name_version_nano_prefix,
fake_build_setting_name_version_target,
};
fake_build_setting_name_build_sources_headers_length,
fake_build_setting_name_build_sources_library_length,
fake_build_setting_name_build_sources_program_length,
- fake_build_setting_name_build_sources_settings_length,
fake_build_setting_name_build_sources_script_length,
+ fake_build_setting_name_build_sources_settings_length,
fake_build_setting_name_build_static_length,
fake_build_setting_name_defines_all_length,
+ fake_build_setting_name_defines_library_length,
+ fake_build_setting_name_defines_program_length,
fake_build_setting_name_defines_shared_length,
fake_build_setting_name_defines_static_length,
fake_build_setting_name_environment_length,
fake_build_setting_name_search_shared_length,
fake_build_setting_name_search_static_length,
fake_build_setting_name_version_major_length,
+ fake_build_setting_name_version_major_prefix_length,
fake_build_setting_name_version_micro_length,
+ fake_build_setting_name_version_micro_prefix_length,
fake_build_setting_name_version_minor_length,
+ fake_build_setting_name_version_minor_prefix_length,
+ fake_build_setting_name_version_nano_length,
+ fake_build_setting_name_version_nano_prefix_length,
fake_build_setting_name_version_target_length,
};
- f_string_dynamics_t build_compiler = f_string_dynamics_t_initialize;
- f_string_dynamics_t build_indexer = f_string_dynamics_t_initialize;
- f_string_dynamics_t build_language = f_string_dynamics_t_initialize;
- f_string_dynamics_t build_script = f_string_dynamics_t_initialize;
- f_string_dynamics_t build_shared = f_string_dynamics_t_initialize;
- f_string_dynamics_t build_static = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_headers = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_headers_preserve = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_language = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_library_script = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_library_shared = f_string_dynamics_t_initialize;
- f_string_dynamics_t path_library_static = f_string_dynamics_t_initialize;
- 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;
- 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_major = f_string_dynamics_t_initialize;
- f_string_dynamics_t version_micro = f_string_dynamics_t_initialize;
- f_string_dynamics_t version_minor = f_string_dynamics_t_initialize;
- f_string_dynamics_t version_target = f_string_dynamics_t_initialize;
-
f_string_dynamics_t *settings_value[] = {
&build_compiler,
&build_indexer,
&setting->build_sources_headers,
&setting->build_sources_library,
&setting->build_sources_program,
- &setting->build_sources_setting,
&setting->build_sources_script,
+ &setting->build_sources_setting,
&build_static,
&setting->defines_all,
+ &setting->defines_library,
+ &setting->defines_program,
&setting->defines_shared,
&setting->defines_static,
&setting->environment,
&search_shared,
&search_static,
&version_major,
+ &version_major_prefix,
&version_micro,
+ &version_micro_prefix,
&version_minor,
+ &version_minor_prefix,
+ &version_nano,
+ &version_nano_prefix,
&version_target,
};
+ bool settings_matches[] = {
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ F_false,
+ };
+
f_string_t function = "fll_fss_snatch_apart";
- *status = fll_fss_snatch_apart(buffer, objects, contents, settings_name, settings_length, fake_build_setting_total, settings_value, 0);
+ *status = fll_fss_snatch_apart(buffer, objects, contents, settings_name, settings_length, fake_build_setting_total, settings_value, settings_matches, 0);
if (*status == F_none) {
const int total_build_libraries = setting->build_libraries.used;
macro_f_string_dynamic_t_resize(*status, settings_mode_name_dynamic[j], setting_mode_lengths[j]);
if (F_status_is_error(*status)) {
- function = " macro_f_string_dynamic_t_resize";
+ function = "macro_f_string_dynamic_t_resize";
break;
}
} // for
if (*status == F_none) {
- *status = fll_fss_snatch_apart(buffer, objects, contents, settings_mode_names, setting_mode_lengths, fake_build_setting_total, settings_value, 0);
+ *status = fll_fss_snatch_apart(buffer, objects, contents, settings_mode_names, setting_mode_lengths, fake_build_setting_total, settings_value, 0, 0);
if (F_status_is_error(*status)) {
function = "fll_fss_snatch_apart";
fake_build_setting_name_search_shared,
fake_build_setting_name_search_static,
fake_build_setting_name_version_major,
+ fake_build_setting_name_version_major_prefix,
fake_build_setting_name_version_micro,
+ fake_build_setting_name_version_micro_prefix,
fake_build_setting_name_version_minor,
+ fake_build_setting_name_version_minor_prefix,
+ fake_build_setting_name_version_nano,
+ fake_build_setting_name_version_nano_prefix,
fake_build_setting_name_version_target,
};
&search_shared,
&search_static,
&version_major,
+ &version_major_prefix,
&version_micro,
+ &version_micro_prefix,
&version_minor,
+ &version_minor_prefix,
+ &version_nano,
+ &version_nano_prefix,
&version_target,
};
0,
0,
&setting->version_major,
+ &setting->version_major_prefix,
&setting->version_micro,
+ &setting->version_micro_prefix,
&setting->version_minor,
+ &setting->version_minor_prefix,
+ &setting->version_nano,
+ &setting->version_nano_prefix,
};
uint8_t * const settings_single_language[] = {
0,
0,
0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
&setting->version_target,
};
- // 1 = "yes" or "no", 2 = path/, 3 = literal, 4 = "bash", "c", or "c++", 5 = "major", "minor", or "micro".
+ // 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,
3,
3,
3,
3,
+ 3,
+ 3,
+ 3,
+ 3,
+ 3,
5,
};
- for (f_array_length_t i = 0; i < 27; ++i) {
+ for (f_array_length_t i = 0; i < 32; ++i) {
if (!settings_single_source[i]->used) continue;
else if (fl_string_compare_trim(settings_single_source[i]->array[0].string, fake_build_version_minor, settings_single_source[i]->array[0].used, fake_build_version_minor_length) == F_equal_to) {
*settings_single_version[i] = fake_build_version_type_minor;
}
+ else if (fl_string_compare_trim(settings_single_source[i]->array[0].string, fake_build_version_nano, settings_single_source[i]->array[0].used, fake_build_version_nano_length) == F_equal_to) {
+ *settings_single_version[i] = fake_build_version_type_nano;
+ }
else {
*settings_single_version[i] = fake_build_version_type_major;
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, "', '");
f_color_print(main.output.stream, main.context.set.notable, "%s", fake_build_version_minor);
- f_color_print(main.output.stream, main.context.set.warning, "', or '");
+ f_color_print(main.output.stream, main.context.set.warning, "', '");
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, "', 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.warning, "'.");
settings_single_destination[i]->used = 0;
*status = f_string_dynamic_append_nulless(settings_single_source[i]->array[0], settings_single_destination[i]);
+
if (F_status_is_error(*status)) {
fll_error_print(main.error, F_status_set_fine(*status), "f_string_dynamic_append_nulless", F_true);
break;
if (settings_single_type[i] == 2) {
*status = f_string_append_assure(f_path_separator_s, f_path_separator_length, settings_single_destination[i]);
+
if (F_status_is_error(*status)) {
fll_error_print(main.error, F_status_set_fine(*status), "f_string_append_assure", F_true);
break;
}
}
} // for
+
+ // 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.
+ {
+ f_string_dynamic_t *prefix[] = {
+ &setting->version_major_prefix,
+ &setting->version_minor_prefix,
+ &setting->version_micro_prefix,
+ &setting->version_nano_prefix,
+ };
+
+ f_string_dynamic_t *version[] = {
+ &setting->version_major,
+ &setting->version_minor,
+ &setting->version_micro,
+ &setting->version_nano,
+ };
+
+ 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
+ };
+
+ for (f_array_length_t i = 0; i < 4; ++i) {
+
+ if (version[i]->used) {
+ if (!has_prefix_object[i]) {
+ prefix[i]->used = 0;
+
+ *status = f_string_append(fake_build_setting_default_version_prefix, fake_build_setting_default_version_prefix_length, prefix[i]);
+
+ if (F_status_is_error(*status)) {
+ fll_error_print(main.error, F_status_set_fine(*status), "f_string_append", F_true);
+ break;
+ }
+ }
+ }
+ else {
+ prefix[i]->used = 0;
+ }
+ } // for
+ }
}
macro_f_string_dynamics_t_delete_simple(build_compiler);
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_major);
+ macro_f_string_dynamics_t_delete_simple(version_major_prefix);
macro_f_string_dynamics_t_delete_simple(version_micro);
+ macro_f_string_dynamics_t_delete_simple(version_micro_prefix);
macro_f_string_dynamics_t_delete_simple(version_minor);
+ macro_f_string_dynamics_t_delete_simple(version_minor_prefix);
+ macro_f_string_dynamics_t_delete_simple(version_nano);
+ macro_f_string_dynamics_t_delete_simple(version_nano_prefix);
macro_f_string_dynamics_t_delete_simple(version_target);
}
#endif // _di_fake_build_load_setting_process_
f_string_dynamic_t process_pre;
f_string_dynamic_t project_name;
f_string_dynamic_t version_major;
+ f_string_dynamic_t version_major_prefix;
f_string_dynamic_t version_micro;
+ f_string_dynamic_t version_micro_prefix;
f_string_dynamic_t version_minor;
+ f_string_dynamic_t version_minor_prefix;
+ f_string_dynamic_t version_nano;
+ f_string_dynamic_t version_nano_prefix;
f_string_dynamics_t build_libraries;
f_string_dynamics_t build_sources_headers;
f_string_dynamics_t build_sources_library;
f_string_dynamics_t build_sources_program;
- f_string_dynamics_t build_sources_setting;
f_string_dynamics_t build_sources_script;
+ f_string_dynamics_t build_sources_setting;
f_string_dynamics_t defines_all;
+ f_string_dynamics_t defines_library;
+ f_string_dynamics_t defines_program;
f_string_dynamics_t defines_shared;
f_string_dynamics_t defines_static;
f_string_dynamics_t environment;
f_string_dynamic_t_initialize, \
f_string_dynamic_t_initialize, \
f_string_dynamic_t_initialize, \
+ f_string_dynamic_t_initialize, \
+ f_string_dynamic_t_initialize, \
+ f_string_dynamic_t_initialize, \
+ f_string_dynamic_t_initialize, \
+ f_string_dynamic_t_initialize, \
+ f_string_dynamics_t_initialize, \
+ f_string_dynamics_t_initialize, \
f_string_dynamics_t_initialize, \
f_string_dynamics_t_initialize, \
f_string_dynamics_t_initialize, \
macro_f_string_dynamic_t_delete_simple(setting.process_pre); \
macro_f_string_dynamic_t_delete_simple(setting.project_name); \
macro_f_string_dynamic_t_delete_simple(setting.version_major); \
+ macro_f_string_dynamic_t_delete_simple(setting.version_major_prefix); \
macro_f_string_dynamic_t_delete_simple(setting.version_micro); \
+ macro_f_string_dynamic_t_delete_simple(setting.version_micro_prefix); \
macro_f_string_dynamic_t_delete_simple(setting.version_minor); \
+ macro_f_string_dynamic_t_delete_simple(setting.version_minor_prefix); \
+ macro_f_string_dynamic_t_delete_simple(setting.version_nano); \
+ macro_f_string_dynamic_t_delete_simple(setting.version_nano_prefix); \
macro_f_string_dynamics_t_delete_simple(setting.build_libraries); \
macro_f_string_dynamics_t_delete_simple(setting.build_sources_headers); \
macro_f_string_dynamics_t_delete_simple(setting.build_sources_library); \
macro_f_string_dynamics_t_delete_simple(setting.build_sources_program); \
- macro_f_string_dynamics_t_delete_simple(setting.build_sources_setting); \
macro_f_string_dynamics_t_delete_simple(setting.build_sources_script); \
+ macro_f_string_dynamics_t_delete_simple(setting.build_sources_setting); \
macro_f_string_dynamics_t_delete_simple(setting.defines_all); \
+ macro_f_string_dynamics_t_delete_simple(setting.defines_library); \
+ macro_f_string_dynamics_t_delete_simple(setting.defines_program); \
macro_f_string_dynamics_t_delete_simple(setting.defines_shared); \
macro_f_string_dynamics_t_delete_simple(setting.defines_static); \
macro_f_string_dynamics_t_delete_simple(setting.environment); \
#define fake_build_setting_name_build_sources_headers "build_sources_headers"
#define fake_build_setting_name_build_sources_library "build_sources_library"
#define fake_build_setting_name_build_sources_program "build_sources_program"
- #define fake_build_setting_name_build_sources_settings "build_sources_setting"
#define fake_build_setting_name_build_sources_script "build_sources_script"
+ #define fake_build_setting_name_build_sources_settings "build_sources_setting"
#define fake_build_setting_name_build_static "build_static"
#define fake_build_setting_name_defines_all "defines_all"
+ #define fake_build_setting_name_defines_library "defines_library"
+ #define fake_build_setting_name_defines_program "defines_program"
#define fake_build_setting_name_defines_shared "defines_shared"
#define fake_build_setting_name_defines_static "defines_static"
#define fake_build_setting_name_environment "environment"
#define fake_build_setting_name_search_shared "search_shared"
#define fake_build_setting_name_search_static "search_static"
#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"
+ #define fake_build_setting_name_version_micro_prefix "version_micro_prefix"
#define fake_build_setting_name_version_minor "version_minor"
+ #define fake_build_setting_name_version_minor_prefix "version_minor_prefix"
+ #define fake_build_setting_name_version_nano "version_nano"
+ #define fake_build_setting_name_version_nano_prefix "version_nano_prefix"
#define fake_build_setting_name_version_target "version_target"
#define fake_build_setting_name_build_compiler_length 14
#define fake_build_setting_name_build_sources_headers_length 21
#define fake_build_setting_name_build_sources_library_length 21
#define fake_build_setting_name_build_sources_program_length 21
- #define fake_build_setting_name_build_sources_settings_length 22
#define fake_build_setting_name_build_sources_script_length 20
+ #define fake_build_setting_name_build_sources_settings_length 22
#define fake_build_setting_name_build_static_length 12
#define fake_build_setting_name_environment_length 11
#define fake_build_setting_name_defines_all_length 11
+ #define fake_build_setting_name_defines_library_length 15
+ #define fake_build_setting_name_defines_program_length 15
#define fake_build_setting_name_defines_shared_length 14
#define fake_build_setting_name_defines_static_length 14
#define fake_build_setting_name_flags_all_length 9
#define fake_build_setting_name_search_shared_length 13
#define fake_build_setting_name_search_static_length 13
#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
+ #define fake_build_setting_name_version_micro_prefix_length 20
#define fake_build_setting_name_version_minor_length 13
+ #define fake_build_setting_name_version_minor_prefix_length 20
+ #define fake_build_setting_name_version_nano_length 12
+ #define fake_build_setting_name_version_nano_prefix_length 19
#define fake_build_setting_name_version_target_length 14
- #define fake_build_setting_total 44
+ #define fake_build_setting_total 51
- #define fake_build_setting_default_version "0"
+ #define fake_build_setting_default_version "0"
+ #define fake_build_setting_default_version_prefix "."
- #define fake_build_setting_default_version_length 1
+ #define fake_build_setting_default_version_length 1
+ #define fake_build_setting_default_version_prefix_length 1
#endif // _di_fake_build_setting_t_
#ifndef _di_fake_build_stage_t_
#define fake_build_parameter_library_name_suffix_shared ".so"
#define fake_build_parameter_library_name_suffix_static ".a"
#define fake_build_parameter_library_output "-o"
- #define fake_build_parameter_library_separator "."
#define fake_build_parameter_library_shared "-shared"
#define fake_build_parameter_library_static "-static"
#define fake_build_parameter_library_shared_prefix "-Wl,-soname,"
#define fake_build_parameter_library_name_suffix_shared_length 3
#define fake_build_parameter_library_name_suffix_static_length 2
#define fake_build_parameter_library_output_length 2
- #define fake_build_parameter_library_separator_length 1
#define fake_build_parameter_library_shared_length 7
#define fake_build_parameter_library_static_length 7
#define fake_build_parameter_library_shared_prefix_length 12
&data_make->setting_make.parameter,
};
- *status = fll_fss_snatch_map_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, settings_value, 0);
+ *status = fll_fss_snatch_map_apart(data_make->buffer, settings.objects, settings.contents, settings_name, settings_length, 2, settings_value, 0, 0);
if (F_status_is_error(*status)) {
fll_error_print(main.error, F_status_set_fine(*status), "fll_fss_snatch_map_apart", F_true);
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
Settings Documentation:
This describes intent and purposes of the build settings file settings.
+ The settings file is designed for very simple compilations that represent a single named program and/or a single named library.
For specific details on the allowed formatting, see the settings.txt under the specifications folder.
build_compiler\:
Expects the name of the compiler, which generally should not be the path to the file, just the executable name.
- Currently only GCC is truly supported.
- All of the arguments assume the GCC, so if a non-GCC executable is provided supports the GCC argument structure, then that is by effect supported.
+ The programs "gcc" and "clang" are known to work.
Many of the parameters in the settings file can be changed if using a non-GCC, but there is certain hard-coded functionality that may still need changing.
build_indexer\:
Exactly like build_compiler, except for the linker, aka indexer.
- The default behavior is to support the GNU ar program.
- As with build_compiler, anything linker that supports the "ar" program parameters is effectively supported.
+ The default behavior is to support the GNU "ar" program.
+ Similar to "build_compiler", any linker that supports the "ar" program parameters is effectively supported.
build_language\:
- The language to build with.
- The only currently supported languages are: bash, c, and c++.
+ The programming language to build with.
+ The languages "c" and "c++" are supported (with "bash" as a consideration for support).
The "bash" language is not currently implemented and needs some consideration because there is nothing to compile.
- The "bash" language will likely build a set of individual scripts, and perhaps script dependencies, into a single bash script.
+ The "bash" language will likely build a set of individual scripts, and perhaps script dependencies, into a single Bash script.
build_libraries\:
A collection of libraries to be linked against.
- The should contain the compiler specific parameter parts, such as the "-l" prefix.
- The order of these may matter if GCC (or the linker via GCC) is order sensitive.
+ This should include the compiler specific parameter parts, such as the "-l" prefix in "-lc".
+ The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive.
build_script\:
- When "yes", the build process will build any scripts, such as bash script.
+ When "yes", the build process will build any scripts, such as a Bash script.
This is currently not implemented.
build_shared\:
build_sources_headers\:
A collection of header files.
- May include a relative sub-path to each individual header (such as "level_0/a.h level_0/b.h level_1/c.h".
- The order of these may matter if GCC (or the linker via GCC) is order sensitive.
+ May include a relative sub-path to each individual header (such as: "level_0/a.h level_0/b.h level_1/c.h").
+ The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive.
build_sources_library\:
A collection of library related source files.
- May include a relative sub-path to each individual header (such as "level_0/a.c level_0/b.c level_1/c.c".
- The order of these may matter if GCC (or the linker via GCC) is order sensitive.
+ May include a relative sub-path to each individual source file (such as: "level_0/a.c level_0/b.c level_1/c.c").
+ The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive.
These files are used when compiling the library.
build_sources_program\:
A collection of program related source files.
- May include a relative sub-path to each individual header (such as "level_0/a.h level_0/b.h level_1/c.h".
- The order of these may matter if GCC (or the linker via GCC) is order sensitive.
+ May include a relative sub-path to each individual source file (such as: "level_0/a.c level_0/b.c level_1/c.c").
+ The order of these may matter if the compiler (such as GCC or a linker via GCC) is order sensitive.
These files are used when compiling the program.
- build_sources_setting\:
- A collection of settings files.
- These are settings files used by the project and are simply copied over to the build directory.
- Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified.
-
build_sources_script\:
A collection of script files.
These are settings files used by the project and are simply copied over to the build directory.
Unlike the "compile_language" setting "bash", this is not for built Bash script, but is instead for any valid scripting language (including Bash).
These could be in any language.
+ build_sources_setting\:
+ A collection of settings files.
+ These are settings files used by the project and are simply copied over to the build directory.
+ Unless a pre-process script (or in theory post-process script) is configured to alter these, they are not modified.
+
build_static\:
When "yes", the build process will compile any source code for any supported language that supports static library linking.
defines_all\:
A collection of macro names.
+ This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang.
These will be appended to the compiler for compiled languages such as C and C++.
These are applied to both shared and static builds.
+ defines_library\:
+ A collection of macro names.
+ This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang.
+ These will be appended to the compiler for compiled languages such as C and C++.
+ These are applied to only library builds.
+
+ defines_program\:
+ A collection of macro names.
+ This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang.
+ These will be appended to the compiler for compiled languages such as C and C++.
+ These are applied to only program builds.
+
defines_shared\:
A collection of macro names.
+ This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang.
These will be appended to the compiler for compiled languages such as C and C++.
These are applied to only shared builds.
defines_static\:
A collection of macro names.
+ This includes the any compiler specific parameters required by the "build_compiler", such as the "-D" used by gcc and clang.
These will be appended to the compiler for compiled languages such as C and C++.
These are applied to only static builds.
environment\:
- A collection of environment names to pass from the callers environment into the environment of executed programs.
+ A collection of environment names to pass from the callers environment into the executed programs environment.
For security and integrity reasons, all environment variables are removed when calling user-space programs, such as "gcc".
There are times when someone desires that an environment variable be exposed to the user-space programs.
Add them here and they will be available in the environment of all user-space programs executed.
flags_all\:
- A collection of any flag support by the "build_compiler", such as GCC.
+ A collection of any flag supported by the "build_compiler", such as gcc.
+ This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang.
These are applied to both shared and static builds.
+ flags_library\:
+ A collection of any flag supported by the "build_compiler", such as gcc.
+ This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang.
+ These are applied when building a library.
+
+ flags_program\:
+ A collection of any flag supported by the "build_compiler", such as gcc.
+ This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang.
+ These are applied when building a program.
+
flags_shared\:
- A collection of any flag support by the "build_compiler", such as GCC.
+ A collection of any flag supported by the "build_compiler", such as gcc.
+ This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang.
These are applied to only shared builds.
flags_static\:
- A collection of any flag support by the "build_compiler", such as GCC.
+ A collection of any flag supported by the "build_compiler", such as gcc.
+ This includes the any compiler specific parameters to defined this, such as the "-f" used by gcc and clang.
These are applied to only static builds.
modes\:
path_headers\:
A sub-path in which headers are to be installed under.
- This is primarily for the FLL project to build the "level_0", "level_1", etc.. headers without requiring that structure within the source.
+ For example, the FLL project might use the "level_0", "level_1", etc.. headers without requiring that structure within the source.
A resulting build destination for a path_headers of "level_0" would be something like "build/includes/level_0/".
+ If "path_headers" is "level_0", "path_headers_preserve" is "yes", and "build_sources_headers" has "xxx/a.h yyy/zzz/b.h", then the headers would be at: "build/includes/level_0/xxx/a.h build/includes/level_0/yyy/zzz/b.h"
+
+ path_headers_preserve\:
+ When "yes" the relative directory structure in the source (as defined in "build_sources_headers") is preserved.
+ If the "build_sources_headers" has the header files "xxx/a.h yyy/zzz/b.h" and this is "yes", then the directories "xxx/" and "yyy/zzz/" are created and the files are stored within them.
+ If the "build_sources_headers" has the header files "xxx/a.h yyy/zzz/b.h" and this is "no", then the directories "xxx/" and "yyy/zzz/" are stripped before installing.
+ When this is "no" and the "build_sources_headers" has header files "xxx/a.h yyy/a.h", then one of the "a.h" files will be overwritten, depending on order they were supplied.
path_language\:
A sub-path in which to find the source files for the currently defined language.
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.
- If library sources are specified, then this will be used in the library name, such as "libX.so" where "X" would be the "project_name" value.
+ The default behavior is "yes".
process_post\:
The filename (relative to the "data/build/" directory) of a script to execute after the "build" operation successfully completes.
Sources Path parameter, such as "-S X', whereas "X" is any valid argument associated with "-S".
Work Path parameter, such as "-w X', whereas "X" is any valid argument associated with "-w".
+ process_pre\:
+ The filename (relative to the "data/build/" directory) of a script to execute before the "build" operation is executed.
+ A small subset of parameters from the main execution are passed to this script during execution as parameters (using short parameter codes)\:
+ Color context parameters, such as: "+l", "+n", and "+d".
+ Operation mode, such as: "build", "clean", "make", or "skeleton".
+ Verbosity parameters, such as: "+q", "+D", or "+V".
+ Define parameters, such as "-d X" or "-d Y", whereas "X" or "Y" are any valid argument associated with "-d".
+ Process parameter, such as "-p X", whereas "X" is any valid argument associated with "-p".
+ Settings parameter, such as "-s X', whereas "X" is any valid argument associated with "-s".
+ Build Path parameter, such as "-b X', whereas "X" is any valid argument associated with "-b".
+ Data Path parameter, such as "-D X', whereas "X" is any valid argument associated with "-D".
+ Sources Path parameter, such as "-S X', whereas "X" is any valid argument associated with "-S".
+ Work Path parameter, such as "-w X', whereas "X" is any valid argument associated with "-w".
+
+ project_name\:
+ The name of the project.
+ If program sources are specified, then this will be used as the program name.
+ If library sources are specified, then this will be used in the library name, such as "libX.so" where "X" would be the "project_name" value.
+
search_exclusive\:
When "yes", the search path during compile for shared libraries will only include shared library paths.
When "no", the search path during compile time for shared libraries will include shared library paths followed by static library paths.
- Setting this to "yes" helps prevent static libraries from ended up in shared libraries (very useful when bootstrapping a system).
+ Setting this to "yes" helps prevent static libraries from ending up in shared libraries (very useful when bootstrapping a system).
Setting this to "no" allows for including static libraries if no shared libraries are found but static are.
This does not alter search paths introduced automatically by the "build_compiler" or "build_indexer", so it is still possible for static libraries to end up even when this is set to "yes".
search_shared\:
When "yes", shared library paths are searched during compile.
- Both this and search_static cannot be "no" at the same time.
+ Both this and "search_static" cannot be "no" at the same time.
+ The default behavior is "yes".
search_shared\:
When "yes", static library paths are searched during compile.
Anything else is currently untested but allowed.
With a structure of "A.B.C", the major version would be the "A".
+ version_major_prefix\:
+ The version major prefix is the character used to designate the start of the major version.
+ This can zero or more characters.
+ The default is an empty string.
+ With a structure of "A.B.C", the major version prefix would be before the "A".
+ This is only added if "version_major" is not empty.
+
version_minor\:
The minor version number (or in theory any characters allowed in a filename).
This should generally be a positive number or 0.
Anything else is currently untested but allowed.
With a structure of "A.B.C", the minor version would be the "B".
+ version_minor_prefix\:
+ The version minor prefix is the character used to separate the major from the minor.
+ This can zero or more characters.
+ The default prefix is an ASCII period character "." if and only if "version_minor" is not an empty string.
+ With a structure of "A.B.C", the minor version prefix would be the "." before the "B".
+ This is only added if "version_minor" is not empty.
+
version_micro\:
The micro version number (or in theory any characters allowed in a filename).
This should generally be a positive number or 0.
Anything else is currently untested but allowed.
With a structure of "A.B.C", the micro version would be the "C".
+ version_micro_prefix\:
+ The version micro prefix is the character used to separate the minor from the micro.
+ This can zero or more characters.
+ The default prefix is an ASCII period character "." if and only if "version_micro" is not an empty string.
+ With a structure of "A.B.C", the micro version prefix would be the "." before the "C".
+ This is only added if "version_micro" is not empty.
+
+ version_nano\:
+ The nano version number (or in theory any characters allowed in a filename).
+ This should generally be a positive number or 0.
+ Anything else is currently untested but allowed.
+ With a structure of "A.B.C.D", the micro version prefix would be the "." before the "D".
+
+ version_nano_prefix\:
+ The version nano prefix is the character used to separate the micro from the nano.
+ This can zero or more characters.
+ The default prefix is an ASCII period character "." if and only if "version_nano" is not an empty string.
+ With a structure of "A.B.C.D", the minor version would be the "." before the "D".
+ 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.
+ 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.
"build_sources_headers": Must only contain any number of valid filenames.
"build_sources_library": Must only contain any number of valid filenames.
"build_sources_program": Must only contain any number of valid filenames.
- "build_sources_setting": Must only contain any number of valid filenames.
"build_sources_script": Must only contain any number of valid filenames.
+ "build_sources_setting": Must only contain any number of valid filenames.
"build_static": Must only one of: "yes" or "no".
- "defines_all": Must only contain any number of valid C/C++ macro names.
- "defines_static": Must only contain any number of valid C/C++ macro names.
- "defines_shared": Must only contain any number of valid C/C++ macro names.
+ "defines_all": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler".
+ "defines_library": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler".
+ "defines_program": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler".
+ "defines_shared": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler".
+ "defines_static": Must only contain any number of valid macro names supported by the compiler specified in "build_compiler".
"environment": Environment variable names, case-sensitive, usually uppercase. May only contain characters allowed in an environment variable.
"flags_all": Must only contain any number of parameters supported by the compiler specified in "build_compiler".
"flags_library": Must only contain any number of parameters supported by the compiler specified in "build_compiler".
"modes": Any valid word character, '-', or '+'.
"modes_default": May only be a single complete Content word defined in "modes" Object.
"path_headers": Must be a single valid path.
+ "path_headers_preserve": Must only be one of "yes" or "no".
"path_language": Must be a single valid path.
"path_library_script": Must be a single valid path.
"path_library_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.
+ "project_name": Must only contain characters allowed in a filename.
"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_major": Must only be a single value containg valid filename characters.
- "version_minor": Must only be a single value containg valid filename characters.
- "version_micro": Must only be a single value containg valid filename characters.
- "version_target": Must only be one of: "major", "minor", or "micro".
+ "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.
+ "version_minor_prefix": Must be zero or more valid filename characters.
+ "version_micro": Must only be a single value containing valid filename characters.
+ "version_micro_prefix": Must be zero or more valid filename characters.
+ "version_nano": Must only be a single value containing valid filename characters.
+ "version_nano_prefix": Must be zero or more valid filename characters.
+ "version_target": Must only be one of: "major", "minor", "micro", or "nano".
The following Object names support having a "-" and a "mode" name, such as "build_libraries-individual" for a mode called "individual"\:
"build_libraries"
"build_sources_headers"
"build_sources_library"
"build_sources_program"
- "build_sources_setting"
"build_sources_script"
+ "build_sources_setting"
"defines_all"
"defines_shared"
"defines_static"
"flags_program"
"flags_shared"
"flags_static"
+
+ TODO: look into adding all, except for "modes" and "modes_default".
+ TODO: some options will "replace" while others will "append".
+ those that "replace" will be single property ones, such as "build_compiler" or "version_major".
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment
version_major 0
version_minor 5
version_micro 4
-version_target major
+version_target micro
environment