Commit 158001f5 authored by Thomas Petazzoni's avatar Thomas Petazzoni
Browse files

Turn the static lib option into a choice with more options



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.

[Thomas: remove useless empty newline right after 'choice'. Noticed by
Yann E. Morin.]

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
parent 6e2b8096
Loading
Loading
Loading
Loading
+35 −9
Original line number Diff line number Diff line
@@ -525,19 +525,45 @@ config BR2_ENABLE_SSP
comment "enabling Stack Smashing Protection requires support in the toolchain"
	depends on !BR2_TOOLCHAIN_HAS_SSP

choice
	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
+0 −1
Original line number Diff line number Diff line
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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