In currently generated top-level "nano.specs" we resolve
paths during toolchain building and then use those pre-defined
full paths once the toolchain got built.
That's OK until the toolchain is used right were it was built,
otherwise paths used in the top-level "nano.specs" become
irrelevant and linker fails to find "nano" libs reverting to
non-"nano" libs in the default location.
See https://github.com/crosstool-ng/crosstool-ng/issues/1491.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
If existing board's .specs are used for linking of a user's application,
then instead of normally used libs like libc.a & libstdc++.a might be
requested their "nano"-suffixed siblings: libc_nano.a, libstdc++_nano etc.
That way:
----------------------------->8---------------------------
%rename link_gcc_c_sequence myboard_link_gcc_c_sequence
*myboard_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(myboard_link_gcc_c_sequence) --start-group %G %(myboard_libc) --end-group
----------------------------->8---------------------------
Our companion newlib-nano libs are all built optimized for size, so we'd like
to use them for linking. But given linker will see "-lc_nano -lstdc++_nano"
on its command line non-suffixed libs will be ignored.
To solve it we create those "_nano"-suffixed libraries as simple symlinks to
existing libs..
Fixes https://github.com/crosstool-ng/crosstool-ng/issues/1458.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
This allows building newlib-nano in addition to newlib and picolibc,
allowing users to select between C libraries within the same toolchain.
Signed-off-by: Keith Packard <keithp@keithp.com>