]> Kevux Git Server - fll/commit
Feature: Fake build settings now supports compiling only object files.
authorKevin Day <thekevinday@gmail.com>
Mon, 14 Feb 2022 04:04:15 +0000 (22:04 -0600)
committerKevin Day <thekevinday@gmail.com>
Mon, 14 Feb 2022 04:04:15 +0000 (22:04 -0600)
commitde1d2626559d597d3eb92559409f45ce2ad0d933
tree79235c1d966cb162755de1ba95722ed8b6e90d1f
parentbe4c013b5728a1a50db10f0fb23fdfc67182d625
Feature: Fake build settings now supports compiling only object files.

I've observed that many programs like to compile each source file separately by passing "-c" to GCC.
Then the linking is done separately.

I believe unit tests may benefit from compiling individual object files for cases when mocking needs to be performed only for select functions.

With an upcoming stable release planned, I felt that now is the time to get this in.

Due to limitations of the compilers, only a single object file may be generated at a time.
Multiple generated object files may be combined into either a library or a program.
Object file generation is shared vs static aware.
Custom defines and flags may be specified for building objects.

It is now possible to compile different objects files for the generated library and for the generated program.

These are improvements to the build settings build process.
The make build process is still available for more advanced compiling.

An example project, called "example-objects", is provided to demostrate how to utilize the build settings and a fakefile to compile multiple objects separately and then combine them into a single program.

Additional fixes and improvement were necessary to properly complete this feature.

