summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--toolchain/uClibc/Config.in18
-rw-r--r--toolchain/uClibc/uclibc.mk33
2 files changed, 47 insertions, 4 deletions
diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in
index a3d48e8c0..4af60ea4f 100644
--- a/toolchain/uClibc/Config.in
+++ b/toolchain/uClibc/Config.in
@@ -83,3 +83,21 @@ config BR2_UCLIBC_PROGRAM_INVOCATION
program_invocation_short_name strings. Some GNU packages
(like tar and coreutils) utilize these for extra useful
output, but in general are not required.
+
+config BR2_UCLIBC_INSTALL_TEST_SUITE
+ bool "Compile and install uClibc tests"
+ default n
+ select BR2_PACKAGE_MAKE
+ help
+ Enabling this option will compile and install the uClibc test suite.
+ This is useful if you want to check if the uClibc library is working
+ for your architecture and/or help developing uClibc.
+
+ The test suite will be installed into /root/uClibc directory. To run
+ the test suite enter the /root/uClibc/test directory and type
+ "make UCLIBC_ONLY=1 CC=/bin/true check".
+
+ See the /root/uClibc/test/README for additional information.
+
+ This is not needed at all for normal builds, so you can safely say no
+ if you do not plan to dig into your C library.
diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk
index e39e157c6..1043b0e52 100644
--- a/toolchain/uClibc/uclibc.mk
+++ b/toolchain/uClibc/uclibc.mk
@@ -549,6 +549,9 @@ endif
touch -c $@
UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0
+ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y)
+UCLIBC_TARGETS+=uclibc-test
+endif
endif
uclibc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS)
@@ -568,11 +571,11 @@ uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured
uclibc-configured-source: uclibc-source
-uclibc-clean:
+uclibc-clean: uclibc-test-clean
-$(MAKE1) -C $(UCLIBC_DIR) clean
rm -f $(UCLIBC_DIR)/.config
-uclibc-dirclean:
+uclibc-dirclean: uclibc-test-dirclean
rm -rf $(UCLIBC_DIR)
uclibc-target-utils:
@@ -580,6 +583,28 @@ uclibc-target-utils:
uclibc-target-utils-source: $(DL_DIR)/$(UCLIBC_SOURCE)
+$(UCLIBC_DIR)/test/unistd/errno:
+ $(MAKE) -C $(UCLIBC_DIR)/test \
+ ARCH_CFLAGS=-I$(STAGING_DIR)/include \
+ UCLIBC_ONLY=1 TEST_INSTALLED_UCLIBC=1 compile
+
+$(TARGET_DIR)/root/uClibc/test/unistd/errno: $(UCLIBC_DIR)/test/unistd/errno
+ mkdir -p $(TARGET_DIR)/root/uClibc
+ cp -rdpf $(UCLIBC_DIR)/test $(TARGET_DIR)/root/uClibc
+ $(INSTALL) $(UCLIBC_DIR)/Rules.mak $(TARGET_DIR)/root/uClibc
+ $(INSTALL) $(UCLIBC_DIR)/.config $(TARGET_DIR)/root/uClibc
+
+uclibc-test: uclibc $(TARGET_DIR)/root/uClibc/test/unistd/errno
+
+uclibc-test-source: uclibc-source
+
+uclibc-test-clean:
+ -$(MAKE) -C $(UCLIBC_DIR)/test clean
+ rm -rf $(TARGET_DIR)/root/uClibc
+
+uclibc-test-dirclean:
+ rm -rf $(TARGET_DIR)/root/uClibc
+
#############################################################
#
# uClibc for the target just needs its header files
@@ -615,11 +640,11 @@ endif
uclibc_target: cross_compiler uclibc $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
-uclibc_target-clean:
+uclibc_target-clean: uclibc-test-clean
rm -rf $(TARGET_DIR)/usr/include \
$(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
-uclibc_target-dirclean:
+uclibc_target-dirclean: uclibc-test-dirclean
rm -rf $(TARGET_DIR)/usr/include
endif