On Mon, 5 Nov 2007 20:02:45 +0100 Sam Ravnborg wrote:

> On Fri, Nov 02, 2007 at 07:04:42PM -0700, Randy Dunlap wrote:
> > rfh == request for help.
> > 
> > I tried to do $subject and failed miserably.
> > 
> > For how to cause the Documentation/ examples to be built,
> > I considered using a new CONFIG_ symbol, an environment variable
> > (or a command-line variable), a completely separate Makefile,
> > or a "check" string (these are special-cased in the top-level
> > Makefile).  I ended up trying to use a command-line variable "X",
> > as in:
> > 
> > $ make X=1 all
> > 
> > which sets KBUILD_EX to 1, and then I (tried to) use KBUILD_EX
> > in top-level and subordinate Makefiles to control building the
> > example source files.
> > 
> > [For phase 1, I'm only trying to build userspace examples.
> > Phase 2 can add kernel modules.  Then I want to move more examples
> > out of .txt files into their own example source files as phase 3.]
> > 
> > My patch is below.  If anyone can suggest how to make this work,
> > please let me know.  TIA.
> 
> Hi Randy.
> 
> Simple skeleton that implemented what I described in previous
> mail. I just added a "samplescheck" targets, but we should maybe 
> do this as part of the normal build too?

IMO it's not important to do this as part of a normal kernel build.
Just on demand is OK/fine with me.

> The obj- := dummy.o is needed to fool kbuild to create
> a built-in.o otherwise the link will fail in Documentation/
> 
> If you need to build a module simple add a rule:
> obj-m := <module>.o as usual and drop the dummy.o
> 
> Will this work for you?

Yes, in theory it seems to be OK, with 2 nits :)

a.  "make samplescheck" could be confused with CONFIG_SAMPLES:

ifdef CONFIG_SAMPLES
        $(Q)$(MAKE) $(build)=samples
endif

or maybe not.  I don't know, I just don't want it to be confusing.
But it's easy to rename that part if needed.

b.  It doesn't build Documentation/accounting/getdelays(.c) for me.

$ make V=1 samplescheck
make -f scripts/Makefile.build obj=Documentation
make -f scripts/Makefile.build obj=Documentation/accounting
$ 


>       Sam
> 
> ---
>  Documentation/Makefile            |    1 +
>  Documentation/accounting/Makefile |    2 ++
>  Makefile                          |    6 +++++-
>  3 files changed, 8 insertions(+), 1 deletions(-)
>  create mode 100644 Documentation/Makefile
>  create mode 100644 Documentation/accounting/Makefile
> 
> diff --git a/Documentation/Makefile b/Documentation/Makefile
> new file mode 100644
> index 0000000..b04feae
> --- /dev/null
> +++ b/Documentation/Makefile
> @@ -0,0 +1 @@
> +obj-y := accounting/
> diff --git a/Documentation/accounting/Makefile 
> b/Documentation/accounting/Makefile
> new file mode 100644
> index 0000000..4abba7a
> --- /dev/null
> +++ b/Documentation/accounting/Makefile
> @@ -0,0 +1,2 @@
> +hostprogs-y := getdelays.c
> +obj- := dummy.o
> diff --git a/Makefile b/Makefile
> index 188c3b6..87c6acd 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1079,7 +1079,7 @@ MRPROPER_FILES += .config .config.old include/asm 
> .version .old_version \
>  #
>  clean: rm-dirs  := $(CLEAN_DIRS)
>  clean: rm-files := $(CLEAN_FILES)
> -clean-dirs      := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs))
> +clean-dirs      := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs) 
> Documentation)
>  
>  PHONY += $(clean-dirs) clean archclean
>  $(clean-dirs):
> @@ -1424,6 +1424,10 @@ versioncheck:
>  namespacecheck:
>       $(PERL) $(srctree)/scripts/namespace.pl
>  
> +# build check sample code
> +samplescheck:
> +     $(Q)$(MAKE) $(build)=Documentation
> +
>  export_report:
>       $(PERL) $(srctree)/scripts/export_report.pl
>  
> -- 
> 1.5.3.4.1157.g0e74-dirty

---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to