Summary of additional fixes and improvements:
- Improve default handling behavior in both fake and bootstrap.sh.
- Provide more defaults, such as having "compiler" default to "gcc".
- Massive cleanup of the bootstrap.sh (bootstrap.sh is now much closer to matching the functionality of the fake build settings).
- Update documentation.
- Add an error message for when an unknown build mode is passed to the boostrap-example.sh script.
- Fix bug in f_path_directory_cleanup() where the termnating NULL is being included in the count.
132 files changed:
build/level_0/settings
build/level_1/settings
build/level_2/settings
build/monolithic/settings
build/scripts/bootstrap-example.sh
build/scripts/bootstrap.sh
level_0/f_account/data/build/settings
level_0/f_account/data/build/settings-mocks
level_0/f_capability/data/build/settings
level_0/f_capability/data/build/settings-mocks
level_0/f_color/data/build/settings
level_0/f_color/data/build/settings-mocks
level_0/f_console/data/build/settings
level_0/f_control_group/data/build/settings
level_0/f_conversion/data/build/settings
level_0/f_conversion/data/build/settings-mocks
level_0/f_directory/data/build/settings
level_0/f_environment/data/build/settings
level_0/f_execute/data/build/settings
level_0/f_file/data/build/settings
level_0/f_fss/data/build/settings
level_0/f_iki/data/build/settings
level_0/f_limit/data/build/settings
level_0/f_memory/data/build/settings
level_0/f_path/c/path.c
level_0/f_path/data/build/settings
level_0/f_pipe/data/build/settings
level_0/f_print/data/build/settings
level_0/f_serialize/data/build/settings
level_0/f_signal/data/build/settings
level_0/f_socket/data/build/settings
level_0/f_status/data/build/settings
level_0/f_status_string/data/build/settings
level_0/f_string/data/build/settings
level_0/f_thread/data/build/settings
level_0/f_type/data/build/settings
level_0/f_type_array/data/build/settings
level_0/f_utf/data/build/settings
level_1/fl_control_group/data/build/settings
level_1/fl_conversion/data/build/settings
level_1/fl_directory/data/build/settings
level_1/fl_environment/data/build/settings
level_1/fl_execute/data/build/settings
level_1/fl_fss/data/build/settings
level_1/fl_iki/data/build/settings
level_1/fl_print/c/private-print.c
level_1/fl_print/data/build/settings
level_1/fl_signal/data/build/settings
level_1/fl_string/data/build/settings
level_1/fl_utf/data/build/settings
level_1/fl_utf_file/data/build/settings
level_2/fll_control_group/data/build/settings
level_2/fll_error/data/build/settings
level_2/fll_execute/data/build/settings
level_2/fll_file/data/build/settings
level_2/fll_fss/data/build/settings
level_2/fll_fss_status_string/data/build/settings
level_2/fll_iki/data/build/settings
level_2/fll_path/data/build/settings
level_2/fll_print/data/build/settings
level_2/fll_program/data/build/settings
level_2/fll_status_string/data/build/settings
level_3/byte_dump/data/build/settings
level_3/control/data/build/settings
level_3/controller/c/rule/private-rule.c
level_3/controller/data/build/settings
level_3/fake/c/common.c
level_3/fake/c/common.h
level_3/fake/c/private-build-library.c
level_3/fake/c/private-build-library.h
level_3/fake/c/private-build-load.c
level_3/fake/c/private-build-load.h
level_3/fake/c/private-build-object.c [new file with mode: 0644]
level_3/fake/c/private-build-object.h [new file with mode: 0644]
level_3/fake/c/private-build-objects.c
level_3/fake/c/private-build-objects.h
level_3/fake/c/private-build-program.c
level_3/fake/c/private-build-program.h
level_3/fake/c/private-build-skeleton.c
level_3/fake/c/private-build-skeleton.h
level_3/fake/c/private-build.c
level_3/fake/c/private-build.h
level_3/fake/c/private-common.c
level_3/fake/c/private-common.h
level_3/fake/c/private-fake-path_generate.c
level_3/fake/c/private-fake-path_generate.h
level_3/fake/c/private-fake.c
level_3/fake/c/private-fake.h
level_3/fake/c/private-make-load_fakefile.c
level_3/fake/c/private-make-load_fakefile.h
level_3/fake/c/private-make-load_parameters.c
level_3/fake/c/private-make-load_parameters.h
level_3/fake/c/private-make-operate.c
level_3/fake/c/private-make-operate.h
level_3/fake/c/private-make-operate_process.c
level_3/fake/c/private-make-operate_process.h
level_3/fake/c/private-make-operate_process_type.c
level_3/fake/c/private-make-operate_validate.c
level_3/fake/c/private-make-operate_validate.h
level_3/fake/data/build/settings
level_3/fake/data/projects/example-objects/data/build/fakefile [new file with mode: 0644]
level_3/fake/data/projects/example-objects/data/build/settings [new file with mode: 0644]
level_3/fake/data/projects/example-objects/data/build/settings-a [new file with mode: 0644]
level_3/fake/data/projects/example-objects/data/build/settings-e [new file with mode: 0644]
level_3/fake/data/projects/example-objects/data/build/settings-f [new file with mode: 0644]
level_3/fake/data/projects/example-objects/data/build/settings-k [new file with mode: 0644]
level_3/fake/data/projects/example-objects/sources/fake.c [new file with mode: 0644]
level_3/fake/data/projects/example-objects/sources_object/a.c [new file with mode: 0644]
level_3/fake/data/projects/example-objects/sources_object/e.c [new file with mode: 0644]
level_3/fake/data/projects/example-objects/sources_object/f.c [new file with mode: 0644]
level_3/fake/data/projects/example-objects/sources_object/k.c [new file with mode: 0644]
level_3/fake/documents/settings.txt
level_3/fake/specifications/settings.txt
level_3/firewall/data/build/settings
level_3/fss_basic_list_read/data/build/settings
level_3/fss_basic_list_write/data/build/settings
level_3/fss_basic_read/data/build/settings
level_3/fss_basic_write/data/build/settings
level_3/fss_embedded_list_read/data/build/settings
level_3/fss_embedded_list_write/data/build/settings
level_3/fss_extended_list_read/data/build/settings
level_3/fss_extended_list_write/data/build/settings
level_3/fss_extended_read/data/build/settings
level_3/fss_extended_write/data/build/settings
level_3/fss_identify/data/build/settings
level_3/fss_payload_read/data/build/settings
level_3/fss_payload_write/data/build/settings
level_3/fss_status_code/data/build/settings
level_3/iki_read/data/build/settings
level_3/iki_write/data/build/settings
level_3/status_code/data/build/settings
level_3/utf8/data/build/settings