Update the header description comments.
I thought I was almost done but I noticed that I overlooked an entire directory tree.
build_sources_program fll/level_2/program.c fll/level_2/program/common.c fll/level_2/program/print.c fll/level_2/private-program.c
build_sources_program program/fake/main/build.c program/fake/main/clean.c program/fake/main/common.c program/fake/main/fake.c program/fake/main/make.c program/fake/main/print.c program/fake/main/print-error.c program/fake/main/print-warning.c program/fake/main/skeleton.c
-build_sources_program program/fake/main/build/library.c program/fake/main/build/load.c program/fake/main/build/object.c program/fake/main/build/objects.c program/fake/main/build/print.c program/fake/main/build/print-error.c program/fake/main/build/print-verbose.c program/fake/main/build/program.c program/fake/main/build/skeleton.c
+build_sources_program program/fake/main/build/library.c program/fake/main/build/load.c program/fake/main/build/object.c program/fake/main/build/objects.c program/fake/main/build/print.c program/fake/main/build/print-error.c program/fake/main/build/print-verbose.c program/fake/main/build/print-warning.c program/fake/main/build/program.c program/fake/main/build/skeleton.c
build_sources_program program/fake/main/clean/print.c
build_sources_program program/fake/main/common/define.c program/fake/main/common/enumeration.c program/fake/main/common/print.c program/fake/main/common/string.c program/fake/main/common/type.c
build_sources_program program/fake/main/fake/path_generate.c
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_h
#define _PRIVATE_build_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build library functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_library_h
#define _PRIVATE_build_library_h
#include "../fake.h"
#include "../print.h"
#include "load.h"
+#include "print-error.h"
+#include "print-warning.h"
#ifdef __cplusplus
extern "C" {
for (uint8_t i = 0; i < 1; ++i) {
if (!settings[i]->used) {
- f_file_stream_lock(data->main->error.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, names[i], data->main->error.notable);
- fl_print_format("%[' is required but is not specified in the settings file '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
- fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
+ fake_build_print_error_missing_required_setting(data->setting, data->main->warning, names[i], path_file);
failed = F_true;
}
} // for
if (found == F_false) {
- if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
- f_file_stream_lock(data->main->error.to);
-
- fl_print_format("%r%[%QThe specified mode '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, modes->array[i], data->main->error.notable);
- fl_print_format("%[' is not a valid mode, according to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
- fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
- }
+ fake_build_print_error_mode_invalid(data->setting, data->main->warning, modes->array[i], path_file);
error_printed = F_true;
*status = F_status_set_error(F_parameter);
if (F_status_is_error(*status)) {
if (*status == F_status_set_error(F_string_too_large)) {
- if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
- f_file_stream_unlock(data->main->error.to);
-
- fl_print_format("%r%[%QA setting in the file '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%Q%]", data->main->error.to, data->main->error.notable, path_file, data->main->error.notable);
- fl_print_format("%[' is too long.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
- }
+ fake_build_print_error_setting_too_long(data->setting, data->main->warning, path_file);
}
else if (!error_printed) {
fake_print_error(data->setting, data->main->error, *status, function);
0, // search_exclusive
0, // search_shared
0, // search_static
- fake_build_version_micro_e, // version_file
+ fake_build_version_micro_e, // version_file
0, // version_major
0, // version_major_prefix
0, // version_micro
0, // version_minor_prefix
0, // version_nano
0, // version_nano_prefix
- fake_build_version_major_e, // version_target
+ fake_build_version_major_e, // version_target
};
const f_string_static_t settings_single_version_default_name[] = {
f_string_empty_s, // build_indexer
f_string_empty_s, // build_language
f_string_empty_s, // build_name
- f_string_empty_s, // build_script
- f_string_empty_s, // build_shared
+ fake_common_setting_bool_yes_s, // build_script
+ fake_common_setting_bool_yes_s, // build_shared
f_string_empty_s, // build_sources_object
f_string_empty_s, // build_sources_object_shared
f_string_empty_s, // build_sources_object_static
- f_string_empty_s, // build_static
- f_string_empty_s, // has_path_standard
+ fake_common_setting_bool_yes_s, // build_static
+ fake_common_setting_bool_yes_s, // has_path_standard
f_string_empty_s, // path_headers
f_string_empty_s, // path_language
f_string_empty_s, // path_library_script
f_string_empty_s, // path_program_static
f_string_empty_s, // path_sources
f_string_empty_s, // path_sources_object
- f_string_empty_s, // preserve_path_headers
+ fake_common_setting_bool_yes_s, // preserve_path_headers
f_string_empty_s, // process_post
f_string_empty_s, // process_pre
- f_string_empty_s, // search_exclusive
- f_string_empty_s, // search_shared
- f_string_empty_s, // search_static
+ fake_common_setting_bool_yes_s, // search_exclusive
+ fake_common_setting_bool_yes_s, // search_shared
+ fake_common_setting_bool_yes_s, // search_static
fake_build_version_micro_s, // version_file
f_string_empty_s, // version_major
f_string_empty_s, // version_major_prefix
else {
*settings_single_bool[i] = F_true;
- if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->warning.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
- fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
- fl_print_format("%[' may be either '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_yes_s, data->main->warning.notable);
- fl_print_format("%[' or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_no_s, data->main->warning.notable);
- fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_common_setting_bool_yes_s, data->main->warning.notable);
- fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->warning.to);
- }
+ fake_build_print_warning_setting_boolean_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, settings_single_version_default_name[i]);
}
}
else if (settings_single_type[i] == 4) {
else {
*settings_single_language[i] = fake_build_language_c_e;
- if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->warning.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
- fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
- fl_print_format("%[' may only be one of '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_bash_s, data->main->warning.notable);
- fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_c_s, data->main->warning.notable);
- fl_print_format("%[', or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_cpp_s, data->main->warning.notable);
- fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_language_c_s, data->main->warning.notable);
- fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->warning.to);
- }
+ fake_build_print_warning_setting_language_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, fake_build_language_c_s);
}
}
else if (settings_single_type[i] == 5) {
else {
*settings_single_version[i] = settings_single_version_default[i];
- if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->warning.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_name[i], data->main->warning.notable);
- fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
- fl_print_format("%[' may only be one of '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_major_s, data->main->warning.notable);
- fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_minor_s, data->main->warning.notable);
- fl_print_format("%[', '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_micro_s, data->main->warning.notable);
- fl_print_format("%[', or '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_nano_s, data->main->warning.notable);
- fl_print_format("%[', defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, settings_single_version_default_name[i], data->main->warning.notable);
- fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->warning.to);
- }
+ fake_build_print_warning_setting_version_may_only_be(data->setting, data->main->warning, settings_single_name[i], path_file, settings_single_version_default_name[i]);
}
}
else if (settings_single_destination[i]) {
if (checks && !setting->version_file) {
setting->version_file = fake_build_version_micro_e;
- if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->warning.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_setting_name_version_file_s, data->main->warning.notable);
- fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
- fl_print_format("%[' is required, defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_micro_s, data->main->warning.notable);
- fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->warning.to);
- }
+ fake_build_print_warning_setting_required_default_to(data->setting, data->main->warning, fake_build_setting_name_version_file_s, path_file, fake_build_version_micro_s);
}
if (checks && !setting->version_target) {
setting->version_target = fake_build_version_major_e;
- if (data->main->warning.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->warning.to);
-
- fl_print_format("%r%[%QThe setting '%]", data->main->warning.to, f_string_eol_s, data->main->warning.context, data->main->warning.prefix, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_setting_name_version_target_s, data->main->warning.notable);
- fl_print_format("%[' in the file '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%Q%]", data->main->warning.to, data->main->warning.notable, path_file, data->main->warning.notable);
- fl_print_format("%[' is required, defaulting to '%]", data->main->warning.to, data->main->warning.context, data->main->warning.context);
- fl_print_format("%[%r%]", data->main->warning.to, data->main->warning.notable, fake_build_version_major_s, data->main->warning.notable);
- fl_print_format("%['.%]%r", data->main->warning.to, data->main->warning.context, data->main->warning.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->warning.to);
- }
+ fake_build_print_warning_setting_required_default_to(data->setting, data->main->warning, fake_build_setting_name_version_target_s, path_file, fake_build_version_major_s);
}
}
}
setting->search_shared = F_false;
}
- if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
- f_file_stream_lock(data->main->error.to);
-
- fl_print_format("%r%[%QThe parameters '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_shared_disabled_s, data->main->error.notable);
- fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_shared_enabled_s, data->main->error.notable);
- fl_print_format("%[' contradict, defaulting to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, setting->build_shared ? fake_long_shared_enabled_s : fake_long_shared_disabled_s, data->main->error.notable);
- fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
- }
+ fake_build_print_warning_parameters_contradict(data->setting, data->main->warning, f_console_symbol_long_normal_s, fake_long_shared_disabled_s, f_console_symbol_long_normal_s, fake_long_shared_enabled_s, f_console_symbol_long_normal_s, setting->build_shared ? fake_long_shared_enabled_s : fake_long_shared_disabled_s);
}
else {
setting->build_shared = F_false;
setting->search_static = F_false;
}
- if (data->main->error.verbosity >= f_console_verbosity_verbose_e) {
- f_file_stream_lock(data->main->error.to);
-
- fl_print_format("%r%[%QThe parameters '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_static_disabled_s, data->main->error.notable);
- fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, fake_long_static_enabled_s, data->main->error.notable);
- fl_print_format("%[' contradict, defaulting to '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%r%]", data->main->error.to, data->main->error.notable, f_console_symbol_long_normal_s, setting->build_static ? fake_long_static_enabled_s : fake_long_static_disabled_s, data->main->error.notable);
- fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
- }
+ fake_build_print_warning_parameters_contradict(data->setting, data->main->warning, f_console_symbol_long_normal_s, fake_long_static_disabled_s, f_console_symbol_long_normal_s, fake_long_static_enabled_s, f_console_symbol_long_normal_s, setting->build_static ? fake_long_static_enabled_s : fake_long_static_disabled_s);
}
else {
setting->build_static = F_false;
if (setting->build_language == fake_build_language_c_e || setting->build_language == fake_build_language_cpp_e) {
if (setting->build_shared == F_false && setting->build_static == F_false) {
- if (data->main->error.verbosity > f_console_verbosity_quiet_e) {
- f_file_stream_lock(data->main->error.to);
-
- fl_print_format("%r%[%QThe build settings '%]", data->main->error.to, f_string_eol_s, data->main->error.context, data->main->error.prefix, data->main->error.context);
- fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, fake_build_setting_name_build_shared_s, data->main->error.notable);
- fl_print_format("%[' and '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, fake_build_setting_name_build_static_s, data->main->error.notable);
- fl_print_format("%[' cannot both be false when using the language '%]", data->main->error.to, data->main->error.context, data->main->error.context);
- fl_print_format("%[%r%]", data->main->error.to, data->main->error.notable, setting->build_language == fake_build_language_c_e ? fake_build_language_c_s : fake_build_language_cpp_s, data->main->error.notable);
- fl_print_format("%['.%]%r", data->main->error.to, data->main->error.context, data->main->error.context, f_string_eol_s);
-
- f_file_stream_unlock(data->main->error.to);
- }
+ fake_build_print_warning_setting_both_cannot_when_language(data->setting, data->main->warning, fake_build_setting_name_build_shared_s, fake_build_setting_name_build_static_s, setting->build_language == fake_build_language_c_e ? fake_build_language_c_s : fake_build_language_cpp_s);
*status = F_status_set_error(F_failure);
}
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build load functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_load_h
#define _PRIVATE_build_load_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build object functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_object_h
#define _PRIVATE_build_object_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build objects functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_objects_h
#define _PRIVATE_build_objects_h
}
#endif // _di_fake_build_print_error_exist_not_directory_
+#ifndef _di_fake_build_print_error_missing_required_setting_
+ f_status_t fake_build_print_error_missing_required_setting(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path) {
+
+ if (!setting || print.verbosity < f_console_verbosity_error_e) return F_output_not;
+
+ fake_print_context_wrapped_variables(setting, print, "The setting ", name, " is required but is not specified in the settings file ", path, 0);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_error_missing_required_setting_
+
+#ifndef _di_fake_build_print_error_mode_invalid_
+ f_status_t fake_build_print_error_mode_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t mode, const f_string_static_t path) {
+
+ fake_print_context_wrapped_variables(setting, print, "The specified mode ", mode, " in the settings file ", path, " is not a valid mode");
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_error_mode_invalid_
+
+#ifndef _di_fake_build_print_error_setting_too_long_
+ f_status_t fake_build_print_error_setting_too_long(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path) {
+
+ if (!setting || print.verbosity < f_console_verbosity_error_e) return F_output_not;
+
+ fake_print_context_wrapped_variable(setting, print, "A setting in the settings file ", path, " is too long");
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_error_setting_too_long_
+
#ifdef __cplusplus
} // extern "C"
#endif
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build error print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_print_error_h
#define _PRIVATE_build_print_error_h
extern f_status_t fake_build_print_error_exist_not_directory(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path);
#endif // _di_fake_build_print_error_exist_not_directory_
+/**
+ * Print error message about a required setting missing.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name
+ * The name of the missing setting.
+ * @param path
+ * The path to the file.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_missing_required_setting_
+ extern f_status_t fake_build_print_error_missing_required_setting(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path);
+#endif // _di_fake_build_print_error_missing_required_setting_
+
+
+/**
+ * Print error message about a mode being invalid.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param mode
+ * The invalid mode.
+ * @param path
+ * The path to the file.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_mode_invalid_
+ extern f_status_t fake_build_print_error_mode_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t mode, const f_string_static_t path);
+#endif // _di_fake_build_print_error_mode_invalid_
+
+/**
+ * Print error message about not creating path due to a parent directory not existing or is otherwise invalid.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param path
+ * The path that cannot be created.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_variables()
+ */
+#ifndef _di_fake_build_print_error_setting_too_long_
+ extern f_status_t fake_build_print_error_setting_too_long(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t path);
+#endif // _di_fake_build_print_error_setting_too_long_
+
#ifdef __cplusplus
} // extern "C"
#endif
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build verbose print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_print_verbose_h
#define _PRIVATE_build_print_verbose_h
--- /dev/null
+#include "../fake.h"
+#include "print-warning.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _di_fake_build_print_warning_parameters_contradict_
+ f_status_t fake_build_print_warning_parameters_contradict(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_static_t symbol_3, const f_string_static_t name_3) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ fake_print_context_wrapped_parameters(setting, print, "The parameters ", symbol_1, name_1, " and ", symbol_2, name_2, " contradict, defaulting to ", symbol_3, name_3, 0);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_parameters_contradict_
+
+#ifndef _di_fake_build_print_warning_setting_boolean_may_only_be_
+ f_status_t fake_build_print_warning_setting_boolean_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ f_file_stream_lock(print.to);
+
+ fake_print_line_first_unlocked(setting, print);
+
+ fl_print_format("%r%[%QThe setting '%]", print.to, f_string_eol_s, print.context, print.prefix, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, name, print.notable);
+ fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+ fl_print_format("%[' may be either '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_common_setting_bool_yes_s, print.notable);
+ fl_print_format("%[' or '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_common_setting_bool_no_s, print.notable);
+ fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+ fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+ f_file_stream_unlock(print.to);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_setting_boolean_may_only_be_
+
+#ifndef _di_fake_build_print_warning_setting_both_cannot_using_language_
+ f_status_t fake_build_print_warning_setting_both_cannot_when_language(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name_1, const f_string_static_t name_2, const f_string_static_t language) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ fake_print_context_wrapped_parameters(setting, print, "The build settings ", f_string_empty_s, name_1, " and ", f_string_empty_s, name_2, " cannot both be false when using the language ", f_string_empty_s, language, 0);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_setting_both_cannot_using_language_
+
+#ifndef _di_fake_build_print_warning_setting_language_may_only_be_
+ f_status_t fake_build_print_warning_setting_language_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ f_file_stream_lock(print.to);
+
+ fake_print_line_first_unlocked(setting, print);
+
+ fl_print_format("%[%QThe setting '%]", print.to, print.context, print.prefix, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, name, print.notable);
+ fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+ fl_print_format("%[' may only be one of '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_bash_s, print.notable);
+ fl_print_format("%[', '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_c_s, print.notable);
+ fl_print_format("%[', or '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_language_cpp_s, print.notable);
+ fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+ fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+ f_file_stream_unlock(print.to);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_setting_language_may_only_be_
+
+#ifndef _di_fake_build_print_warning_setting_required_default_to_
+ f_status_t fake_build_print_warning_setting_required_default_to(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ f_file_stream_lock(print.to);
+
+ fake_print_line_first_unlocked(setting, print);
+
+ fl_print_format("%[%QThe setting '%]", print.to, print.context, print.prefix, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, name, print.notable);
+ fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+ fl_print_format("%[' is required, defaulting to '%]", print.to, print.context, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, default_to, print.notable);
+ fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+ f_file_stream_unlock(print.to);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_setting_required_default_to_
+
+#ifndef _di_fake_build_print_warning_setting_version_may_only_be_
+ f_status_t fake_build_print_warning_setting_version_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to) {
+
+ if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
+
+ f_file_stream_lock(print.to);
+
+ fake_print_line_first_unlocked(setting, print);
+
+ fl_print_format("%[%QThe setting '%]", print.to, f_string_eol_s, print.context, print.prefix, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, name, print.notable);
+ fl_print_format("%[' in the file '%]", print.to, print.context, print.context);
+ fl_print_format("%[%Q%]", print.to, print.notable, path, print.notable);
+ fl_print_format("%[' may only be one of '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_major_s, print.notable);
+ fl_print_format("%[', '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_minor_s, print.notable);
+ fl_print_format("%[', '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_micro_s, print.notable);
+ fl_print_format("%[', or '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, fake_build_version_nano_s, print.notable);
+ fl_print_format("%[', defaulting to '%]", print.to, print.context, print.context);
+ fl_print_format("%[%r%]", print.to, print.notable, default_to, print.notable);
+ fl_print_format("%['.%]%r", print.to, print.context, print.context, f_string_eol_s);
+
+ f_file_stream_unlock(print.to);
+
+ return F_none;
+ }
+#endif // _di_fake_build_print_warning_setting_version_may_only_be_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
--- /dev/null
+/**
+ * FLL - Level 3
+ *
+ * Project: Featureless Make
+ * API Version: 0.7
+ * Licenses: lgpl-2.1-or-later
+ *
+ * Provides build warning print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
+ */
+#ifndef _PRIVATE_build_print_warning_h
+#define _PRIVATE_build_print_warning_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Print error message regarding two parameters contradicting and designating a default fallback parameter.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param symbol_1
+ * The symbol for the first parameter.
+ * @param name_1
+ * The name for the first parameter.
+ * @param symbol_2
+ * The symbol for the second parameter.
+ * @param name_2
+ * The name for the second parameter.
+ * @param symbol_3
+ * The symbol for the third parameter (the fallback).
+ * @param name_3
+ * The name for the third parameter (the fallback).
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_warning_parameters_contradict_
+ extern f_status_t fake_build_print_warning_parameters_contradict(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_static_t symbol_3, const f_string_static_t name_3);
+#endif // _di_fake_build_print_warning_parameters_contradict_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed boolean values.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name
+ * The name for the setting.
+ * @param path
+ * The path to the setting file.
+ * @param default_to
+ * The value being defaulted to.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_boolean_may_only_be_
+ extern f_status_t fake_build_print_warning_setting_boolean_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_boolean_may_only_be_
+
+/**
+ * Print warning message regarding two parameters being both false when using a given language.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name_1
+ * The name for the first setting.
+ * @param name_2
+ * The name for the second setting.
+ * @param language
+ * The name for the language.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_error_settings_both_cannot_using_language_
+ extern f_status_t fake_build_print_warning_setting_both_cannot_when_language(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name_1, const f_string_static_t name_2, const f_string_static_t name_3);
+#endif // _di_fake_build_print_error_settings_both_cannot_using_language_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed language values.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name
+ * The name for the setting.
+ * @param path
+ * The path to the setting file.
+ * @param default_to
+ * The value being defaulted to.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_language_may_only_be_
+ extern f_status_t fake_build_print_warning_setting_language_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_language_may_only_be_
+
+/**
+ * Print warning message regarding two parameters being both false when using a given language.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name_1
+ * The name for the first setting.
+ * @param name_2
+ * The name for the second setting.
+ * @param language
+ * The name for the language.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see fake_print_context_wrapped_parameters()
+ */
+#ifndef _di_fake_build_print_warning_setting_required_default_to_
+ f_status_t fake_build_print_warning_setting_required_default_to(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_required_default_to_
+
+/**
+ * Print warning message that the setting may only be from a specific set of allowed version values.
+ *
+ * @param setting
+ * The main program settings.
+ *
+ * This does not alter setting.status.
+ * @param print
+ * Designates the how and where to print.
+ * @param name
+ * The name for the setting.
+ * @param path
+ * The path to the setting file.
+ * @param default_to
+ * The value being defaulted to.
+ *
+ * @return
+ * F_none on success.
+ * F_output_not on success, but no printing is performed.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_build_print_warning_setting_version_may_only_be_
+ extern f_status_t fake_build_print_warning_setting_version_may_only_be(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t name, const f_string_static_t path, const f_string_static_t default_to);
+#endif // _di_fake_build_print_warning_setting_version_may_only_be_
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#endif // _PRIVATE_build_print_warning_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_print_h
#define _PRIVATE_build_print_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build program functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_program_h
#define _PRIVATE_build_program_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides build skeleton functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_build_skeleton_h
#define _PRIVATE_build_skeleton_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides clean functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_clean_h
#define _PRIVATE_clean_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides clean print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_clean_print_h
#define _PRIVATE_clean_print_h
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common functionality.
+ * Provides common functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common defines.
+ * Provides common define functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common enumeration structures.
+ * Provides common enumeration functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common print functionality.
+ * Provides common print functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common string structures.
+ * Provides common string functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the common type structures.
+ * Provides common type functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
*
* The built sources are placed in the build directory with the following structure:
* - build/
- * - data/
- * - documents/
- * - includes/
- * - libraries/
- * - script/
- * - shared/
- * - static/
- * - objects/
- * - programs/
- * - script/
- * - shared/
- * - static/
- * - settings/
- * - stage/
+ * ├── data
+ * ├── documentation
+ * ├── documents
+ * ├── includes
+ * ├── libraries
+ * │  ├── script
+ * │  ├── shared
+ * │  └── static
+ * ├── objects
+ * │  ├── script
+ * │  ├── shared
+ * │  └── static
+ * ├── programs
+ * │  ├── script
+ * │  ├── shared
+ * │  └── static
+ * ├── settings
+ * └── stage
*
* The "data/" directory contains all file data, such as firmware or files commonly found under /usr/share in a standard GNU Linux system.
- * The "documents/" directory contains all documentation after any build-time processing.
- * The "libraries/" and "programs/" directories contains the sub-directories "script/", "shared/", and "static/".
+ * The "documentation/" directory contains special documentation files such as man pages.
+ * The "documents/" directory contains all other documents, data, and documentation.
+ * The "includes/" directory contains all include files (such as C header files).
+ * The "libraries/", "objects/", and "programs/" directories contains the sub-directories "script/", "shared/", and "static/".
* The "libraries/" directory will contain compiled libraries or library-like scripts in their respective sub-directories.
* The "objects/" directory will contain any compile object files.
* The "programs/" directory will contain compiled programs or program-like scripts in their respective sub-directories.
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the path generate functionality for the fake program.
+ * Provides path generate functionality.
*
- * This is to be specifically included by the fake program sources and not anywhere else.
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_fake_path_generate_h
#define _fake_fake_path_generate_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_make_h
#define _PRIVATE_make_h
if (fl_string_dynamic_partial_compare_string(fake_make_item_settings_s.string, data_make->buffer, fake_make_item_settings_s.used, list_objects.array[i]) == F_equal_to) {
if (!missing_settings) {
- fake_make_print_warning_settings_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_settings_s);
+ fake_make_print_warning_setting_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_settings_s);
continue;
}
if (fl_string_dynamic_partial_compare_string(fake_make_item_main_s.string, data_make->buffer, fake_make_item_main_s.used, list_objects.array[i]) == F_equal_to) {
if (!missing_main) {
- fake_make_print_warning_settings_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_main_s);
+ fake_make_print_warning_setting_object_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_item_main_s);
continue;
}
data_make->setting_make.load_build = F_false;
}
else {
- fake_make_print_warning_settings_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[0], fake_make_item_settings_s);
+ fake_make_print_warning_setting_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[0], fake_make_item_settings_s);
}
if (content->used > 1) {
- fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_load_build_s);
+ fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_load_build_s);
}
}
else {
- fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_load_build_s);
+ fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_load_build_s);
}
}
#endif // _di_fake_make_load_fakefile_setting_build_
*range_compiler = &content->array[content->used - 1];
if (content->used > 1) {
- fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_compiler_s);
+ fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_compiler_s);
}
}
else {
- fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_compiler_s);
+ fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_compiler_s);
}
}
#endif // _di_fake_make_load_fakefile_setting_compiler_
data_make->setting_make.fail = fake_make_operation_fail_ignore_e;
}
else {
- fake_make_print_warning_settings_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[content->used - 1], fake_make_item_settings_s);
+ fake_make_print_warning_setting_content_invalid(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, content->array[content->used - 1], fake_make_item_settings_s);
}
if (content->used > 1) {
- fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_fail_s);
+ fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_fail_s);
}
}
else {
- fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_fail_s);
+ fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_fail_s);
}
}
#endif // _di_fake_make_load_fakefile_setting_fail_
*range_indexer = &content->array[content->used - 1];
if (content->used > 1) {
- fake_make_print_warning_settings_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_indexer_s);
+ fake_make_print_warning_setting_content_multiple(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, fake_make_setting_indexer_s);
}
}
else {
- fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_indexer_s);
+ fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_indexer_s);
}
}
#endif // _di_fake_make_load_fakefile_setting_indexer_
}
}
else {
- fake_make_print_warning_settings_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_return_s);
+ fake_make_print_warning_setting_content_empty(data_make->setting, data_make->main->warning, data_make->data->file_data_build_fakefile, data_make->buffer, *object, fake_make_setting_return_s);
}
return F_none;
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make load fakefile functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_load_fakefile_h
#define _fake_make_load_fakefile_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make load parameter functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_load_parameters_h
#define _fake_make_load_parameters_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_h
#define _fake_make_operate_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate block functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_block_h
#define _fake_make_operate_block_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate process functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_process_h
#define _fake_make_operate_process_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make opeate process type functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_type_h
#define _fake_make_operate_type_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate validate functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_validate_h
#define _fake_make_operate_validate_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make operate validate type functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_operate_validate_type_h
#define _fake_make_operate_validate_type_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make error print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_print_error_h
#define _fake_make_print_error_h
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make verbose print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_print_verbose_h
#define _fake_make_print_verbose_h
}
#endif // _di_fake_make_print_warning_file_not_found_
-#ifndef _di_fake_make_print_warning_settings_content_empty_
- f_status_t fake_make_print_warning_settings_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_empty_
+ f_status_t fake_make_print_warning_setting_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name) {
if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
return F_none;
}
-#endif // _di_fake_make_print_warning_settings_content_empty_
+#endif // _di_fake_make_print_warning_setting_content_empty_
-#ifndef _di_fake_make_print_warning_settings_content_invalid_
- f_status_t fake_make_print_warning_settings_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_invalid_
+ f_status_t fake_make_print_warning_setting_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name) {
if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
return F_none;
}
-#endif // _di_fake_make_print_warning_settings_content_invalid_
+#endif // _di_fake_make_print_warning_setting_content_invalid_
-#ifndef _di_fake_make_print_warning_settings_content_multiple_
- f_status_t fake_make_print_warning_settings_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_content_multiple_
+ f_status_t fake_make_print_warning_setting_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
return F_none;
}
-#endif // _di_fake_make_print_warning_settings_content_multiple_
+#endif // _di_fake_make_print_warning_setting_content_multiple_
-#ifndef _di_fake_make_print_warning_settings_object_multiple_
- f_status_t fake_make_print_warning_settings_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
+#ifndef _di_fake_make_print_warning_setting_object_multiple_
+ f_status_t fake_make_print_warning_setting_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name) {
if (!setting || print.verbosity < f_console_verbosity_verbose_e) return F_output_not;
return F_none;
}
-#endif // _di_fake_make_print_warning_settings_object_multiple_
+#endif // _di_fake_make_print_warning_setting_object_multiple_
#ifdef __cplusplus
} // extern "C"
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make warning print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_print_warning_h
#define _fake_make_print_warning_h
* F_none on success.
* F_output_not on success, but no printing is performed.
*/
-#ifndef _di_fake_make_print_warning_settings_content_empty_
- extern f_status_t fake_make_print_warning_settings_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_empty_
+#ifndef _di_fake_make_print_warning_setting_content_empty_
+ extern f_status_t fake_make_print_warning_setting_content_empty(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t range, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_empty_
/**
* Print warning message when fake settings content is invalid.
* F_none on success.
* F_output_not on success, but no printing is performed.
*/
-#ifndef _di_fake_make_print_warning_settings_content_invalid_
- extern f_status_t fake_make_print_warning_settings_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_invalid_
+#ifndef _di_fake_make_print_warning_setting_content_invalid_
+ extern f_status_t fake_make_print_warning_setting_content_invalid(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_dynamic_t buffer, const f_string_range_t object, const f_string_range_t content, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_invalid_
/**
* Print warning message when settings content has too many values.
* F_none on success.
* F_output_not on success, but no printing is performed.
*/
-#ifndef _di_fake_make_print_warning_settings_content_multiple_
- extern f_status_t fake_make_print_warning_settings_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_content_multiple_
+#ifndef _di_fake_make_print_warning_setting_content_multiple_
+ extern f_status_t fake_make_print_warning_setting_content_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_content_multiple_
/**
* Print warning message when fakefile has too many objects with the same name.
* F_none on success.
* F_output_not on success, but no printing is performed.
*/
-#ifndef _di_fake_make_print_warning_settings_object_multiple_
- extern f_status_t fake_make_print_warning_settings_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
-#endif // _di_fake_make_print_warning_settings_object_multiple_
+#ifndef _di_fake_make_print_warning_setting_object_multiple_
+ extern f_status_t fake_make_print_warning_setting_object_multiple(fake_setting_t * const setting, const fl_print_t print, const f_string_static_t fakefile, const f_string_static_t name);
+#endif // _di_fake_make_print_warning_setting_object_multiple_
#ifdef __cplusplus
} // extern "C"
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides make print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_make_print_h
#define _fake_make_print_h
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
*
- * Provides the error print functionality.
+ * Provides error print functionality.
*
* This is auto-included and should not need to be explicitly included.
*/
}
#endif // _di_fake_print_context_wrapped_parameter_
+#ifndef _di_fake_print_context_wrapped_parameters_
+ void fake_print_context_wrapped_parameters(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_t between_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_t between_2, const f_string_static_t symbol_3, const f_string_static_t name_3, const f_string_t after) {
+
+ if (!setting) return;
+
+ f_file_stream_lock(print.to);
+
+ fake_print_line_first_unlocked(setting, print);
+
+ fl_print_format("%[%Q%S'%]", print.to, print.context, print.prefix, before, print.context);
+ fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_1, name_1, print.notable);
+ fl_print_format("%['%S'%]%r", print.to, print.context, between_1, print.context);
+ fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_2, name_2, print.notable);
+ fl_print_format("%['%S'%]%r", print.to, print.context, between_2, print.context);
+ fl_print_format("%[%Q%Q%]", print.to, print.notable, symbol_3, name_3, print.notable);
+ fl_print_format("%['%S.%]%r", print.to, print.context, after, print.context, f_string_eol_s);
+
+ f_file_stream_unlock(print.to);
+ }
+#endif // _di_fake_print_context_wrapped_parameters_
+
#ifndef _di_fake_print_context_wrapped_variable_
void fake_print_context_wrapped_variable(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t variable, const f_string_t after) {
* Project: UTF8
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides print functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _fake_print_h
#define _fake_print_h
* Set to NULL to disable.
* @param symbol
* The string representing the symbol for the parameter.
- * Set to NULL to disable.
+ * Set to f_string_empty_s to disable.
* @param name
* The string representing the parameter name.
- * May be an empty string (like f_string_empty_s) to not print anything.
* @param after
* The string being printed after the variable.
* Likely should have a space added at the start of the string.
#endif // _di_fake_print_context_wrapped_parameter_
/**
+ * Print a parameter context message with a there parameters, with symbols, and wrapping strings.
+ *
+ * This is primarily used by numerous print functions to reduce code.
+ * This is not used for any print functions that has complex format structures.
+ *
+ * @param setting
+ * The main program settings.
+ * (Must be of type fake_setting_t.)
+ *
+ * This does not alter setting.status.
+ * @param print
+ * The output structure to print to.
+ * @param before
+ * The string being printed before the variable.
+ * Likely should have a space added at the end of the string.
+ * Set to NULL to disable.
+ * @param symbol_1
+ * The string representing the symbol for the parameter.
+ * Set to f_string_empty_s to disable.
+ * @param name_1
+ * The string representing the parameter name.
+ * @param middle_1
+ * The string being printed before the variable.
+ * Likely should have a space added at the end of the string.
+ * Set to NULL to disable.
+ * @param symbol_2
+ * The string representing the symbol for the parameter.
+ * Set to f_string_empty_s to disable.
+ * @param name_2
+ * The string representing the parameter name.
+ * @param middle_2
+ * The string being printed before the variable.
+ * Likely should have a space added at the end of the string.
+ * Set to NULL to disable.
+ * @param symbol_3
+ * The string representing the symbol for the parameter.
+ * Set to f_string_empty_s to disable.
+ * @param name_3
+ * The string representing the parameter name.
+ * @param after
+ * The string being printed after the variable.
+ * Likely should have a space added at the start of the string.
+ * Set to NULL to disable.
+ *
+ * @see f_file_stream_lock()
+ * @see f_file_stream_unlock()
+ * @see fl_print_format()
+ *
+ * @see fake_print_line_first_unlocked()
+ */
+#ifndef _di_fake_print_context_wrapped_parameter_
+ extern void fake_print_context_wrapped_parameters(fake_setting_t * const setting, const fl_print_t print, const f_string_t before, const f_string_static_t symbol_1, const f_string_static_t name_1, const f_string_t between_1, const f_string_static_t symbol_2, const f_string_static_t name_2, const f_string_t between_2, const f_string_static_t symbol_3, const f_string_static_t name_3, const f_string_t after);
+#endif // _di_fake_print_context_wrapped_parameter_
+
+/**
* Print a wrapped context message with a before string, an after string, and a string variable.
*
* This is primarily used by numerous print functions to reduce code.
* Project: Featureless Make
* API Version: 0.7
* Licenses: lgpl-2.1-or-later
+ *
+ * Provides skeleton functionality.
+ *
+ * This is auto-included and should not need to be explicitly included.
*/
#ifndef _PRIVATE_skeleton_h
#define _PRIVATE_skeleton_h
build_libraries-monolithic -lfll
build_sources_library main/build.c main/clean.c main/common.c main/fake.c main/make.c main/print.c main/print-error.c main/print-warning.c main/skeleton.c
-build_sources_library main/build/library.c main/build/load.c main/build/object.c main/build/objects.c main/build/print.c main/build/print-error.c main/build/print-verbose.c main/build/program.c main/build/skeleton.c
+build_sources_library main/build/library.c main/build/load.c main/build/object.c main/build/objects.c main/build/print.c main/build/print-error.c main/build/print-verbose.c main/build/print-warning.c main/build/program.c main/build/skeleton.c
build_sources_library main/clean/print.c
build_sources_library main/common/define.c main/common/enumeration.c main/common/print.c main/common/string.c main/common/type.c
build_sources_library main/fake/path_generate.c
build_sources_program main/main.c
build_sources_headers main/build.h main/clean.h main/common.h main/fake.h main/make.h main/print.h main/print-error.h main/print-warning.h main/skeleton.h
-build_sources_headers main/build/library.h main/build/load.h main/build/object.h main/build/objects.h main/build/print.h main/build/print-error.h main/build/print-verbose.h main/build/program.h main/build/skeleton.h
+build_sources_headers main/build/library.h main/build/load.h main/build/object.h main/build/objects.h main/build/print.h main/build/print-error.h main/build/print-verbose.h main/build/print-warning.h main/build/program.h main/build/skeleton.h
build_sources_headers main/clean/print.h
build_sources_headers main/common/define.h main/common/enumeration.h main/common/print.h main/common/string.h main/common/type.h
build_sources_headers main/fake/path_generate.h
-build_sources_headers main/make/load_fakefile.h main/make/load_parameters.h main/make/operate_block.h main/make/operate.h main/make/operate_process.h main/make/operate_process_type.h main/make/operate_validate.h main/make/operate_validate_type.h main/make/print.h main/make/print-error.h main/make/print-verbose.h main/make/print-warning.h
+build_sources_headers main/make/load_fakefile.h main/make/load_parameters.h main/make/operate_block.h main/make/operate.h main/make/operate_process.h main/make/operate_process_type.h main/make/operate_validate.h main/make/operate_validate_type.h main/make/print.h main/make/print-error.h main/make/print-verbose.h main/make/print-warning.h main/make/print-warning.h
build_sources_documentation man