# # Copyright (C) 2007-2012 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # FORCE_USE_EXTERNAL_KERNAL_TOOLCHAIN=y include $(TOPDIR)/rules.mk PKG_NAME:=external-kernel-toolchain PKG_RELEASE:=1 PKG_MAINTAINER:=Felix Fietkau include $(INCLUDE_DIR)/package.mk LIBC_VERSION:=$(call qstrip,$(CONFIG_KERNEL_TOOLCHAIN_GLIBC_VERSION)) LIBGCC_VERSION:=$(call qstrip,$(CONFIG_KERNEL_TOOLCHAIN_GCC_VERSION)) LIB_SUFFIX:=64 define Package/external-kernel-gcc/Default SECTION:=libs CATEGORY:=Base system URL:=http://gcc.gnu.org/ VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE) DEPENDS:=@EXTERNAL_KERNEL_TOOLCHAIN endef define Package/external-kernel-libgcc $(call Package/external-kernel-gcc/Default) TITLE:=External kernel gcc support library endef define Package/external-kernel-libgcc/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libgcc config EXTERNAL_KERNAL_LIBGCC_FILE_SPEC string prompt "libgcc shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libgcc default "./lib/libgcc_s.so.*" endmenu endef define Package/external-kernel-libssp $(call Package/external-kernel-gcc/Default) TITLE:=external-kernel-gcc support library endef define Package/external-kernel-libssp/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libssp config EXTERNAL_KERNAL_LIBSSP_FILE_SPEC string prompt "libssp shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libssp default "./lib/libssp.so.*" endmenu endef define Package/external-kernel-libstdcpp $(call Package/external-kernel-gcc/Default) NAME:=external-kernel-libstdc++ TITLE:=GNU Standard C++ Library v3 endef define Package/external-kernel-libstdcpp/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libstdcpp config EXTERNAL_KERNAL_LIBSTDCPP_FILE_SPEC string prompt "libstdc++ shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libstdcpp default "./lib/libstdc++.so.*" endmenu endef define Package/external-kernel-libc/Default SECTION:=libs CATEGORY:=Base system VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE) DEPENDS:=+external-kernel-libgcc URL:=$(LIBC_URL) PKG_FLAGS:=hold essential endef define Package/external-kernel-libc $(call Package/external-kernel-libc/Default) TITLE:=External kernel C library endef define Package/external-kernel-libc/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libc config EXTERNAL_KERNAL_LIBC_FILE_SPEC string prompt "external-kernel-libc shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libc default "./lib/lib{anl,c,uClibc,cidn,crypt,dl,m,nsl,nss_dns,nss_files,util}{-*.so,.so.*}" endmenu endef define Package/external-kernel-libpthread $(call Package/external-kernel-libc/Default) TITLE:=POSIX thread library endef define Package/external-kernel-libpthread/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libpthread config EXTERNAL_KERNAL_LIBPTHREAD_FILE_SPEC string prompt "external-kernel-libpthread shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libpthread default "./lib/libpthread{-*.so,.so.*}" endmenu endef define Package/external-kernel-libthread-db $(call Package/external-kernel-libc/Default) TITLE:=POSIX thread library debugging support endef define Package/external-kernel-librt $(call Package/external-kernel-libc/Default) TITLE:=POSIX.1b RealTime extension library DEPENDS:=+external-kernel-libpthread +external-kernel-libc endef define Package/external-kernel-librt/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-librt config EXTERNAL_KERNAL_LIBRT_FILE_SPEC string prompt "external-kernel-librt shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-librt default "./lib/librt{-*.so,.so.*}" endmenu endef define Package/external-kernel-libresolv $(call Package/external-kernel-libc/Default) TITLE:=resolver library endef define Package/external-kernel-libresolv/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libresolv config EXTERNAL_KERNAL_LIBRESOLV_FILE_SPEC string prompt "external-kernel-libresolv shared library files (use wildcards)" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-libresolv default "./lib/libresolv{-*.so,.so.*}" endmenu endef define Package/external-kernel-ldd $(call Package/external-kernel-libc/Default) SECTION:=utils CATEGORY:=Utilities TITLE:=LDD trace utility endef define Package/external-kernel-ldd/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-ldd config EXTERNAL_KERNAL_LDD_FILE_SPEC string prompt "ldd trace utility file" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-ldd default "./usr/bin/ldd" endmenu endef define Package/external-kernel-ldconfig $(call Package/external-kernel-libc/Default) DEPENDS:=@EXTERNAL_KERNEL_TOOLCHAIN SECTION:=utils CATEGORY:=Utilities TITLE:=Shared library path configuration endef define Package/external-kernel-ldconfig/config menu "Configuration" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-ldconfig config EXTERNAL_KERNAL_LDCONFIG_FILE_SPEC string prompt "ldconfig file" depends on EXTERNAL_KERNEL_TOOLCHAIN && PACKAGE_external-kernel-ldconfig default "./sbin/ldconfig" endmenu endef define Build/Prepare mkdir -p $(PKG_BUILD_DIR) endef LIBGCC_A=$(wildcard $(KERNEL_TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc_pic.a) LIBGCC_MAP=$(wildcard $(KERNEL_TOOLCHAIN_DIR)/lib/gcc/*/*/libgcc.map) LIBGCC_SO=$(wildcard $(KERNEL_TOOLCHAIN_DIR)/lib/libgcc_s.so.*) define Build/Compile/Default ifneq ("$(LIBGCC_SO)","") $(CP) $(LIBGCC_SO) $(PKG_BUILD_DIR)/ endif endef Build/Compile = $(Build/Compile/Default) define Package/external-kernel-libgcc/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBGCC_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-libssp/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBSSP_FILE_SPEC)); do \ dir=`dirname $$$$file` ; \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-libstdcpp/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBSTDCPP_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-libc/install $(INSTALL_DIR) $(1)/lib ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),) cp $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/lib/ld-linux*.so.* $(1)/lib/ else cp $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$(call qstrip,$(CONFIG_KERNEL_TOOLCHAIN_PREFIX))/sysroot/lib/ld-linux*.so.* $(1)/lib/ endif for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBC_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-libpthread/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBPTHREAD_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-librt/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBRT_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-libresolv/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LIBRESOLV_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-ldd/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LDD_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef define Package/external-kernel-ldconfig/install for file in $(call qstrip,$(CONFIG_EXTERNAL_KERNAL_LDCONFIG_FILE_SPEC)); do \ $(INSTALL_DIR) $(1)/lib$(LIB_SUFFIX) ; \ $(CP) $(call qstrip,$(KERNEL_TOOLCHAIN_DIR))/$$$$file $(1)/lib$(LIB_SUFFIX)/ ; \ done ; \ exit 0 endef $(eval $(call BuildPackage,external-kernel-libc)) $(eval $(call BuildPackage,external-kernel-libgcc)) $(eval $(call BuildPackage,external-kernel-libssp)) $(eval $(call BuildPackage,external-kernel-libstdcpp)) $(eval $(call BuildPackage,external-kernel-libpthread)) $(eval $(call BuildPackage,external-kernel-libthread-db)) $(eval $(call BuildPackage,external-kernel-librt)) $(eval $(call BuildPackage,external-kernel-libresolv)) $(eval $(call BuildPackage,external-kernel-ldd)) $(eval $(call BuildPackage,external-kernel-ldconfig))