If uClibc is built outside of the source tree, then there is an error:
make[1]: *** No rule to make target `/home/akolesov/build-uclibc/extra/locale', needed by `/home/akolesov/build-uclibc/extra/locale/gen_wc8bit'. Stop.
The rule to create $(top_builddir)/extra/locale is defined in top-level Makefile.in. Same Makefile.in also invokes extra/locale/Makefile.in to build various tools. Those tools have $(top_builddir)/extra/locale as a dependency, but this makefile doesn't include top-level Makefile.in, therefore rule to create dependant directory is absent in this submake invocation.
To avoid this problem this patch defines $(top_builddir)/extra/locale as a dependency for "headers" target, which invokes extra/locale/Makefile.in, thus making sure that prerequisite directory is created in advance.
This problem doesn't occur when building in the source tree, since $(top_builddir) == $(top_srcdir), so this directory already exists.
Signed-off-by: Anton Kolesov Anton.Kolesov@synopsys.com --- Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.in b/Makefile.in index 76008a2..98c6d6d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -183,7 +183,7 @@ menuconfig-clean-y: HEADERCLEAN_config # libc/sysdeps/linux/Makefile.commonarch to headers-y headers-y += $(target-headers-sysdep)
-headers: $(top_builddir)include/bits/uClibc_config.h | subdirs +headers: $(top_builddir)include/bits/uClibc_config.h | subdirs $(top_builddir)extra/locale $(Q)$(if $(UCLIBC_HAS_LOCALE),$(MAKE) -C extra/locale locale_headers)
subdirs: $(addprefix $(top_builddir),$(subdirs))