Re: [patch] kbuild: building with a mostly-clean /usr/src/linux and O=

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 06, 2005 at 10:13:52PM +0200, Andreas Gruenbacher wrote:
> When compiling a kernel with a separate output directory,
> 
>   /var/tmp/kernel-obj>  cp $CONFIG_FILE .config
>   /var/tmp/kernel-obj>  make -C /usr/src/linux O=`pwd`
> 
> the main kernel Makefile first tries to make sure that /usr/src/linux
> is a clean source tree by checking if /usr/src/linux contains .config
> or the include/asm symlink. This test is more restrictive than
> necessary, and can be relaxed with a few additional changes so that
> /usr/src/linux may contain a few additional critical files, and may
> still be used as the kernel compilation source.
> 
> The additional files I have in mind are include/asm,
> include/linux/version.h, include/linux/autoconf.h, and perhaps also
> include/asm/offset.h. With these files present, it's possible to use
> kernel headers from user-space. I know that's evil and frowned upon,
> but it's still done once in a while, and sometimes it's the least
> painful path compared to the alternatives. The kbuild changes required
> to allow this IMHO are harmless; please consider for inclusion.

I've already included below patch from you.
It was included in -linus last night.

Do we really need more?

	Sam

diff-tree d80e22460968ec7986c82fd7d207ebe3de59e03d (from c5f75eca120de6587e67a1951ce3e6912e2c6879)
Author: Sam Ravnborg <sam@mars.(none)>
Date:   Thu Jul 14 20:22:39 2005 +0000

    kbuild: Don't fail if include/asm symlink exists
    
    From: Andreas Gruenbacher <[email protected]>
    
    We're having the following situation: There are user-space applications
    that include kernel headers directly. With a completely unconfigured
    /usr/src/linux tree, including most headers fails because essential
    files are not there:
    
    	include/asm
    	include/linux/autoconf.h
    	include/linux/version.h
    
    So we create these files. On the other hand, we want to use
    /usr/src/linux as read-only source for building kernels or additional
    modules. Now when building a kernel with a separate output directory
    (O=), there is a check in the main makefile for the include/asm symlink.
    There is no real need for this check: if we ensure that
    $(objdir)/include/asm is always created as the patch does,
    $(srctree)/include/asm becomes irrelevant.
    
    Signed-off-by: Sam Ravnborg <[email protected]>

diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -765,11 +765,11 @@ $(vmlinux-dirs): prepare-all scripts
 # 2) Create the include2 directory, used for the second asm symlink
 
 prepare2:
 ifneq ($(KBUILD_SRC),)
 	@echo '  Using $(srctree) as source for kernel'
-	$(Q)if [ -h $(srctree)/include/asm -o -f $(srctree)/.config ]; then \
+	$(Q)if [ -f $(srctree)/.config ]; then \
 		echo "  $(srctree) is not clean, please run 'make mrproper'";\
 		echo "  in the '$(srctree)' directory.";\
 		/bin/false; \
 	fi;
 	$(Q)if [ ! -d include2 ]; then mkdir -p include2; fi;
@@ -777,11 +777,12 @@ ifneq ($(KBUILD_SRC),)
 endif
 
 # prepare1 creates a makefile if using a separate output directory
 prepare1: prepare2 outputmakefile
 
-prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER
+prepare0: prepare1 include/linux/version.h $(objtree)/include/asm \
+                   include/config/MARKER
 ifneq ($(KBUILD_MODULES),)
 	$(Q)rm -rf $(MODVERDIR)
 	$(Q)mkdir -p $(MODVERDIR)
 endif
 
@@ -816,11 +817,11 @@ export CPPFLAGS_vmlinux.lds += -P -C -U$
 
 # 	FIXME: The asm symlink changes when $(ARCH) changes. That's
 #	hard to detect, but I suppose "make mrproper" is a good idea
 #	before switching between archs anyway.
 
-include/asm:
+$(objtree)/include/asm:
 	@echo '  SYMLINK $@ -> include/asm-$(ARCH)'
 	$(Q)if [ ! -d include ]; then mkdir -p include; fi;
 	@ln -fsn asm-$(ARCH) $@
 
 # 	Split autoconf.h into include/linux/config/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux