Re: 2.6.18-rc3-mm1: O= builds broken

From: Sam Ravnborg
Date: Mon Aug 07 2006 - 15:57:57 EST


On Sun, Aug 06, 2006 at 10:23:21AM +0200, Adrian Bunk wrote:
> <-- snip -->
>
> $ make O=/home/bunk/linux/kernel-2.6/out/full/ oldconfig
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/basic/docproc
> GEN /home/bunk/linux/kernel-2.6/out/full/Makefile
> HOSTCC scripts/kconfig/conf.o
> HOSTCC scripts/kconfig/kxgettext.o
> HOSTCC scripts/kconfig/lxdialog/checklist.o
> /home/bunk/linux/kernel-2.6/linux-2.6.18-rc3-mm1/scripts/kconfig/lxdialog/checklist.c:325:
> fatal error: opening dependency file
> scripts/kconfig/lxdialog/.checklist.o.d: No such file or directory
> compilation terminated.
> make[2]: *** [scripts/kconfig/lxdialog/checklist.o] Error 1
> make[1]: *** [oldconfig] Error 2
> make: *** [oldconfig] Error 2
> $
>
If the lxdialog directory is missing then kbuild barfs out.
Fixed by followign patch that is already pushed out to my kbuild.git
tree. Thanks for the reports (all senders added to to:).

Sam

commit a886c8972f22033e720405ce4c4fed941b5eb406
Author: Sam Ravnborg <sam@xxxxxxxxxxxxxxxxx>
Date: Mon Aug 7 21:55:33 2006 +0200

kbuild: create output directory for hostprogs with O=.. build

hostprogs-y only supported creating output directory for the final
program. Extend this to also cover the situation where a .o
file (used when host program is made from compositie objects) is
locate in another directory.
First user of this is the built-in lxdialog that.

Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx>

diff --git a/scripts/Makefile.host b/scripts/Makefile.host
index 18ecd4d..aa208e8 100644
--- a/scripts/Makefile.host
+++ b/scripts/Makefile.host
@@ -32,11 +32,6 @@ # Note: Shared libraries consisting of C

__hostprogs := $(sort $(hostprogs-y)$(hostprogs-m))

-# hostprogs-y := tools/build may have been specified. Retreive directory
-host-objdirs := $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
-host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs))))
-
-
# C code
# Executables compiled from a single .c file
host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
@@ -65,6 +60,21 @@ host-cobjs := $(filter-out %.so,$(host-c
#Object (.o) files used by the shared libaries
host-cshobjs := $(sort $(foreach m,$(host-cshlib),$($(m:.so=-objs))))

+# output directory for programs/.o files
+# hostprogs-y := tools/build may have been specified. Retreive directory
+host-objdirs := $(foreach f,$(__hostprogs), $(if $(dir $(f)),$(dir $(f))))
+# directory of .o files from prog-objs notation
+host-objdirs += $(foreach f,$(host-cmulti), \
+ $(foreach m,$($(f)-objs), \
+ $(if $(dir $(m)),$(dir $(m)))))
+# directory of .o files from prog-cxxobjs notation
+host-objdirs += $(foreach f,$(host-cxxmulti), \
+ $(foreach m,$($(f)-cxxobjs), \
+ $(if $(dir $(m)),$(dir $(m)))))
+
+host-objdirs := $(strip $(sort $(filter-out ./,$(host-objdirs))))
+
+
__hostprogs := $(addprefix $(obj)/,$(__hostprogs))
host-csingle := $(addprefix $(obj)/,$(host-csingle))
host-cmulti := $(addprefix $(obj)/,$(host-cmulti))
@@ -75,6 +85,7 @@ host-cshlib := $(addprefix $(obj)/,$(hos
host-cshobjs := $(addprefix $(obj)/,$(host-cshobjs))
host-objdirs := $(addprefix $(obj)/,$(host-objdirs))

+$(warning host-objdirs=$(host-objdirs))
obj-dirs += $(host-objdirs)

#####

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/