All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaud Lacombe <lacombar@gmail.com>
To: linux-kbuild@vger.kernel.org, Nicolas Pitre <nico@fluxnic.net>
Cc: Arnaud Lacombe <lacombar@gmail.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC] Kbuild: allow code re-use across different directories
Date: Mon, 29 Aug 2011 20:31:15 -0400	[thread overview]
Message-ID: <CACqU3MVrSV-Qp7mC4iN_viMHz=2-cGPaqNY04eokYkVoE_pSuw@mail.gmail.com> (raw)
In-Reply-To: <1313800642-32418-1-git-send-email-lacombar@gmail.com>

Hi,

On Fri, Aug 19, 2011 at 8:37 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> Hi folks,
>
> The attached patch modify Kbuild to allow to directly re-use code in multiple
> directory without having to go through a copy. Technically, it changes Kbuild to
> use by default the VPATH feature of GNU make and provides accessors for Makefile
> to change it indirectly.
>
> Considering:
>
> arch/foo/lib:
> fancy.c
>
> We want to be able to build it with -DPANTS=32 in the kernel, but the
> bootloader requires -DPANTS_SIZE=30.
>
> Currently we would do, either:
>
> arch/foo/lib/Makefile
> LDFLAGS_fancy.o := -DPANTS=32
> obj-y += fancy.o
>
> and, either:
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> $(obj)/fancy.c: $(srctree)/arch/foo/lib/fancy.c
>        $(call cmd,shipped)
>
> or
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> $(obj)/fancy.o: $(srctree)/arch/foo/lib/fancy.c
>        $(call cmd,cc_c_o)
>
> The former implies an extra copy of the source file, the latter expose Kbuild
> internal function.
>
> With the attached patch, we would do:
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> vpath-y += $(srctree)/arch/foo/lib
>
> and let GNU make do the job.
>
Nicolas, I guess you were the one who was interested for a generic way
to do such code re-use, did you had any chance to test the quoted
patch ?

Thanks,
 - Arnaud


> Comments welcome,
>  - Arnaud
>
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
>
> ---
>  Makefile               |    5 +++--
>  scripts/Makefile.build |   24 +++++++++++++++---------
>  scripts/Makefile.lib   |   17 ++++++++++++-----
>  3 files changed, 30 insertions(+), 16 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index b4ca4e1..db7f7f5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -154,9 +154,10 @@ objtree            := $(CURDIR)
>  src            := $(srctree)
>  obj            := $(objtree)
>
> -VPATH          := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
> +KBUILD_VPATH   := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
> +VPATH          := $(KBUILD_VPATH)
>
> -export srctree objtree VPATH
> +export srctree objtree KBUILD_VPATH
>
>
>  # SUBARCH tells the usermode build what the underlying arch is.  That is set
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index a0fd502..ac539d7 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -18,6 +18,8 @@ always :=
>  targets :=
>  subdir-y :=
>  subdir-m :=
> +vpath-y :=
> +vpath-m :=
>  EXTRA_AFLAGS   :=
>  EXTRA_CFLAGS   :=
>  EXTRA_CPPFLAGS :=
> @@ -37,6 +39,7 @@ include scripts/Kbuild.include
>
>  # For backward compatibility check that these variables do not change
>  save-cflags := $(CFLAGS)
> +save-vpath := $(VPATH)
>
>  # The filename Kbuild has precedence over Makefile
>  kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
> @@ -48,6 +51,9 @@ ifeq ($(KBUILD_NOPEDANTIC),)
>         ifneq ("$(save-cflags)","$(CFLAGS)")
>                 $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
>         endif
> +        ifneq ("$(save-vpath)","$(VPATH)")
> +                $(error VPATH was changed in "$(kbuild-file)". Please uses vpath-y)
> +        endif
>  endif
>
>  #
> @@ -198,13 +204,13 @@ $(multi-objs-y:.o=.lst) : modname = $(modname-multi)
>  quiet_cmd_cc_s_c = CC $(quiet_modtag)  $@
>  cmd_cc_s_c       = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
>
> -$(obj)/%.s: $(src)/%.c FORCE
> +$(obj)/%.s: %.c FORCE
>        $(call if_changed_dep,cc_s_c)
>
>  quiet_cmd_cc_i_c = CPP $(quiet_modtag) $@
>  cmd_cc_i_c       = $(CPP) $(c_flags)   -o $@ $<
>
> -$(obj)/%.i: $(src)/%.c FORCE
> +$(obj)/%.i: %.c FORCE
>        $(call if_changed_dep,cc_i_c)
>
>  cmd_gensymtypes =                                                           \
> @@ -219,7 +225,7 @@ cmd_cc_symtypes_c =                                                         \
>     $(call cmd_gensymtypes,true,$@) >/dev/null;                             \
>     test -s $@ || rm -f $@
>
> -$(obj)/%.symtypes : $(src)/%.c FORCE
> +$(obj)/%.symtypes : %.c FORCE
>        $(call cmd,cc_symtypes_c)
>
>  # C (.c) files
> @@ -301,13 +307,13 @@ define rule_cc_o_c
>  endef
>
>  # Built-in and composite module parts
> -$(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
> +$(obj)/%.o: %.c $(recordmcount_source) FORCE
>        $(call cmd,force_checksrc)
>        $(call if_changed_rule,cc_o_c)
>
>  # Single-part modules are special since we need to mark them in $(MODVERDIR)
>
> -$(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
> +$(single-used-m): %.o: %.c $(recordmcount_source) FORCE
>        $(call cmd,force_checksrc)
>        $(call if_changed_rule,cc_o_c)
>        @{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
> @@ -317,7 +323,7 @@ quiet_cmd_cc_lst_c = MKLST   $@
>                     $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
>                                     System.map $(OBJDUMP) > $@
>
> -$(obj)/%.lst: $(src)/%.c FORCE
> +$(obj)/%.lst: %.c FORCE
>        $(call if_changed_dep,cc_lst_c)
>
>  # Compile assembler sources (.S)
> @@ -331,13 +337,13 @@ $(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
>  quiet_cmd_as_s_S = CPP $(quiet_modtag) $@
>  cmd_as_s_S       = $(CPP) $(a_flags)   -o $@ $<
>
> -$(obj)/%.s: $(src)/%.S FORCE
> +$(obj)/%.s: %.S FORCE
>        $(call if_changed_dep,as_s_S)
>
>  quiet_cmd_as_o_S = AS $(quiet_modtag)  $@
>  cmd_as_o_S       = $(CC) $(a_flags) -c -o $@ $<
>
> -$(obj)/%.o: $(src)/%.S FORCE
> +$(obj)/%.o: %.S FORCE
>        $(call if_changed_dep,as_o_S)
>
>  targets += $(real-objs-y) $(real-objs-m) $(lib-y)
> @@ -349,7 +355,7 @@ quiet_cmd_cpp_lds_S = LDS     $@
>       cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
>                             -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
>
> -$(obj)/%.lds: $(src)/%.lds.S FORCE
> +$(obj)/%.lds: %.lds.S FORCE
>        $(call if_changed_dep,cpp_lds_S)
>
>  # Build the compiled-in targets
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index aeea84a..b57b621 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -46,6 +46,13 @@ obj-m                := $(filter-out %/, $(obj-m))
>
>  subdir-ym      := $(sort $(subdir-y) $(subdir-m))
>
> +#
> +vpath-ym       := $(vpath-y) $(vpath-m)
> +VPATH          := $(KBUILD_VPATH)
> +VPATH          += $(srctree)/$(src)
> +VPATH          += $(obj)
> +VPATH          += $(vpath-ym)
> +
>  # if $(foo-objs) exists, foo.o is a composite object
>  multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
>  multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
> @@ -167,7 +174,7 @@ ifdef REGENERATE_PARSERS
>  quiet_cmd_gperf = GPERF $@
>       cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
>
> -$(src)/%.hash.c_shipped: $(src)/%.gperf
> +$(src)/%.hash.c_shipped: %.gperf
>        $(call cmd,gperf)
>
>  # LEX
> @@ -177,7 +184,7 @@ LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
>  quiet_cmd_flex = LEX     $@
>       cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
>
> -$(src)/%.lex.c_shipped: $(src)/%.l
> +$(src)/%.lex.c_shipped: %.l
>        $(call cmd,flex)
>
>  # YACC
> @@ -187,13 +194,13 @@ YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
>  quiet_cmd_bison = YACC    $@
>       cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
>
> -$(src)/%.tab.c_shipped: $(src)/%.y
> +$(src)/%.tab.c_shipped: %.y
>        $(call cmd,bison)
>
>  quiet_cmd_bison_h = YACC    $@
>       cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
>
> -$(src)/%.tab.h_shipped: $(src)/%.y
> +$(src)/%.tab.h_shipped: %.y
>        $(call cmd,bison_h)
>
>  endif
> @@ -204,7 +211,7 @@ endif
>  quiet_cmd_shipped = SHIPPED $@
>  cmd_shipped = cat $< > $@
>
> -$(obj)/%: $(src)/%_shipped
> +$(obj)/%: %_shipped
>        $(call cmd,shipped)
>
>  # Commands useful for building a boot image
> --
> 1.7.6.153.g78432
>
>

WARNING: multiple messages have this Message-ID (diff)
From: lacombar@gmail.com (Arnaud Lacombe)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC] Kbuild: allow code re-use across different directories
Date: Mon, 29 Aug 2011 20:31:15 -0400	[thread overview]
Message-ID: <CACqU3MVrSV-Qp7mC4iN_viMHz=2-cGPaqNY04eokYkVoE_pSuw@mail.gmail.com> (raw)
In-Reply-To: <1313800642-32418-1-git-send-email-lacombar@gmail.com>

Hi,

On Fri, Aug 19, 2011 at 8:37 PM, Arnaud Lacombe <lacombar@gmail.com> wrote:
> Hi folks,
>
> The attached patch modify Kbuild to allow to directly re-use code in multiple
> directory without having to go through a copy. Technically, it changes Kbuild to
> use by default the VPATH feature of GNU make and provides accessors for Makefile
> to change it indirectly.
>
> Considering:
>
> arch/foo/lib:
> fancy.c
>
> We want to be able to build it with -DPANTS=32 in the kernel, but the
> bootloader requires -DPANTS_SIZE=30.
>
> Currently we would do, either:
>
> arch/foo/lib/Makefile
> LDFLAGS_fancy.o := -DPANTS=32
> obj-y += fancy.o
>
> and, either:
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> $(obj)/fancy.c: $(srctree)/arch/foo/lib/fancy.c
> ? ? ? ?$(call cmd,shipped)
>
> or
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> $(obj)/fancy.o: $(srctree)/arch/foo/lib/fancy.c
> ? ? ? ?$(call cmd,cc_c_o)
>
> The former implies an extra copy of the source file, the latter expose Kbuild
> internal function.
>
> With the attached patch, we would do:
>
> arch/foo/boot/Makefile:
> LDFLAGS_fancy.o := -DPANTS=30
> obj-y += fancy.o
> vpath-y += $(srctree)/arch/foo/lib
>
> and let GNU make do the job.
>
Nicolas, I guess you were the one who was interested for a generic way
to do such code re-use, did you had any chance to test the quoted
patch ?

Thanks,
 - Arnaud


> Comments welcome,
> ?- Arnaud
>
> Cc: linux-kernel at vger.kernel.org
> Cc: linux-arm-kernel at lists.infradead.org
>
> ---
> ?Makefile ? ? ? ? ? ? ? | ? ?5 +++--
> ?scripts/Makefile.build | ? 24 +++++++++++++++---------
> ?scripts/Makefile.lib ? | ? 17 ++++++++++++-----
> ?3 files changed, 30 insertions(+), 16 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index b4ca4e1..db7f7f5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -154,9 +154,10 @@ objtree ? ? ? ? ? ?:= $(CURDIR)
> ?src ? ? ? ? ? ?:= $(srctree)
> ?obj ? ? ? ? ? ?:= $(objtree)
>
> -VPATH ? ? ? ? ?:= $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
> +KBUILD_VPATH ? := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
> +VPATH ? ? ? ? ?:= $(KBUILD_VPATH)
>
> -export srctree objtree VPATH
> +export srctree objtree KBUILD_VPATH
>
>
> ?# SUBARCH tells the usermode build what the underlying arch is. ?That is set
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index a0fd502..ac539d7 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -18,6 +18,8 @@ always :=
> ?targets :=
> ?subdir-y :=
> ?subdir-m :=
> +vpath-y :=
> +vpath-m :=
> ?EXTRA_AFLAGS ? :=
> ?EXTRA_CFLAGS ? :=
> ?EXTRA_CPPFLAGS :=
> @@ -37,6 +39,7 @@ include scripts/Kbuild.include
>
> ?# For backward compatibility check that these variables do not change
> ?save-cflags := $(CFLAGS)
> +save-vpath := $(VPATH)
>
> ?# The filename Kbuild has precedence over Makefile
> ?kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
> @@ -48,6 +51,9 @@ ifeq ($(KBUILD_NOPEDANTIC),)
> ? ? ? ? ifneq ("$(save-cflags)","$(CFLAGS)")
> ? ? ? ? ? ? ? ? $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
> ? ? ? ? endif
> + ? ? ? ?ifneq ("$(save-vpath)","$(VPATH)")
> + ? ? ? ? ? ? ? ?$(error VPATH was changed in "$(kbuild-file)". Please uses vpath-y)
> + ? ? ? ?endif
> ?endif
>
> ?#
> @@ -198,13 +204,13 @@ $(multi-objs-y:.o=.lst) : modname = $(modname-multi)
> ?quiet_cmd_cc_s_c = CC $(quiet_modtag) ?$@
> ?cmd_cc_s_c ? ? ? = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
>
> -$(obj)/%.s: $(src)/%.c FORCE
> +$(obj)/%.s: %.c FORCE
> ? ? ? ?$(call if_changed_dep,cc_s_c)
>
> ?quiet_cmd_cc_i_c = CPP $(quiet_modtag) $@
> ?cmd_cc_i_c ? ? ? = $(CPP) $(c_flags) ? -o $@ $<
>
> -$(obj)/%.i: $(src)/%.c FORCE
> +$(obj)/%.i: %.c FORCE
> ? ? ? ?$(call if_changed_dep,cc_i_c)
>
> ?cmd_gensymtypes = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
> @@ -219,7 +225,7 @@ cmd_cc_symtypes_c = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
> ? ? $(call cmd_gensymtypes,true,$@) >/dev/null; ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
> ? ? test -s $@ || rm -f $@
>
> -$(obj)/%.symtypes : $(src)/%.c FORCE
> +$(obj)/%.symtypes : %.c FORCE
> ? ? ? ?$(call cmd,cc_symtypes_c)
>
> ?# C (.c) files
> @@ -301,13 +307,13 @@ define rule_cc_o_c
> ?endef
>
> ?# Built-in and composite module parts
> -$(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
> +$(obj)/%.o: %.c $(recordmcount_source) FORCE
> ? ? ? ?$(call cmd,force_checksrc)
> ? ? ? ?$(call if_changed_rule,cc_o_c)
>
> ?# Single-part modules are special since we need to mark them in $(MODVERDIR)
>
> -$(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) FORCE
> +$(single-used-m): %.o: %.c $(recordmcount_source) FORCE
> ? ? ? ?$(call cmd,force_checksrc)
> ? ? ? ?$(call if_changed_rule,cc_o_c)
> ? ? ? ?@{ echo $(@:.o=.ko); echo $@; } > $(MODVERDIR)/$(@F:.o=.mod)
> @@ -317,7 +323,7 @@ quiet_cmd_cc_lst_c = MKLST ? $@
> ? ? ? ? ? ? ? ? ? ? $(CONFIG_SHELL) $(srctree)/scripts/makelst $*.o \
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.map $(OBJDUMP) > $@
>
> -$(obj)/%.lst: $(src)/%.c FORCE
> +$(obj)/%.lst: %.c FORCE
> ? ? ? ?$(call if_changed_dep,cc_lst_c)
>
> ?# Compile assembler sources (.S)
> @@ -331,13 +337,13 @@ $(real-objs-m:.o=.s): modkern_aflags := $(KBUILD_AFLAGS_MODULE) $(AFLAGS_MODULE)
> ?quiet_cmd_as_s_S = CPP $(quiet_modtag) $@
> ?cmd_as_s_S ? ? ? = $(CPP) $(a_flags) ? -o $@ $<
>
> -$(obj)/%.s: $(src)/%.S FORCE
> +$(obj)/%.s: %.S FORCE
> ? ? ? ?$(call if_changed_dep,as_s_S)
>
> ?quiet_cmd_as_o_S = AS $(quiet_modtag) ?$@
> ?cmd_as_o_S ? ? ? = $(CC) $(a_flags) -c -o $@ $<
>
> -$(obj)/%.o: $(src)/%.S FORCE
> +$(obj)/%.o: %.S FORCE
> ? ? ? ?$(call if_changed_dep,as_o_S)
>
> ?targets += $(real-objs-y) $(real-objs-m) $(lib-y)
> @@ -349,7 +355,7 @@ quiet_cmd_cpp_lds_S = LDS ? ? $@
> ? ? ? cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? -D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
>
> -$(obj)/%.lds: $(src)/%.lds.S FORCE
> +$(obj)/%.lds: %.lds.S FORCE
> ? ? ? ?$(call if_changed_dep,cpp_lds_S)
>
> ?# Build the compiled-in targets
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index aeea84a..b57b621 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -46,6 +46,13 @@ obj-m ? ? ? ? ? ? ? ?:= $(filter-out %/, $(obj-m))
>
> ?subdir-ym ? ? ?:= $(sort $(subdir-y) $(subdir-m))
>
> +#
> +vpath-ym ? ? ? := $(vpath-y) $(vpath-m)
> +VPATH ? ? ? ? ?:= $(KBUILD_VPATH)
> +VPATH ? ? ? ? ?+= $(srctree)/$(src)
> +VPATH ? ? ? ? ?+= $(obj)
> +VPATH ? ? ? ? ?+= $(vpath-ym)
> +
> ?# if $(foo-objs) exists, foo.o is a composite object
> ?multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
> ?multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m))))
> @@ -167,7 +174,7 @@ ifdef REGENERATE_PARSERS
> ?quiet_cmd_gperf = GPERF $@
> ? ? ? cmd_gperf = gperf -t --output-file $@ -a -C -E -g -k 1,3,$$ -p -t $<
>
> -$(src)/%.hash.c_shipped: $(src)/%.gperf
> +$(src)/%.hash.c_shipped: %.gperf
> ? ? ? ?$(call cmd,gperf)
>
> ?# LEX
> @@ -177,7 +184,7 @@ LEX_PREFIX = $(if $(LEX_PREFIX_${baseprereq}),$(LEX_PREFIX_${baseprereq}),yy)
> ?quiet_cmd_flex = LEX ? ? $@
> ? ? ? cmd_flex = flex -o$@ -L -P $(LEX_PREFIX) $<
>
> -$(src)/%.lex.c_shipped: $(src)/%.l
> +$(src)/%.lex.c_shipped: %.l
> ? ? ? ?$(call cmd,flex)
>
> ?# YACC
> @@ -187,13 +194,13 @@ YACC_PREFIX = $(if $(YACC_PREFIX_${baseprereq}),$(YACC_PREFIX_${baseprereq}),yy)
> ?quiet_cmd_bison = YACC ? ?$@
> ? ? ? cmd_bison = bison -o$@ -t -l -p $(YACC_PREFIX) $<
>
> -$(src)/%.tab.c_shipped: $(src)/%.y
> +$(src)/%.tab.c_shipped: %.y
> ? ? ? ?$(call cmd,bison)
>
> ?quiet_cmd_bison_h = YACC ? ?$@
> ? ? ? cmd_bison_h = bison -o/dev/null --defines=$@ -t -l -p $(YACC_PREFIX) $<
>
> -$(src)/%.tab.h_shipped: $(src)/%.y
> +$(src)/%.tab.h_shipped: %.y
> ? ? ? ?$(call cmd,bison_h)
>
> ?endif
> @@ -204,7 +211,7 @@ endif
> ?quiet_cmd_shipped = SHIPPED $@
> ?cmd_shipped = cat $< > $@
>
> -$(obj)/%: $(src)/%_shipped
> +$(obj)/%: %_shipped
> ? ? ? ?$(call cmd,shipped)
>
> ?# Commands useful for building a boot image
> --
> 1.7.6.153.g78432
>
>

  parent reply	other threads:[~2011-08-30  0:31 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-20  0:37 [RFC] Kbuild: allow code re-use across different directories Arnaud Lacombe
2011-08-20  0:37 ` Arnaud Lacombe
2011-08-22  8:42 ` Cong Wang
2011-08-22  8:42   ` Cong Wang
2011-08-30  0:31 ` Arnaud Lacombe [this message]
2011-08-30  0:31   ` Arnaud Lacombe
2011-08-30  4:32   ` Nicolas Pitre
2011-08-30  4:32     ` Nicolas Pitre
2011-08-30  4:36     ` Arnaud Lacombe
2011-08-30  4:36       ` Arnaud Lacombe
2011-09-07 19:07 ` Nicolas Pitre
2011-09-07 19:07   ` Nicolas Pitre
2011-09-07 19:34   ` Arnaud Lacombe
2011-09-07 19:34     ` Arnaud Lacombe
2011-09-07 19:59     ` Nicolas Pitre
2011-09-07 19:59       ` Nicolas Pitre
2011-09-07 20:52       ` Arnaud Lacombe
2011-09-07 20:52         ` Arnaud Lacombe
2011-09-08  4:50       ` Arnaud Lacombe
2011-09-08  4:50         ` Arnaud Lacombe
2011-09-08 20:33         ` Nicolas Pitre
2011-09-08 20:33           ` Nicolas Pitre
2011-09-09  1:22           ` Arnaud Lacombe
2011-09-09  1:22             ` Arnaud Lacombe
2011-09-09 12:32             ` Michal Marek
2011-09-09 12:32               ` Michal Marek
2011-09-09 16:16               ` Arnaud Lacombe
2011-09-09 16:16                 ` Arnaud Lacombe
2011-09-08 18:24 ` Arnaud Lacombe
2011-09-09 12:30 ` Michal Marek
2011-09-09 12:30   ` Michal Marek
2011-09-13 21:13   ` Arnaud Lacombe
2011-09-13 21:13     ` Arnaud Lacombe
2011-09-14  1:48     ` Michal Marek
2011-09-14  1:48       ` Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CACqU3MVrSV-Qp7mC4iN_viMHz=2-cGPaqNY04eokYkVoE_pSuw@mail.gmail.com' \
    --to=lacombar@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nico@fluxnic.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.