summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.in13
-rw-r--r--Makefile25
-rw-r--r--package/gmp/gmp.mk15
-rw-r--r--toolchain/Makefile.in6
4 files changed, 56 insertions, 3 deletions
diff --git a/Config.in b/Config.in
index 45e3d538b..e75ff23a8 100644
--- a/Config.in
+++ b/Config.in
@@ -373,6 +373,19 @@ config BR2_DEPRECATED
help
This option hides outdated/obsolete versions of packages.
+config BR2_PREFER_STATIC_LIB
+ bool "prefer static libraries"
+ default n
+ help
+ Where possible, use static libraries.
+ This increases your code size a lot and should only be
+ used with a good reason why not use the default, which
+ is dynamic libraries.
+
+ If unsure, say No.
+
+ WARNING: This is highly experimental at the moment.
+
endmenu
source "toolchain/Config.in"
diff --git a/Makefile b/Makefile
index 12851444f..86f8dce0f 100644
--- a/Makefile
+++ b/Makefile
@@ -66,7 +66,32 @@ include package/Makefile.in
#
#############################################################
+ifneq (,$(findstring linux,$(BR2_GNU_BUILD_SUFFIX)))
+EXEEXT:=
+LIBEXT:=.a
+SHREXT:=.so
+endif
+ifneq (,$(findstring apple,$(BR2_GNU_BUILD_SUFFIX)))
+EXEEXT:=.pear
+LIBEXT:=.dunno
+SHREXT:=.dylib
+endif
+ifneq (,$(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)))
+EXEEXT:=.exe
+LIBEXT:=.lib
+SHREXT:=.dll
+endif
+ifneq (,$(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)))
+EXEEXT:=.exe
+LIBEXT:=.lib
+SHREXT:=.dll
+endif
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+LIBTGTEXT=$(LIBEXT)
+else
+LIBTGTEXT=$(SHREXT)
+endif
all: world
diff --git a/package/gmp/gmp.mk b/package/gmp/gmp.mk
index 93a5d653a..b70fffa5f 100644
--- a/package/gmp/gmp.mk
+++ b/package/gmp/gmp.mk
@@ -18,6 +18,14 @@ else
GMP_BE:=no
endif
+# this is a workaround for a bug in GMP, please see
+# http://gmplib.org/list-archives/gmp-devel/2006-April/000618.html
+ifeq ($(EXEEXT),.exe)
+GMP_CPP_FLAGS:=-DDLL_EXPORT
+else
+GMP_CPP_FLAGS:=
+endif
+
$(DL_DIR)/$(GMP_SOURCE):
$(WGET) -P $(DL_DIR) $(GMP_SITE)/$(GMP_SOURCE)
@@ -35,6 +43,7 @@ $(GMP_TARGET_DIR)/.configured: $(GMP_DIR)/.unpacked
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
+ CPPFLAGS="$(GMP_CPP_FLAGS)" \
ac_cv_c_bigendian=$(GMP_BE) \
$(GMP_DIR)/configure \
--target=$(GNU_TARGET_NAME) \
@@ -52,7 +61,7 @@ $(GMP_TARGET_DIR)/.configured: $(GMP_DIR)/.unpacked
--includedir=/include \
--mandir=/usr/man \
--infodir=/usr/info \
- --enable-shared \
+ $(PREFERRED_LIB_FLAGS) \
$(DISABLE_NLS) \
);
touch $@
@@ -105,12 +114,12 @@ $(GMP_DIR2)/.configured: $(GMP_DIR)/.unpacked
CC_FOR_BUILD="$(HOSTCC)" \
CC="$(HOSTCC)" \
CFLAGS="$(HOST_CFLAGS)" \
+ CPPFLAGS="$(GMP_CPP_FLAGS)" \
$(GMP_DIR)/configure \
--prefix="$(GMP_HOST_DIR)" \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_HOST_NAME) \
- --enable-shared \
- --enable-static \
+ $(PREFERRED_LIB_FLAGS) \
$(DISABLE_NLS) \
);
touch $@
diff --git a/toolchain/Makefile.in b/toolchain/Makefile.in
index ca798bf6b..6f7cc013d 100644
--- a/toolchain/Makefile.in
+++ b/toolchain/Makefile.in
@@ -10,6 +10,12 @@ else
MULTILIB:=--disable-multilib
endif
+ifeq ($(BR2_PREFER_STATIC_LIB),y)
+PREFERRED_LIB_FLAGS:=--enable-static --disable-shared
+else
+PREFERRED_LIB_FLAGS:=--disable-static --enable-shared
+endif
+
# FIXME -- this is temporary
OPTIMIZE_FOR_CPU=$(ARCH)