Thank you, Bernhard. I came across a discussion on similar issue at http://www.mail-archive.com/[email protected]/msg04245.html
I like to understand what is the purpose of $(KERNEL_HEADERS). In my case, KERNEL_HEADERS was used to point to what my own kernel header files (may be slightly different from installed one for debugging purpose). Those kernel header files were used to build my own lib*.so based on different .config in uClibc (from that was used to build cross toolchain), and install my customized *.so onto target. I have to use $(KERNEL_HEAERS) to point to both "linux/include" and "linux/arch/mips/include" since "linux/arch/mips/include" has unistd.h that will be used to generate syscall table in uClibc. In other words, if KERNEL_HEADERS has to be set to point to installed kernel headers, then there is no need for this option, and there is no need to generate install_dir since you can simply create a symlink to sysroot directory as install_dir. How do you think? Jian From: Bernhard Reutner-Fischer [mailto:[email protected]] Sent: Saturday, April 09, 2011 1:43 PM To: Jian Peng; [email protected] Subject: Re: patch to fix build issue in uClibc testsuite Jian Peng <[email protected]> wrote: In test/Rules.mak, $(KERNEL_HEADERS) will be checked and used to generate $(KERNEL_INCLUDES) based on absolute or relative path. The problem is that this check assumes that $(KERNEL_HEADERS) is single word like /user/me/kernel/include, in case that it is "/user/me/kernel/include -I/user/me/kernel/arch/mips/include", $(KERNEL_INCLUDES) will be wrong and leads to unable to find out kernel header files in build process. Here I reworked the logic to check each path in $(KERNEL_HEADERS) individually, then combine them. Signed-off-by: Jian Peng <[email protected]> --- test/Rules.mak | 10 +++------- 1 files changed, 3 insertions(+), 7 deletions(-) diff --git a/test/Rules.mak b/test/Rules.mak index 2131a7b..e144b0f 100644 --- a/test/Rules.mak +++ b/test/Rules.mak @@ -46,14 +46,10 @@ export TARGET_ARCH RM_R = $(Q)$(RM) -r LN_S = $(Q)$(LN) -fs +# handle absolute and relative path on each path in $(KERNEL_HEADERS) separately ifneq ($(KERNEL_HEADERS),) -ifeq ($(patsubst /%,/,$(KERNEL_ HEADERS)),/) -# Absolute path in KERNEL_HEADERS -KERNEL_INCLUDES += -I$(KERNEL_HEADERS) -else -# Relative path in KERNEL_HEADERS -KERNEL_INCLUDES += -I$(top_builddir)$(KERNEL_HEADERS) -endif +KERNEL_HEADERS := $(patsubst -I%,%,$(KERNEL_HEADERS)) +KERNEL_INCLUDES += $(addprefix -I,$(foreach i,$(KERNEL_HEADERS),$(patsubst .%,$(top_builddir).%,$i))) endif XCOMMON_CFLAGS := -I$(top_builddir)test -D_GNU_SOURCE -- 1.7.4.1 ________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc Hi, You need to use installed kernel headers. _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
