include $(TOPDIR)/rules.mk
PKG_NAME:=toolchain
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_LICENSE:=GPL-3.0-with-GCC-exception
define Package/libgcc
$(call Package/gcc/Default)
TITLE:=GCC support library
+ ABI_VERSION:=1
endef
define Package/libgcc/config
$(call Package/gcc/Default)
DEPENDS:=+libgcc
TITLE:=Atomic support library
+ ABI_VERSION:=1
endef
define Package/libatomic/config
define Package/libssp
$(call Package/gcc/Default)
- DEPENDS+=@SSP_SUPPORT
+ DEPENDS+=@GCC_LIBSSP
TITLE:=GCC support library
endef
$(call Package/gcc/Default)
NAME:=libstdc++
TITLE:=GNU Standard C++ Library v3
+ ABI_VERSION:=6
endef
define Package/libstdcpp/config
endef
+define Package/libasan
+$(call Package/gcc/Default)
+ NAME:=libasan
+ TITLE:=Runtime library for AddressSanitizer in GCC
+ DEPENDS:=@USE_GLIBC +librt +libstdcpp
+ ABI_VERSION:=5
+endef
+
+define Package/libasan/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libasan
+
+ config LIBASAN_ROOT_DIR
+ string
+ prompt "libasan shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libasan
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBASAN_FILE_SPEC
+ string
+ prompt "libasan shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libasan
+ default "./lib/libasan.so.*"
+
+ endmenu
+endef
+
+
+define Package/libtsan
+$(call Package/gcc/Default)
+ NAME:=libtsan
+ TITLE:=Runtime library for ThreadSanitizer in GCC
+ DEPENDS:=@USE_GLIBC +librt +libstdcpp
+ ABI_VERSION:=0
+endef
+
+define Package/libtsan/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libtsan
+
+ config LIBTSAN_ROOT_DIR
+ string
+ prompt "libtsan shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libtsan
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBTSAN_FILE_SPEC
+ string
+ prompt "libtsan shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libtsan
+ default "./lib/libtsan.so.*"
+
+ endmenu
+endef
+
+
+define Package/liblsan
+$(call Package/gcc/Default)
+ NAME:=liblsan
+ TITLE:=Runtime library for LeakSanitizer in GCC
+ DEPENDS:=@USE_GLIBC +librt +libstdcpp
+ ABI_VERSION:=0
+endef
+
+define Package/liblsan/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_liblsan
+
+ config LIBLSAN_ROOT_DIR
+ string
+ prompt "liblsan shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_liblsan
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBLSAN_FILE_SPEC
+ string
+ prompt "liblsan shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_liblsan
+ default "./lib/liblsan.so.*"
+
+ endmenu
+endef
+
+
+define Package/libubsan
+$(call Package/gcc/Default)
+ NAME:=libubsan
+ TITLE:=Runtime library for UndefinedBehaviorSanitizer in GCC
+ DEPENDS:=@USE_GLIBC +librt +libstdcpp
+ ABI_VERSION:=1
+endef
+
+define Package/libubsan/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libubsan
+
+ config LIBUBSAN_ROOT_DIR
+ string
+ prompt "libubsan shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libubsan
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBUBSAN_FILE_SPEC
+ string
+ prompt "libubsan shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libubsan
+ default "./lib/libubsan.so.*"
+
+ endmenu
+endef
+
+
define Package/libc/Default
SECTION:=libs
CATEGORY:=Base system
string
prompt "libc shared library files (use wildcards)"
depends on EXTERNAL_TOOLCHAIN && PACKAGE_libc
- default "./lib/ld{-*.so,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*}"
+ default "./lib/ld{*.so*,-linux*.so.*} ./lib/lib{anl,c,cidn,crypt,dl,m,nsl,nss_dns,nss_files,resolv,util}{-*.so,.so.*,.so}"
endmenu
endef
TITLE:=POSIX thread library debugging support
endef
+define Package/libthread-db/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db
+
+ config LIBTHREAD_DB_ROOT_DIR
+ string
+ prompt "POSIX thread debugging shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBTHREAD_DB_FILE_SPEC
+ string
+ prompt "POSIX thread debugging shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libthread-db
+ default "./lib/libthread_db{-*.so,.so.*}"
+
+ endmenu
+endef
+
define Package/librt
$(call Package/libc/Default)
TITLE:=POSIX.1b RealTime extension library
endmenu
endef
+define Package/libgomp
+$(call Package/gcc/Default)
+ TITLE:=OpenMP support library
+endef
+
+define Package/libgomp/config
+ menu "Configuration"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp
+
+ config LIBGOMP_ROOT_DIR
+ string
+ prompt "libgomp shared library base directory"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp
+ default TOOLCHAIN_ROOT if !NATIVE_TOOLCHAIN
+ default "/" if NATIVE_TOOLCHAIN
+
+ config LIBGOMP_FILE_SPEC
+ string
+ prompt "libgomp shared library files (use wildcards)"
+ depends on EXTERNAL_TOOLCHAIN && PACKAGE_libgomp
+ default "./lib/libgomp.so*"
+
+ endmenu
+endef
+
+
define Package/ldd
$(call Package/libc/Default)
DEPENDS:=@!USE_MUSL
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),)
$(CP) $(TOOLCHAIN_DIR)/lib/libstdc++.so.* $(1)/usr/lib/
endef
+ define Package/libasan/install
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(TOOLCHAIN_DIR)/lib/libasan.so.* $(1)/lib/
+ endef
+
+ define Package/libtsan/install
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(TOOLCHAIN_DIR)/lib/libtsan.so.* $(1)/lib/
+ endef
+
+ define Package/liblsan/install
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(TOOLCHAIN_DIR)/lib/liblsan.so.* $(1)/lib/
+ endef
+
+ define Package/libubsan/install
+ $(INSTALL_DIR) $(1)/lib
+ $(CP) $(TOOLCHAIN_DIR)/lib/libubsan.so.* $(1)/lib/
+ endef
+
define Package/glibc/install
$(CP) ./glibc-files/* $(1)/
rm -f $(1)/etc/localtime
$(TOOLCHAIN_DIR)/lib/libc.so.* \
$(TOOLCHAIN_DIR)/lib/libuClibc-$(LIBC_SO_VERSION).so \
$(1)/lib/
- for file in libcrypt libdl libm libutil; do \
- $(CP) \
- $(TOOLCHAIN_DIR)/lib/$$$$file.so.* \
- $(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/libpthread/install
$(INSTALL_DIR) $(1)/lib
- ifneq ($(CONFIG_USE_MUSL),y)
+ ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y)
$(CP) \
$(TOOLCHAIN_DIR)/lib/libpthread.so.* \
$(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so \
define Package/librt/install
$(INSTALL_DIR) $(1)/lib
- ifneq ($(CONFIG_USE_MUSL),y)
+ ifneq ($(CONFIG_USE_MUSL)$(CONFIG_USE_UCLIBC),y)
$(CP) \
$(TOOLCHAIN_DIR)/lib/librt.so.* \
$(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so \
exit 0
endef
+ define Package/libasan/install
+ for file in $(call qstrip,$(CONFIG_LIBASAN_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBASAN_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
+ define Package/libtsan/install
+ for file in $(call qstrip,$(CONFIG_LIBTSAN_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBTSAN_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
+ define Package/liblsan/install
+ for file in $(call qstrip,$(CONFIG_LIBLSAN_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBLSAN_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
+ define Package/libubsan/install
+ for file in $(call qstrip,$(CONFIG_LIBUBSAN_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBUBSAN_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
define Package/libc/install
for file in $(call qstrip,$(CONFIG_LIBC_FILE_SPEC)); do \
$(INSTALL_DIR) $(1)/lib ; \
exit 0
endef
+ define Package/libthread-db/install
+ for file in $(call qstrip,$(CONFIG_LIBTHREAD_DB_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBTHREAD_DB_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
define Package/librt/install
for file in $(call qstrip,$(CONFIG_LIBRT_FILE_SPEC)); do \
$(INSTALL_DIR) $(1)/lib ; \
exit 0
endef
+ define Package/libgomp/install
+ for file in $(call qstrip,$(CONFIG_LIBGOMP_FILE_SPEC)); do \
+ $(INSTALL_DIR) $(1)/lib ; \
+ $(CP) $(call qstrip,$(CONFIG_LIBGOMP_ROOT_DIR))/$$$$file $(1)/lib/ ; \
+ done ; \
+ exit 0
+ endef
+
define Package/ldd/install
for file in $(call qstrip,$(CONFIG_LDD_FILE_SPEC)); do \
dir=`dirname $$$$file` ; \
$(eval $(call BuildPackage,libatomic))
$(eval $(call BuildPackage,libssp))
$(eval $(call BuildPackage,libstdcpp))
+$(eval $(call BuildPackage,libasan))
+$(eval $(call BuildPackage,libtsan))
+$(eval $(call BuildPackage,liblsan))
+$(eval $(call BuildPackage,libubsan))
$(eval $(call BuildPackage,libpthread))
$(eval $(call BuildPackage,libthread-db))
$(eval $(call BuildPackage,librt))
$(eval $(call BuildPackage,libgfortran))
+$(eval $(call BuildPackage,libgomp))
$(eval $(call BuildPackage,ldd))
$(eval $(call BuildPackage,ldconfig))