aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openwrt.org>2006-01-04 08:37:19 +0000
committerWaldemar Brodkorb <wbx@openwrt.org>2006-01-04 08:37:19 +0000
commit13b12c06c87998480e2642cb762693694f0c3b0f (patch)
tree2005252ef3db9de34d1b0b10656fae07bf82d55e
parent9feda69af9dd6682ef0f92a4f63c223f1174e18b (diff)
downloadmaster-187ad058-13b12c06c87998480e2642cb762693694f0c3b0f.tar.gz
master-187ad058-13b12c06c87998480e2642cb762693694f0c3b0f.tar.bz2
master-187ad058-13b12c06c87998480e2642cb762693694f0c3b0f.zip
patch for spec file of gcc 3.4.4, so that libgss library is not
automatically linked into every binary. explicitely link it into needed packages (kismet, nmap, samba) and add dependencies. idea and patch from sven-ola, thx. Saves 16 kb in the default squashfs images. git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@2817 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/Config.in1
-rw-r--r--package/base-files/Makefile12
-rw-r--r--package/base-files/ipkg/uclibc.control2
-rw-r--r--package/kismet/Makefile4
-rw-r--r--package/kismet/ipkg/kismet.control2
-rw-r--r--package/nmap/Makefile2
-rw-r--r--package/nmap/ipkg/nmap.control2
-rw-r--r--package/samba/Makefile2
-rw-r--r--package/samba/ipkg/samba.control2
-rw-r--r--toolchain/gcc/Makefile10
10 files changed, 29 insertions, 10 deletions
diff --git a/package/Config.in b/package/Config.in
index 53b10b6304..47bddeb283 100644
--- a/package/Config.in
+++ b/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/package/base-files/Makefile b/package/base-files/Makefile
index 8b74ee0d9c..7601de2ad0 100644
--- a/package/base-files/Makefile
+++ b/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/package/base-files/ipkg/uclibc.control b/package/base-files/ipkg/uclibc.control
index d07ed90681..1cdfe157cb 100644
--- a/package/base-files/ipkg/uclibc.control
+++ b/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/package/kismet/Makefile b/package/kismet/Makefile
index 366fddddba..58e3f501ad 100644
--- a/package/kismet/Makefile
+++ b/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/package/kismet/ipkg/kismet.control b/package/kismet/ipkg/kismet.control
index ef77d815f5..193328563c 100644
--- a/package/kismet/ipkg/kismet.control
+++ b/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/package/nmap/Makefile b/package/nmap/Makefile
index 1aa8bed4c7..659bff9580 100644
--- a/package/nmap/Makefile
+++ b/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/package/nmap/ipkg/nmap.control b/package/nmap/ipkg/nmap.control
index ad2a984d12..56253fda0b 100644
--- a/package/nmap/ipkg/nmap.control
+++ b/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/package/samba/Makefile b/package/samba/Makefile
index 566e604a03..584ed9a044 100644
--- a/package/samba/Makefile
+++ b/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/package/samba/ipkg/samba.control b/package/samba/ipkg/samba.control
index 503ce7240c..c1cf603c4d 100644
--- a/package/samba/ipkg/samba.control
+++ b/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/toolchain/gcc/Makefile b/toolchain/gcc/Makefile
index dc7e02c7ae..f6f4acaab6 100644
--- a/toolchain/gcc/Makefile
+++ b/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