#
-# Copyright (C) 2007-2012 OpenWrt.org
+# Copyright (C) 2007-2014 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
PKG_RELEASE:=1
PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
+PKG_LICENSE:=GPL-3.0-with-GCC-exception
include $(INCLUDE_DIR)/package.mk
endmenu
endef
+define Package/libatomic
+$(call Package/gcc/Default)
+ DEPENDS:=+libgcc
+ TITLE:=Atomic support library
+endef
+
+define Package/libatomic/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libatomic
+
+ config LIBATOMIC_ROOT_DIR
+ string
+ prompt "libatomic shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libatomic
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBATOMIC_FILE_SPEC
+ string
+ prompt "libatomic shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libatomic
+ default "./lib/libatomic.so.*"
+
+ endmenu
+endef
define Package/libssp
$(call Package/gcc/Default)
mkdir -p $(PKG_BUILD_DIR)
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.*)
+LIBGCC_A=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a))
+LIBGCC_MAP=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map))
+LIBGCC_SO=$(lastword $(wildcard $(TOOLCHAIN_DIR)/lib/libgcc_s.so.*))
ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
ifneq ($(if $(CONFIG_USE_UCLIBC),$(CONFIG_GCC_VERSION_LINARO)),)
BUILD_LIBGCC:=$(if $(CONFIG_avr32)$(CONFIG_m68k)$(CONFIG_powerpc),,$(PKG_BUILD_DIR)/libgcc_s.so.*)
"$(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/libatomic.so)" \
+ "$(wildcard $(TOOLCHAIN_DIR)/lib/libatomic.a)" \
+ "$(patsubst $(TOOLCHAIN_DIR)/lib/%,$(PKG_BUILD_DIR)/%,$(wildcard $(TOOLCHAIN_DIR)/lib/libatomic*.so))" \
+ $(BUILD_LIBGCC) \
+ -Wl,-soname=libatomic.so.0
$(SCRIPT_DIR)/relink-lib.sh \
"$(TARGET_CROSS)" \
"$(wildcard $(TOOLCHAIN_DIR)/lib/libm-*.so)" \
$(if $(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP) $(TOOLCHAIN_DIR)/lib/libgcc_s.so.* $(1)/lib/)
endef
+ define Package/libatomic/install
+ $(INSTALL_DIR) $(1)/lib
+ $(if $(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP) $(TOOLCHAIN_DIR)/lib/libatomic.so.* $(1)/lib/)
+ endef
+
define Package/libgfortran/install
$(INSTALL_DIR) $(1)/usr/lib
$(if $(CONFIG_TARGET_avr32)$(CONFIG_TARGET_coldfire),,$(CP) $(TOOLCHAIN_DIR)/lib/libgfortran.so.* $(1)/usr/lib/)
define Package/eglibc/install
$(CP) ./eglibc-files/* $(1)/
rm -f $(1)/etc/localtime
- ln -sf /tmp/localtime $(1)/etc/localtime
+ $(LN) /tmp/localtime $(1)/etc/localtime
$(INSTALL_DIR) $(1)/lib
$(CP) \
$(TOOLCHAIN_DIR)/lib/ld*.so.* \
$(TOOLCHAIN_DIR)/lib/libc.so.* \
$(TOOLCHAIN_DIR)/lib/libuClibc-$(LIBC_SO_VERSION).so \
$(1)/lib/
- for file in libcrypt libdl libm libutil; do \
+ for file in libatomic libcrypt libdl libm libutil; do \
$(CP) \
$(TOOLCHAIN_DIR)/lib/$$$$file.so.* \
$(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so \
$(1)/lib/
endef
+ LD_MUSL_NAME = $(notdir $(firstword $(wildcard $(TOOLCHAIN_DIR)/lib/libc.so*)))
+
define Package/musl/install
- $(INSTALL_DIR) $(1)/lib
+ $(INSTALL_DIR) $(1)/lib $(1)/usr/bin
$(CP) \
$(TOOLCHAIN_DIR)/lib/ld-musl-*.so* \
$(1)/lib/
$(CP) \
$(TOOLCHAIN_DIR)/lib/libc.so* \
$(1)/lib/
+ $(LN) ../../lib/$(LD_MUSL_NAME) $(1)/usr/bin/ldd
endef
define Package/libc/install
$(INSTALL_DIR) $(1)/lib
$(CP) \
$(TOOLCHAIN_DIR)/lib/libthread_db.so.* $(1)/lib
- ifeq ($(USE_UCLIBC),y)
+ ifeq ($(CONFIG_USE_UCLIBC),y)
$(CP) \
$(TOOLCHAIN_DIR)/lib/libthread_db-$(LIBC_SO_VERSION).so \
$(1)/lib/
$(eval $(call BuildPackage,libc))
$(eval $(call BuildPackage,libgcc))
+$(eval $(call BuildPackage,libatomic))
$(eval $(call BuildPackage,libssp))
$(eval $(call BuildPackage,libstdcpp))
$(eval $(call BuildPackage,libpthread))