📄 uclibc.mk
字号:
############################################################### uClibc (the C library)##############################################################ifndef $(UCLIBC_CONFIG_FILE)ifeq ($(BR2_ENABLE_LOCALE),y)UCLIBC_CONFIG_FILE=toolchain/uClibc/uClibc.config-locale-$(BR2_UCLIBC_VERSION)elseUCLIBC_CONFIG_FILE=toolchain/uClibc/uClibc.config-$(BR2_UCLIBC_VERSION)endifendif#ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)## Be aware that this changes daily....#UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc#UCLIBC_SOURCE:=uClibc-$(strip $(subst ",, $(BR2_USE_UCLIBC_SNAPSHOT))).tar.bz2 "))#UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots#else# Note: 0.9.26 has known problems. So best use a snapshot until .27 is out.# Anticipate the change.VERSION:=$(shell echo $(BR2_UCLIBC_VERSION))UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(VERSION)UCLIBC_SOURCE:=uClibc-$(VERSION).tar.bz2UCLIBC_SITE:=$(DOWNLOAD_SITE)#endifUCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \ -e 's/i.86/i386/' \ -e 's/sparc.*/sparc/' \ -e 's/arm.*/arm/g' \ -e 's/m68k.*/m68k/' \ -e 's/ppc/powerpc/g' \ -e 's/v850.*/v850/g' \ -e 's/sh64/sh/' \ -e 's/sh[234].*/sh/' \ -e 's/mips.*/mips/' \ -e 's/mipsel.*/mips/' \ -e 's/cris.*/cris/' \)$(DL_DIR)/$(UCLIBC_SOURCE): mkdir -p $(DL_DIR) $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)$(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) mkdir -p $(TOOL_BUILD_DIR) bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - touch $(UCLIBC_DIR)/.unpackedUCLIBC_PATCH_LIST := $(wildcard $(BASE_DIR)/toolchain/uClibc/*_$(VERSION)*.patch).PHONY: uclibc-echo-patch-listuclibc-echo-patch-list: @echo $(UCLIBC_PATCH_LIST)$(UCLIBC_DIR)/.patched: $(UCLIBC_DIR)/.unpacked $(UCLIBC_PATCH_LIST) toolchain/patch-kernel.sh $(UCLIBC_DIR) toolchain/uClibc \*_$(VERSION)*.patch touch $@.PHONY: uclibc-patcheduclibc-patched: $(UCLIBC_DIR)/.patched$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.patched $(LINUX_HEADERS_DIR)/.configured $(SED) 's,^CROSS=.*,CROSS=$(TARGET_CROSS),g' $(UCLIBC_DIR)/Rules.mak cp $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.config $(SED) 's,^.*TARGET_$(UCLIBC_TARGET_ARCH).*,TARGET_$(UCLIBC_TARGET_ARCH)=y,g' \ $(UCLIBC_DIR)/.config $(SED) 's,^TARGET_ARCH.*,TARGET_ARCH=\"$(UCLIBC_TARGET_ARCH)\",g' $(UCLIBC_DIR)/.config $(SED) 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \ $(UCLIBC_DIR)/.config $(SED) 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \ $(UCLIBC_DIR)/.config $(SED) 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \ $(UCLIBC_DIR)/.config $(SED) 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \ $(UCLIBC_DIR)/.configifeq ($(BR2_LARGEFILE),y) $(SED) 's,^.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.configelse $(SED) 's,^.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' $(UCLIBC_DIR)/.configendif $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.configifeq ($(BR2_SOFT_FLOAT),y) $(SED) 's,.*HAS_FPU.*,HAS_FPU=n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,g' $(UCLIBC_DIR)/.configendif mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/include mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/lib mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/lib $(MAKE1) -C $(UCLIBC_DIR) \ PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ DEVEL_PREFIX=/usr/ \ RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \ HOSTCC="$(HOSTCC)" \ pregen install_dev; touch $(UCLIBC_DIR)/.configured$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET) $(MAKE1) -C $(UCLIBC_DIR) \ PREFIX= \ DEVEL_PREFIX=/ \ RUNTIME_PREFIX=/ \ HOSTCC="$(HOSTCC)" \ all touch -c $(UCLIBC_DIR)/lib/libc.a#$(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a# $(MAKE1) -C $(UCLIBC_DIR) \# PREFIX=$(STAGING_DIR)/ \# DEVEL_PREFIX=/ \# RUNTIME_PREFIX=/ \# install_runtime# $(MAKE1) -C $(UCLIBC_DIR) \# PREFIX=$(STAGING_DIR)/ \# DEVEL_PREFIX=/ \# RUNTIME_PREFIX=/ \# install_dev# # Build the host utils. Need to add an install target...# $(MAKE1) -C $(UCLIBC_DIR)/utils \# PREFIX=$(STAGING_DIR) \# HOSTCC="$(HOSTCC)" \# hostutils# touch -c $(STAGING_DIR)/lib/libc.aifneq ($(TARGET_DIR),)#$(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/lib/libc.a# $(MAKE1) -C $(UCLIBC_DIR) \# PREFIX=$(TARGET_DIR) \# DEVEL_PREFIX=/usr/ \# RUNTIME_PREFIX=/ \# install_runtime# touch -c $(TARGET_DIR)/lib/libc.so.0$(TARGET_DIR)/usr/bin/ldd: $(UCLIBC_DIR)/.configured $(MAKE1) -C $(UCLIBC_DIR) $(TARGET_CONFIGURE_OPTS) \ PREFIX=$(TARGET_DIR) utils install_utils touch -c $(TARGET_DIR)/usr/bin/lddUCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0uclibc-target-utils: $(TARGET_DIR)/usr/bin/lddTARGETS += uclibc-target-utilsendifuclibc-configured: $(UCLIBC_DIR)/.configured#uclibc: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/lib/libc.a \# $(UCLIBC_TARGETS)#uclibc: $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/lib/libc.a uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)uclibc-configured-source: uclibc-sourceuclibc-clean: -$(MAKE1) -C $(UCLIBC_DIR) clean rm -f $(UCLIBC_DIR)/.configuclibc-dirclean: rm -rf $(UCLIBC_DIR)############################################################### uClibc for the target just needs its header files# and whatnot installed.##############################################################ifneq ($(TARGET_DIR),)$(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a $(MAKE1) -C $(UCLIBC_DIR) \ PREFIX=$(TARGET_DIR) \ DEVEL_PREFIX=/usr/ \ RUNTIME_PREFIX=/ \ install_dev touch -c $(TARGET_DIR)/usr/lib/libc.auclibc_target: gcc uclibc $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldduclibc_target-clean: rm -f $(TARGET_DIR)/includeuclibc_target-dirclean: rm -f $(TARGET_DIR)/includeendif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -