[Buildroot] [PATCHv2 1/3] Turn the static lib option into a choice with more options
Yann E. MORIN
yann.morin.1998 at free.fr
Thu Dec 11 23:05:15 UTC 2014
Thomas, All,
On 2014-12-11 23:50 +0100, Thomas Petazzoni spake thusly:
> This commit turns the single static option into a choice, which offers
> various possibilities:
>
> 1. Build and use static libraries only;
> 2. Build both shared and static libraries, but use shared libraries;
> 3. Build and use shared libraries only.
>
> On most platforms, (2) is currently the default, and kept as the
> default in this commit. Of course, on certain platforms (Blackfin,
> m68k), only option (1) will be available.
>
> In addition to the introduction of the Config.in options, this commit
> also:
>
> * Removes the 'select BR2_STATIC_LIBS' from 'BR2_BINFMT_FLAT', since
> with the use of a choice, we are guaranteed that BR2_STATIC_LIBS
> will be selected when the binary format is BR2_BINFMT_FLAT, since
> BR2_STATIC_LIBS will be the only possible solution in the choice.
>
> * Changes package/Makefile.in to use the proper
> --{enable,disable}-{shared,static} options for autotools packages.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> ---
> Config.in | 45 ++++++++++++++++++++++++++++++++++++---------
> arch/Config.in | 1 -
> package/Makefile.in | 4 +++-
> 3 files changed, 39 insertions(+), 11 deletions(-)
>
> diff --git a/Config.in b/Config.in
> index cdc5f0f..a647283 100644
> --- a/Config.in
> +++ b/Config.in
> @@ -525,19 +525,46 @@ config BR2_ENABLE_SSP
> comment "enabling Stack Smashing Protection requires support in the toolchain"
> depends on !BR2_TOOLCHAIN_HAS_SSP
>
> +choice
> +
As discussed on IRC: supperfluous empty line
Otherwise:
Reviewed-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> + bool "libraries"
> + default BR2_SHARED_STATIC_LIBS if BR2_BINFMT_SUPPORTS_SHARED
> + default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
> + help
> + Select the type of libraries you want to use on the target.
> +
> + The default is to build dynamic libraries and use those on
> + the target filesystem, except when the architecture and/or
> + the selected binary format does not support shared
> + libraries.
> +
> config BR2_STATIC_LIBS
> - bool "build statically linked applications, no dynamic libraries"
> + bool "static only"
> help
> - Build all applications for the target statically linked.
> - This potentially increases your filesystem size and should only be
> - used if you know what you do.
> + Build and use only static libraries. No shared libraries
> + will be instaled on the target. This potentially increases
> + your code size and should only be used if you know what you
> + are doing. Note that some packages may not be available when
> + this option is enabled, due to their need for dynamic
> + library support.
>
> - Note that some applications cannot be build statically and so are
> - intentionally disabled.
> +config BR2_SHARED_LIBS
> + bool "shared only"
> + depends on BR2_BINFMT_SUPPORTS_SHARED
> + help
> + Build and use only shared libraries. This is the recommended
> + solution as it saves space and build time.
> +
> +config BR2_SHARED_STATIC_LIBS
> + bool "both static and shared"
> + depends on BR2_BINFMT_SUPPORTS_SHARED
> + help
> + Build both shared and static libraries, but link executables
> + dynamically. While building both shared and static libraries
> + take more time and more disk space, having static libraries
> + may be useful to link some of the applications statically.
>
> - The default (if this option is disabled) is to build dynamic
> - libraries and dynamically link applications to use those on the
> - target filesystem.
> +endchoice
>
>
> config BR2_PACKAGE_OVERRIDE_FILE
> diff --git a/arch/Config.in b/arch/Config.in
> index d06ab5e..890e7e2 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -284,7 +284,6 @@ config BR2_BINFMT_FDPIC
> config BR2_BINFMT_FLAT
> bool "FLAT"
> depends on BR2_bfin || BR2_m68k
> - select BR2_STATIC_LIBS
> help
> FLAT binary is a relatively simple and lightweight executable format
> based on the original a.out format. It is widely used in environment
> diff --git a/package/Makefile.in b/package/Makefile.in
> index 50f86ad..a63a2e8 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -394,7 +394,9 @@ SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared
> TARGET_CFLAGS += -static
> TARGET_CXXFLAGS += -static
> TARGET_LDFLAGS += -static
> -else
> +else ifeq ($(BR2_SHARED_LIBS),y)
> +SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared
> +else ifeq ($(BR2_SHARED_STATIC_LIBS),y)
> SHARED_STATIC_LIBS_OPTS = --enable-static --enable-shared
> endif
>
> --
> 2.1.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
More information about the buildroot
mailing list