+flatten_extralibs(){
+ unset nested_entries
+ list_name=$1
+ eval list=\$${1}
+ for entry in $list; do
+ entry_copy=$entry
+ resolve entry_copy
+ append nested_entries $(filter '*_extralibs' $entry_copy)
+ flat_entries=$(filter_out '*_extralibs' $entry_copy)
+ eval $entry="\$flat_entries"
+ done
+ append $list_name "$nested_entries"
+
+ resolve nested_entries
+ if test -n "$(filter '*_extralibs' $nested_entries)"; then
+ flatten_extralibs $list_name
+ fi
+}
+
+for linkunit in $LIBRARY_LIST; do
+ unset current_extralibs
+ eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
+ for comp in ${components}; do
+ enabled $comp || continue
+ comp_extralibs="${comp}_extralibs"
+ append current_extralibs $comp_extralibs
+ done
+ eval prepend ${linkunit}_extralibs $current_extralibs
+done
+
+for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
+ flatten_extralibs ${linkunit}_extralibs
+ unique ${linkunit}_extralibs
+ resolve ${linkunit}_extralibs
+ eval ${linkunit}_extralibs=\$\(\$ldflags_filter \$${linkunit}_extralibs\)
+done
+