base-files: only relink libraries if the linaro toolchain is selected
[openwrt/svn-archive/archive.git] / package / base-files / Makefile
index 27916f3e6587086b4c8135bf22cec6e5a769a412..bf8d30d7b721ada5d3eb828d8880f1789864e3ae 100644 (file)
@@ -324,13 +324,16 @@ define Build/Prepare
        mkdir -p $(PKG_BUILD_DIR)
 endef
 
-define Build/Compile/Default
-endef
-
 LIBGCC_A=$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a)
 LIBGCC_MAP=$(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map)
-
+LIBGCC_SO=$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)
 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
+  ifneq ($(CONFIG_GCC_VERSION_LINARO),)
+    BUILD_LIBGCC:=$(if $(CONFIG_avr32)$(CONFIG_m68k)$(CONFIG_powerpc),,$(PKG_BUILD_DIR)/libgcc_s.so.*)
+  endif
+endif
+
+ifneq ($(BUILD_LIBGCC),)
   define Build/Compile/uClibc
        $(SCRIPT_DIR)/relink-lib.sh \
                "$(TARGET_CROSS)" \
@@ -338,20 +341,20 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libc_so.a)" \
                "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libuClibc-*.so))" \
                -Wl,-init,__uClibc_init -Wl,-soname=libc.so.0 \
-               $(PKG_BUILD_DIR)/libgcc_s.so.*
+               $(BUILD_LIBGCC)
        $(SCRIPT_DIR)/relink-lib.sh \
                "$(TARGET_CROSS)" \
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libcrypt-*.so)" \
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libcrypt_pic.a)" \
                "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libcrypt-*.so))" \
-               $(PKG_BUILD_DIR)/libgcc_s.so.* \
+               $(BUILD_LIBGCC) \
                -Wl,-soname=libcrypt.so.0
        $(SCRIPT_DIR)/relink-lib.sh \
                "$(TARGET_CROSS)" \
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libm-*.so)" \
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libm_pic.a)" \
                "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libm-*.so))" \
-               $(PKG_BUILD_DIR)/libgcc_s.so.* \
+               $(BUILD_LIBGCC) \
                -Wl,-soname=libm.so.0
        $(SCRIPT_DIR)/relink-lib.sh \
                "$(TARGET_CROSS)" \
@@ -359,25 +362,38 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
                "$(wildcard $(TOOLCHAIN_DIR)/lib/libpthread_so.a)" \
                "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libpthread-*.so))" \
                -Wl,-z,nodelete,-z,initfirst,-init=__pthread_initialize_minimal_internal \
-               $(PKG_BUILD_DIR)/libgcc_s.so.* \
+               -ldl $(BUILD_LIBGCC) \
                -Wl,-soname=libpthread.so.0
   endef
-
   define Build/Compile/libgcc
        $(SCRIPT_DIR)/relink-lib.sh \
                "$(TARGET_CROSS)" \
-               "$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*)" \
+               "$(LIBGCC_SO)" \
                "$(LIBGCC_A)" \
-               "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*))" \
+               "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(LIBGCC_SO))" \
                -Wl,--version-script=$(LIBGCC_MAP) -Wl,-soname=libgcc_s.so.1
   endef
+else
+  define Build/Compile/uClibc
+       $(CP) \
+               $(TOOLCHAIN_DIR)/lib/libuClibc-*.so \
+               $(TOOLCHAIN_DIR)/lib/libcrypt-*.so \
+               $(TOOLCHAIN_DIR)/lib/libm-*.so \
+               $(TOOLCHAIN_DIR)/lib/libpthread-*.so \
+               $(PKG_BUILD_DIR)/
+  endef
+  ifneq ($(LIBGCC_SO),)
+    define Build/Compile/libgcc
+       $(CP) $(LIBGCC_SO) $(PKG_BUILD_DIR)/
+    endef
+  endif
 endif
 
-define Build/Compile
-       $(call Build/Compile/Default)
+define Build/Compile/Default
        $(call Build/Compile/libgcc)
        $(call Build/Compile/$(LIBC))
 endef
+Build/Compile = $(Build/Compile/Default)
 
 define Package/base-files/install
        $(CP) ./files/* $(1)/