From: Kevin Day Date: Thu, 9 Oct 2014 03:15:01 +0000 (-0500) Subject: Feature: add support for defining the linker program via build_linker= setting X-Git-Tag: 0.4.2~21 X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=f42bd56415a7c96c89a031939e482cb42c8c3fd9;p=fll Feature: add support for defining the linker program via build_linker= setting --- diff --git a/build/scripts/generate.sh b/build/scripts/generate.sh index 66be68054..00a7ec58a 100644 --- a/build/scripts/generate.sh +++ b/build/scripts/generate.sh @@ -198,9 +198,10 @@ generate_id(){ "version_minor") echo -n 3;; "version_micro") echo -n 4;; "build_compiler") echo -n 5;; - "build_libraries") echo -n 6;; - "build_sources_library") echo -n 7;; - "build_sources_program") echo -n 8;; + "build_linker") echo -n 6;; + "build_libraries") echo -n 7;; + "build_sources_library") echo -n 8;; + "build_sources_program") echo -n 9;; "build_sources_headers") echo -n 10;; "build_sources_settings") echo -n 11;; "build_shared") echo -n 12;; @@ -229,7 +230,7 @@ generate_load_settings(){ exit $failure fi - for i in project_name project_level version_major version_minor version_micro build_compiler build_libraries build_sources_library build_sources_program build_sources_headers build_sources_settings build_shared flags_all flags_shared flags_static flags_library flags_program ; do + for i in project_name project_level version_major version_minor version_micro build_compiler build_linker build_libraries build_sources_library build_sources_program build_sources_headers build_sources_settings build_shared flags_all flags_shared flags_static flags_library flags_program ; do variables[$(generate_id $i)]=$(grep -s -o "^[[:space:]]*$i\>.*$" $settings_file | sed -e "s|^[[:space:]]*$i\>||" -e 's|^[[:space:]]*||') done } @@ -272,6 +273,7 @@ generate_operation_build(){ local minor=${variables[$(generate_id version_minor)]} local micro=${variables[$(generate_id version_micro)]} local compiler=${variables[$(generate_id build_compiler)]} + local linker=${variables[$(generate_id build_linker)]} local arguments="-I${path_build}includes -L${path_build}libraries ${variables[$(generate_id flags_all)]} ${variables[$(generate_id build_libraries)]}" local shared=${variables[$(generate_id build_shared)]} local sources_library=${variables[$(generate_id build_sources_library)]} @@ -322,10 +324,22 @@ generate_operation_build(){ sources= sources_alt= if [[ $alt == "alt" ]] ; then + if [[ $sources_library != "" ]] ; then + for i in $sources_library ; do + sources_alt="$sources_alt$path_c$i " + done + fi + for i in $sources_program ; do sources_alt="$sources_alt$path_c$i " done else + if [[ $sources_library != "" ]] ; then + for i in $sources_library ; do + sources="$sources$path_c$i " + done + fi + for i in $sources_program ; do sources="$sources$path_c$i " done @@ -340,27 +354,57 @@ generate_operation_build(){ if [[ $sources_library != "" ]] ; then if [[ $alt == "alt" ]] ; then for i in $sources_library ; do - sources_alt="$sources_alt$path_c$i " + sources="$sources${path_build}libraries/$i.o " + sources_alt="$sources_alt$sources " + + echo $compiler $path_c$i $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} -c -static -o ${path_build}libraries/$i.o + $compiler $path_c$i $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} -c -static -o ${path_build}libraries/$i.o || failure=1 + + if [[ $failure == "1" ]] ; then + break; + fi done else for i in $sources_library ; do - sources="$sources$path_c$i " + sources="$sources${path_build}libraries/$i.o " + sources_alt="$sources_alt$sources " + + echo $compiler $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} $path_c$i -c -static -o ${path_build}libraries/$i.o + $compiler $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} $path_c$i -c -static -o ${path_build}libraries/$i.o || failure=1 + + if [[ $failure == "1" ]] ; then + break; + fi done fi - echo $compiler $sources_alt $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} $sources -static -o ${path_build}libraries/lib$name.a - $compiler $sources_alt $arguments ${variables[$(generate_id flags_static)]} ${variables[$(generate_id flags_library)]} $sources -static -o ${path_build}libraries/lib$name.a || failure=1 + if [[ $failure == "" ]] ; then + echo $linker rcs ${path_build}libraries/lib$name.a $sources_alt + $linker rcs ${path_build}libraries/lib$name.a $sources_alt || failure=1 + fi fi if [[ $failure == "" && $sources_program != "" ]] ; then sources= sources_alt= if [[ $alt == "alt" ]] ; then + if [[ $sources_library != "" ]] ; then + for i in $sources_library ; do + sources_alt="$sources_alt$path_c$i " + done + fi + for i in $sources_program ; do sources_alt="$sources_alt$path_c$i " done else - for i in $sources_library ; do + if [[ $sources_library != "" ]] ; then + for i in $sources_library ; do + sources="$sources$path_c$i " + done + fi + + for i in $sources_program ; do sources="$sources$path_c$i " done fi diff --git a/level_0/f_colors/data/build/settings b/level_0/f_colors/data/build/settings index eea76357a..199bfed4f 100644 --- a/level_0/f_colors/data/build/settings +++ b/level_0/f_colors/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_0/f_console/data/build/settings b/level_0/f_console/data/build/settings index 6effd4b4b..f12247e7b 100644 --- a/level_0/f_console/data/build/settings +++ b/level_0/f_console/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library console.c build_sources_program diff --git a/level_0/f_conversion/data/build/settings b/level_0/f_conversion/data/build/settings index 79c2da382..a3feb362a 100644 --- a/level_0/f_conversion/data/build/settings +++ b/level_0/f_conversion/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library conversion.c build_sources_program diff --git a/level_0/f_errors/data/build/settings b/level_0/f_errors/data/build/settings index f8af285ad..cd8bbf934 100644 --- a/level_0/f_errors/data/build/settings +++ b/level_0/f_errors/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_0/f_file/data/build/settings b/level_0/f_file/data/build/settings index 7eb32bfea..6c3d5043a 100644 --- a/level_0/f_file/data/build/settings +++ b/level_0/f_file/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library file.c build_sources_program diff --git a/level_0/f_fss/data/build/settings b/level_0/f_fss/data/build/settings index f71677456..cac2f911e 100644 --- a/level_0/f_fss/data/build/settings +++ b/level_0/f_fss/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_0/f_memory/data/build/settings b/level_0/f_memory/data/build/settings index 0334d4acf..2cb0cd7c6 100644 --- a/level_0/f_memory/data/build/settings +++ b/level_0/f_memory/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library memory.c build_sources_program diff --git a/level_0/f_paths/data/build/settings b/level_0/f_paths/data/build/settings index 43194c10c..5f9722234 100644 --- a/level_0/f_paths/data/build/settings +++ b/level_0/f_paths/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries build_sources_library build_sources_program diff --git a/level_0/f_pipe/data/build/settings b/level_0/f_pipe/data/build/settings index ed8806dfd..69820eb9b 100644 --- a/level_0/f_pipe/data/build/settings +++ b/level_0/f_pipe/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library pipe.c build_sources_program diff --git a/level_0/f_print/data/build/settings b/level_0/f_print/data/build/settings index ccaed244f..84fd450ec 100644 --- a/level_0/f_print/data/build/settings +++ b/level_0/f_print/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library print.c build_sources_program diff --git a/level_0/f_serialized/data/build/settings b/level_0/f_serialized/data/build/settings index 718dfbfff..70ecd90c9 100644 --- a/level_0/f_serialized/data/build/settings +++ b/level_0/f_serialized/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_0/f_strings/data/build/settings b/level_0/f_strings/data/build/settings index fb068f65f..1d2823d8f 100644 --- a/level_0/f_strings/data/build/settings +++ b/level_0/f_strings/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_0/f_types/data/build/settings b/level_0/f_types/data/build/settings index 601bbd678..a2fd3dc49 100644 --- a/level_0/f_types/data/build/settings +++ b/level_0/f_types/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library build_sources_program diff --git a/level_1/fl_colors/data/build/settings b/level_1/fl_colors/data/build/settings index 7d71e0e70..9593b4289 100644 --- a/level_1/fl_colors/data/build/settings +++ b/level_1/fl_colors/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_file -lf_memory build_sources_library colors.c build_sources_program diff --git a/level_1/fl_console/data/build/settings b/level_1/fl_console/data/build/settings index 228786cef..b4e5413a3 100644 --- a/level_1/fl_console/data/build/settings +++ b/level_1/fl_console/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_console -lf_memory build_sources_library console.c build_sources_program diff --git a/level_1/fl_directory/data/build/settings b/level_1/fl_directory/data/build/settings index 37bf7d440..acbe9d173 100644 --- a/level_1/fl_directory/data/build/settings +++ b/level_1/fl_directory/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory build_sources_library directory.c build_sources_program diff --git a/level_1/fl_errors/data/build/settings b/level_1/fl_errors/data/build/settings index 8deffc056..451ec8919 100644 --- a/level_1/fl_errors/data/build/settings +++ b/level_1/fl_errors/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc build_sources_library errors.c build_sources_program diff --git a/level_1/fl_file/data/build/settings b/level_1/fl_file/data/build/settings index 84f4e2a96..6d3f91c65 100644 --- a/level_1/fl_file/data/build/settings +++ b/level_1/fl_file/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_file -lf_memory build_sources_library file.c build_sources_program diff --git a/level_1/fl_fss/data/build/settings b/level_1/fl_fss/data/build/settings index bc7b47f3b..cdf003944 100644 --- a/level_1/fl_fss/data/build/settings +++ b/level_1/fl_fss/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_file -lf_conversion build_sources_library fss.c fss_basic.c fss_basic_list.c fss_extended.c build_sources_program diff --git a/level_1/fl_serialized/data/build/settings b/level_1/fl_serialized/data/build/settings index 5411ece93..b0a08bd0c 100644 --- a/level_1/fl_serialized/data/build/settings +++ b/level_1/fl_serialized/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory build_sources_library serialized.c build_sources_program diff --git a/level_1/fl_strings/data/build/settings b/level_1/fl_strings/data/build/settings index 8ca4cb397..e8b69916a 100644 --- a/level_1/fl_strings/data/build/settings +++ b/level_1/fl_strings/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory build_sources_library strings.c build_sources_program diff --git a/level_2/fll_colors/data/build/settings b/level_2/fll_colors/data/build/settings index d8ac96212..46e16ee73 100644 --- a/level_2/fll_colors/data/build/settings +++ b/level_2/fll_colors/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lfl_colors build_sources_library colors.c build_sources_program diff --git a/level_2/fll_execute/data/build/settings b/level_2/fll_execute/data/build/settings index 0ee02fe01..450bfd3b3 100644 --- a/level_2/fll_execute/data/build/settings +++ b/level_2/fll_execute/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory build_sources_library execute.c build_sources_program diff --git a/level_2/fll_fss/data/build/settings b/level_2/fll_fss/data/build/settings index c2800a53f..854f8b3b5 100644 --- a/level_2/fll_fss/data/build/settings +++ b/level_2/fll_fss/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_file -lf_conversion -lfl_fss -lfl_errors build_sources_library fss_basic.c fss_basic_list.c fss_extended.c fss_errors.c build_sources_program diff --git a/level_3/firewall/data/build/settings b/level_3/firewall/data/build/settings index 9c7219f5c..a6dc751e6 100644 --- a/level_3/firewall/data/build/settings +++ b/level_3/firewall/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lf_conversion -lf_print -lf_file -lfl_fss -lfl_console -lfl_file -lfl_strings -lfl_colors -lfl_directory -lfll_execute -lfll_fss -lfll_colors -lf_pipe build_sources_library firewall.c private-firewall.c build_sources_program main.c diff --git a/level_3/fss_basic_list_read/data/build/settings b/level_3/fss_basic_list_read/data/build/settings index 490787dcf..4b5c6b194 100644 --- a/level_3/fss_basic_list_read/data/build/settings +++ b/level_3/fss_basic_list_read/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lf_conversion -lf_print -lf_file -lfl_fss -lfl_console -lfl_file -lfl_strings -lfl_colors -lfl_directory -lfll_execute -lfll_fss -lfll_colors -lf_pipe build_sources_library fss_basic_list_read.c build_sources_program main.c diff --git a/level_3/fss_basic_list_write/data/build/settings b/level_3/fss_basic_list_write/data/build/settings index 90e37ae58..d6563b406 100644 --- a/level_3/fss_basic_list_write/data/build/settings +++ b/level_3/fss_basic_list_write/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lfl_console -lf_conversion -lf_pipe -lf_print -lf_file -lfl_colors -lfll_colors -lfl_errors -lfl_fss -lfll_fss -lfl_file build_sources_library fss_basic_list_write.c build_sources_program main.c diff --git a/level_3/fss_basic_read/data/build/settings b/level_3/fss_basic_read/data/build/settings index 6e333ee46..275ac10b8 100644 --- a/level_3/fss_basic_read/data/build/settings +++ b/level_3/fss_basic_read/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lf_conversion -lf_print -lf_file -lfl_fss -lfl_console -lfl_file -lfl_strings -lfl_colors -lfl_directory -lfll_execute -lfll_fss -lfll_colors -lf_pipe build_sources_library fss_basic_read.c build_sources_program main.c diff --git a/level_3/fss_basic_write/data/build/settings b/level_3/fss_basic_write/data/build/settings index 093ab89a4..6a03cb3b6 100644 --- a/level_3/fss_basic_write/data/build/settings +++ b/level_3/fss_basic_write/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lfl_console -lf_conversion -lf_pipe -lf_print -lf_file -lfl_colors -lfll_colors -lfl_errors -lfl_fss -lfll_fss -lfl_file build_sources_library fss_basic_write.c build_sources_program main.c diff --git a/level_3/fss_extended_read/data/build/settings b/level_3/fss_extended_read/data/build/settings index db7d2da2c..a88b021f0 100644 --- a/level_3/fss_extended_read/data/build/settings +++ b/level_3/fss_extended_read/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lf_conversion -lf_print -lf_file -lfl_fss -lfl_console -lfl_file -lfl_strings -lfl_colors -lfl_directory -lfll_execute -lfll_fss -lfll_colors -lf_pipe build_sources_library fss_extended_read.c build_sources_program main.c diff --git a/level_3/fss_extended_write/data/build/settings b/level_3/fss_extended_write/data/build/settings index 500940c9e..14d0d4ad6 100644 --- a/level_3/fss_extended_write/data/build/settings +++ b/level_3/fss_extended_write/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lfl_console -lf_conversion -lf_pipe -lf_print -lf_file -lfl_colors -lfll_colors -lfl_errors -lfl_fss -lfll_fss -lfl_file build_sources_library fss_extended_write.c build_sources_program main.c diff --git a/level_3/fss_return_code/data/build/settings b/level_3/fss_return_code/data/build/settings index 481a8752c..9b3b627fe 100644 --- a/level_3/fss_return_code/data/build/settings +++ b/level_3/fss_return_code/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lfl_console -lf_conversion -lf_pipe -lf_print -lfl_colors -lfll_colors -lfl_errors -lfl_fss -lfll_fss build_sources_library fss_return_code.c build_sources_program main.c diff --git a/level_3/return_code/data/build/settings b/level_3/return_code/data/build/settings index ccfc7818a..f3c27c92d 100644 --- a/level_3/return_code/data/build/settings +++ b/level_3/return_code/data/build/settings @@ -8,6 +8,7 @@ version_minor 4 version_micro 2 build_compiler gcc +build_linker ar build_libraries -lc -lf_memory -lf_console -lfl_console -lf_conversion -lf_pipe -lf_print -lfl_colors -lfll_colors -lfl_errors build_sources_library return_code.c build_sources_program main.c