1 # Defaults, if not set in the platform config
2 ifeq ($(CONFIG_TARGET_64BIT
),y
)
4 #the version can be overriden by the target config
7 UCLIBC_CONFIG ?
= defconfig-x86_64
11 UCLIBC_CONFIG ?
= defconfig
14 ifeq ($(findstring defconfig
,$(UCLIBC_CONFIG
)),defconfig
)
15 ifeq ($(shell if
[ -f
$(PACKAGE_DIR
)/uclibc
/conf
/customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
) ]; then echo
1; fi
),1)
16 UCLIBC_CONFIG
= customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
)
20 UCLIBC_URL
=http
://www.uclibc.org
/downloads
21 UCLIBC_SOURCE
=uClibc-
$(UCLIBC_VER
).
tar.bz2
22 UCLIBC_DIR
=$(BUILD_DIR
)/uclibc
23 UCLIBC_SRC_DIR
=$(UCLIBC_DIR
)/uClibc
24 UCLIBC_STAMP_DIR
=$(UCLIBC_DIR
)/stamps
25 UCLIBC_LOG_DIR
=$(UCLIBC_DIR
)/logs
27 UCLIBC_PATCHES
=$(PACKAGE_DIR
)/uclibc
/patches
29 ifeq ($(CONFIG_VERBOSE
),y
)
30 UCLIBC_BUILD_LOG
=/dev
/stdout
31 UCLIBC_INSTALL_LOG
=/dev
/stdout
33 UCLIBC_BUILD_LOG
=$(UCLIBC_LOG_DIR
)/build.log
34 UCLIBC_INSTALL_LOG
=$(UCLIBC_LOG_DIR
)/install.log
37 CC_IPREFIX
:=$(shell $(CC
) --print-file-name
=include)
38 LIMITS_CFLAGS
= -I
$(dir $(CC_IPREFIX
))/include-fixed
-I
$(CC_IPREFIX
)
40 $(SOURCE_DIR
)/$(UCLIBC_SOURCE
):
41 @ echo
"Downloading uclibc..."
42 @ mkdir
-p
$(SOURCE_DIR
)
43 @ wget
$(WGET_Q
) -P
$(SOURCE_DIR
) $(UCLIBC_URL
)/$(UCLIBC_SOURCE
)
45 $(UCLIBC_STAMP_DIR
)/.unpacked
: $(SOURCE_DIR
)/$(UCLIBC_SOURCE
) |
$(UCLIBC_STAMP_DIR
) $(UCLIBC_DIR
)
46 @ echo
"Unpacking uclibc..."
47 @
tar -C
$(UCLIBC_DIR
) -jxf
$(SOURCE_DIR
)/$(UCLIBC_SOURCE
)
50 $(UCLIBC_STAMP_DIR
)/.patched
: $(UCLIBC_STAMP_DIR
)/.unpacked
51 @ echo
"Patching uclibc..."
52 @ cp
$(UCLIBC_PATCHES
)/librt
/* $(UCLIBC_SRC_DIR
)/librt
/
53 @ cp
$(UCLIBC_PATCHES
)/aio.h
$(UCLIBC_SRC_DIR
)/include/
54 @
#$(BIN_DIR)/doquilt.sh $(UCLIBC_SRC_DIR) $(UCLIBC_PATCHES)
57 $(UCLIBC_SRC_DIR
)/.config
: $(UCLIBC_STAMP_DIR
)/.patched
58 @ cat
$(PACKAGE_DIR
)/uclibc
/conf
/$(UCLIBC_CONFIG
) | sed
-e s
:^KERNEL_HEADERS
=.
*:KERNEL_HEADERS
=\"$(KERNEL_SRC_DIR
)/include\": > $(UCLIBC_SRC_DIR
)/.config
60 $(UCLIBC_SRC_DIR
)/lib
/libc.a
: $(UCLIBC_SRC_DIR
)/.config
61 @ echo
"Building uclibc..."
62 ifneq ($(findstring defconfig
,$(UCLIBC_CONFIG
)),defconfig
)
63 @ echo
"Using custom config $(PACKAGE_DIR)/uclibc/conf/$(UCLIBC_CONFIG)"
65 @
( unset CFLAGS
; unset LDFLAGS
; \
66 $(MAKE
) $(PARALLEL_MAKE
) -C
$(UCLIBC_SRC_DIR
) TARGET_ARCH
="$(UCLIBC_ARCH)" \
67 CC
="$(CC) $(CROSS_CFLAGS) $(LIMITS_CFLAGS)" LD
="$(LD) $(CROSS_LDFLAGS)" \
68 HOSTCC
="$(HOST_CC)" KERNEL_SOURCE
="$(KERNEL_SRC_DIR)" \
70 SHARED_LIB_LOADER_PATH
="/lib" \
71 SHARED_LIB_LOADER_PREFIX
="/lib" \
72 all > $(UCLIBC_BUILD_LOG
) 2>&1)
73 @ mkdir
-p
$(OUTPUT_DIR
)/config
/uclibc
74 @ cp
$(UCLIBC_SRC_DIR
)/.config
$(OUTPUT_DIR
)/config
/uclibc
/
76 $(STAGING_DIR
)/lib
/libc.a
: $(UCLIBC_SRC_DIR
)/lib
/libc.a
77 @
$(MAKE
) -C
$(UCLIBC_SRC_DIR
) \
79 DEVEL_PREFIX
=$(STAGING_DIR
)/ \
80 RUNTIME_PREFIX
=$(STAGING_DIR
)/ \
81 install_runtime install_dev
> $(UCLIBC_INSTALL_LOG
) 2>&1
83 $(UCLIBC_SRC_DIR
)/utils
/ldd
: $(UCLIBC_SRC_DIR
)/lib
/libc.a
84 @
$(MAKE
) -C
$(UCLIBC_SRC_DIR
)/utils ldd
86 $(STAGING_DIR
)/bin
/ldd
: $(UCLIBC_SRC_DIR
)/utils
/ldd
87 @
install -m
755 -d
$(STAGING_DIR
)/bin
88 @
install -m
755 $< $@
90 $(UCLIBC_STAMP_DIR
) $(UCLIBC_LOG_DIR
) $(UCLIBC_DIR
):
93 uclibc
: $(UCLIBC_STAMP_DIR
) $(UCLIBC_LOG_DIR
) $(STAGING_DIR
)/lib
/libc.a
96 @ echo
"Cleaning uclibc..."
97 ifneq ($(wildcard $(UCLIBC_SRC_DIR
)/Makefile
),)
98 @
$(MAKE
) -C
$(UCLIBC_SRC_DIR
) clean > /dev
/null
2>&1
102 @
rm -rf
$(UCLIBC_DIR
)/*
105 @ echo
"Package: uclibc"
106 @ echo
"Source: $(UCLIBC_URL)/$(UCLIBC_SOURCE)"
109 uclibc-extract
: $(UCLIBC_STAMP_DIR
)/.unpacked
111 uclibc-config
: |
$(UCLIBC_SRC_DIR
)/.config
112 ifeq ($(shell if
[ -f
$(PACKAGE_DIR
)/uclibc
/conf
/customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
) ]; then echo
1; fi
),1)
113 @ cp
-f
$(PACKAGE_DIR
)/uclibc
/conf
/customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
) $(UCLIBC_SRC_DIR
)/.config
115 ifeq (uclibc
,$(filter uclibc
,$(PAYLOAD-y
)))
116 @ echo
"Configure uclibc..."
117 @
$(MAKE
) -C
$(UCLIBC_SRC_DIR
) TARGET_ARCH
="$(UCLIBC_ARCH)" menuconfig
119 ifeq ($(shell if
[ -f
$(PACKAGE_DIR
)/uclibc
/conf
/customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
) ]; then echo
1; fi
),1)
120 @ echo
"Found an existing custom configuration file:"
121 @ echo
" $(PACKAGE_DIR)/uclibc/conf/customconfig--$(PAYLOAD)--$(UCLIBC_ARCH)--$(COREBOOT_VENDOR)-$(COREBOOT_BOARD)"
122 @ echo
"I've copied it back to the source directory for modification."
123 @ echo
"Remove the above file and re-run this command if you want to create a new custom configuration from scratch for this payload/board."
126 @ cp
-f
$(UCLIBC_SRC_DIR
)/.config
$(PACKAGE_DIR
)/uclibc
/conf
/customconfig--
$(PAYLOAD
)--$(UCLIBC_ARCH
)--$(COREBOOT_VENDOR
)-$(COREBOOT_BOARD
)
127 @ echo
"Your custom uclibc config file has been saved as $(PACKAGE_DIR)/uclibc/conf/customconfig--$(PAYLOAD)--$(UCLIBC_ARCH)--$(COREBOOT_VENDOR)-$(COREBOOT_BOARD)."
130 @ echo
"Your payload does not require uclibc."