summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.in44
-rw-r--r--arch/Config.in1
-rw-r--r--package/Makefile.in4
3 files changed, 38 insertions, 11 deletions
diff --git a/Config.in b/Config.in
index cdc5f0f9f..45921398d 100644
--- a/Config.in
+++ b/Config.in
@@ -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
diff --git a/arch/Config.in b/arch/Config.in
index d06ab5e54..890e7e2d4 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 50f86ad34..a63a2e857 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