X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/9c5c489cfea30a1aeedd001036211cef526c24c1..0e2d55e3e345e55a4c9c7335d42501301834d732:/package/base-files/Makefile?ds=sidebyside diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 4abbdf7ac..086dd32bd 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -324,12 +324,74 @@ 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),) + BUILD_LIBGCC:=$(if $(CONFIG_avr32)$(CONFIG_m68k)$(CONFIG_powerpc),,$(PKG_BUILD_DIR)/libgcc_s.so.*) +endif + +ifneq ($(BUILD_LIBGCC),) + define Build/Compile/uClibc + $(SCRIPT_DIR)/relink-lib.sh \ + "$(TARGET_CROSS)" \ + "$(wildcard $(TOOLCHAIN_DIR)/lib/libc_so.a)" \ + "$(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 \ + $(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))" \ + $(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))" \ + $(BUILD_LIBGCC) \ + -Wl,-soname=libm.so.0 + $(SCRIPT_DIR)/relink-lib.sh \ + "$(TARGET_CROSS)" \ + "$(wildcard $(TOOLCHAIN_DIR)/lib/libpthread-*.so)" \ + "$(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 \ + -ldl $(BUILD_LIBGCC) \ + -Wl,-soname=libpthread.so.0 + endef + define Build/Compile/libgcc + $(SCRIPT_DIR)/relink-lib.sh \ + "$(TARGET_CROSS)" \ + "$(LIBGCC_SO)" \ + "$(LIBGCC_A)" \ + "$(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)/ @@ -398,7 +460,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/libgcc/install $(INSTALL_DIR) $(1)/lib - $(CP) $(TOOLCHAIN_DIR)/lib/libgcc_s.so.* $(1)/lib/ + $(CP) $(PKG_BUILD_DIR)/libgcc_s.so.* $(1)/lib/ endef define Package/libssp/install @@ -450,6 +512,12 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so \ $(1)/lib/; \ done + + $(CP) \ + $(PKG_BUILD_DIR)/libuClibc-* \ + $(PKG_BUILD_DIR)/libm-* \ + $(PKG_BUILD_DIR)/libcrypt-* \ + $(1)/lib/ endef define Package/libc/install @@ -459,9 +527,9 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) define Package/libc/install_lib $(CP) $(filter-out %/libdl_pic.a %/libpthread_pic.a %/libresolv_pic.a,$(wildcard $(TOOLCHAIN_DIR)/lib/lib*.a)) $(1)/lib/ $(if $(wildcard $(TOOLCHAIN_DIR)/lib/libc_so.a),$(CP) $(TOOLCHAIN_DIR)/lib/libc_so.a $(1)/lib/libc_pic.a) - $(if $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map), \ - $(CP) $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a $(1)/lib/libgcc_s_pic.a; \ - $(CP) $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map $(1)/lib/libgcc_s_pic.map \ + $(if $(LIBGCC_MAP), \ + $(CP) $(LIBGCC_A) $(1)/lib/libgcc_s_pic.a; \ + $(CP) $(LIBGCC_MAP) $(1)/lib/libgcc_s_pic.map \ ) endef @@ -469,7 +537,7 @@ ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) $(INSTALL_DIR) $(1)/lib $(CP) \ $(TOOLCHAIN_DIR)/lib/libpthread.so.* \ - $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so \ + $(PKG_BUILD_DIR)/libpthread-$(LIBC_SO_VERSION).so \ $(1)/lib/ endef