summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openwrt/package/Config.in1
-rw-r--r--openwrt/package/base-files/Makefile12
-rw-r--r--openwrt/package/base-files/ipkg/uclibc.control2
-rw-r--r--openwrt/package/kismet/Makefile4
-rw-r--r--openwrt/package/kismet/ipkg/kismet.control2
-rw-r--r--openwrt/package/nmap/Makefile2
-rw-r--r--openwrt/package/nmap/ipkg/nmap.control2
-rw-r--r--openwrt/package/samba/Makefile2
-rw-r--r--openwrt/package/samba/ipkg/samba.control2
-rw-r--r--openwrt/toolchain/gcc/Makefile10
10 files changed, 29 insertions, 10 deletions
diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in
index 53b10b6304..47bddeb283 100644
--- a/openwrt/package/Config.in
+++ b/openwrt/package/Config.in
@@ -183,6 +183,7 @@ source "package/libevent/Config.in"
source "package/expat/Config.in" # libexpat
source "package/flac/Config.in" # libflac
source "package/freetype/Config.in" # libfreetype
+source "package/base-files/Config.in" # libgcc
source "package/libgcrypt/Config.in"
source "package/libgd/Config.in"
source "package/libgdbm/Config.in"
diff --git a/openwrt/package/base-files/Makefile b/openwrt/package/base-files/Makefile
index 8b74ee0d9c..7601de2ad0 100644
--- a/openwrt/package/base-files/Makefile
+++ b/openwrt/package/base-files/Makefile
@@ -29,7 +29,15 @@ LIBGCC_VERSION:=${shell cat $(STAGING_DIR)/gcc_version}
IDIR_LIBGCC:=$(PKG_BUILD_DIR)/libgcc
IPKG_LIBGCC:=$(PACKAGE_DIR)/libgcc_$(LIBGCC_VERSION)-$(PKG_RELEASE)_$(ARCH).ipk
-PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC) $(IPKG_LIBGCC)
+PACKAGES:=$(IPKG_BASE) $(IPKG_UCLIBC)
+PACKAGES_INSTALL:=$(IPKG_BASE) $(IPKG_UCLIBC)
+
+ifeq ($(BR2_PACKAGE_LIBGCC),y)
+PACKAGES_INSTALL+=$(IPKG_LIBGCC)
+endif
+ifeq ($(BR2_PACKAGE_LIBGCC),m)
+PACKAGES+=$(IPKG_LIBGCC)
+endif
$(PKG_BUILD_DIR)/.prepared:
mkdir -p $(PKG_BUILD_DIR) $(PACKAGE_DIR)
@@ -88,4 +96,4 @@ prepare:
compile-targets: $(PACKAGES)
install-targets: compile
mkdir -p $(TARGET_DIR)
- $(IPKG) install $(PACKAGES)
+ $(IPKG) install $(PACKAGES_INSTALL)
diff --git a/openwrt/package/base-files/ipkg/uclibc.control b/openwrt/package/base-files/ipkg/uclibc.control
index d07ed90681..1cdfe157cb 100644
--- a/openwrt/package/base-files/ipkg/uclibc.control
+++ b/openwrt/package/base-files/ipkg/uclibc.control
@@ -1,5 +1,5 @@
Package: uclibc
Priority: optional
Section: net
-Depends: base-files, libgcc
+Depends: base-files
Description: Standard C library for embedded Linux systems
diff --git a/openwrt/package/kismet/Makefile b/openwrt/package/kismet/Makefile
index 366fddddba..58e3f501ad 100644
--- a/openwrt/package/kismet/Makefile
+++ b/openwrt/package/kismet/Makefile
@@ -28,7 +28,7 @@ $(PKG_BUILD_DIR)/.configured:
CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include -I$(LINUX_DIR)/include" \
LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm" \
+ LIBS="-luClibc++ -lc -lm -lgcc" \
./configure \
--target=$(GNU_TARGET_NAME) \
--host=$(GNU_TARGET_NAME) \
@@ -58,7 +58,7 @@ $(PKG_BUILD_DIR)/.configured:
$(PKG_BUILD_DIR)/.built:
$(MAKE) -C $(PKG_BUILD_DIR) \
- LIBS="-luClibc++ -lc -lm" \
+ LIBS="-luClibc++ -lc -lm -lgcc" \
all
touch $@
diff --git a/openwrt/package/kismet/ipkg/kismet.control b/openwrt/package/kismet/ipkg/kismet.control
index ef77d815f5..193328563c 100644
--- a/openwrt/package/kismet/ipkg/kismet.control
+++ b/openwrt/package/kismet/ipkg/kismet.control
@@ -1,7 +1,7 @@
Package: kismet
Priority: optional
Section: net
-Depends: kismet-client, kismet-server
+Depends: libgcc, kismet-client, kismet-server
Description: kismet
Kismet is an 802.11 layer2 wireless network detector,
sniffer, and intrusion detection system. Kismet will work with any
diff --git a/openwrt/package/nmap/Makefile b/openwrt/package/nmap/Makefile
index 1aa8bed4c7..659bff9580 100644
--- a/openwrt/package/nmap/Makefile
+++ b/openwrt/package/nmap/Makefile
@@ -26,7 +26,7 @@ $(PKG_BUILD_DIR)/.configured:
CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti -nostdinc++" \
CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
LDFLAGS="-nodefaultlibs -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
- LIBS="-luClibc++ -lc -lm" \
+ LIBS="-luClibc++ -lc -lm -lgcc" \
ac_cv_prog_CXX="$(TARGET_CXX)" \
./configure \
--target=$(GNU_TARGET_NAME) \
diff --git a/openwrt/package/nmap/ipkg/nmap.control b/openwrt/package/nmap/ipkg/nmap.control
index ad2a984d12..56253fda0b 100644
--- a/openwrt/package/nmap/ipkg/nmap.control
+++ b/openwrt/package/nmap/ipkg/nmap.control
@@ -1,5 +1,5 @@
Package: nmap
Priority: optional
Section: net
-Depends: libpcap, libpcre, uclibc++
+Depends: libgcc, libpcap, libpcre, uclibc++
Description: Nmap is a free open source utility for network exploration or security auditing.
diff --git a/openwrt/package/samba/Makefile b/openwrt/package/samba/Makefile
index 566e604a03..584ed9a044 100644
--- a/openwrt/package/samba/Makefile
+++ b/openwrt/package/samba/Makefile
@@ -58,7 +58,7 @@ $(PKG_BUILD_DIR)/.built:
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -DNDEBUG -DSHMEM_SIZE=524288 -Dfcntl=fcntl64" \
CPPFLAGS="-I$(STAGING_DIR)/usr/include" \
- LDFLAGS="-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
+ LDFLAGS="-lgcc_s -L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib" \
ac_cv_lib_cups_httpConnect=no \
ac_cv_sizeof_int=4 \
ac_cv_sizeof_long=4 \
diff --git a/openwrt/package/samba/ipkg/samba.control b/openwrt/package/samba/ipkg/samba.control
index 503ce7240c..c1cf603c4d 100644
--- a/openwrt/package/samba/ipkg/samba.control
+++ b/openwrt/package/samba/ipkg/samba.control
@@ -1,5 +1,5 @@
Package: samba
Priority: optional
Section: net
-Depends:
+Depends: libgcc
Description: NetBIOS/SMB file and print server
diff --git a/openwrt/toolchain/gcc/Makefile b/openwrt/toolchain/gcc/Makefile
index dc7e02c7ae..f6f4acaab6 100644
--- a/openwrt/toolchain/gcc/Makefile
+++ b/openwrt/toolchain/gcc/Makefile
@@ -188,6 +188,16 @@ ifeq ($(findstring 3.3.,$(GCC_VERSION)),3.3.)
cp ./$(GCC_VERSION)/specs-$(ARCH)-soft-float $(STAGING_DIR)/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs
endif
endif
+# We do another ugly hack here because the standard behaviour is
+# to include a reference to libgcc.so.1 in all binaries. For flash space
+# saving, we change the specs file to link in a static libgcc here.
+ if [ ! -f $(STAGING_DIR)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs ] ; then \
+ echo staging dir specs file is missing ; \
+ /bin/false ; \
+ fi;
+ if grep -q as-needed $(STAGING_DIR)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs; then \
+ patch -d $(STAGING_DIR)/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/ -p0 < ./$(GCC_VERSION)/static-libgcc.patch.conditional ; \
+ fi;
source: $(DL_DIR)/$(GCC_SOURCE)
prepare: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc