Thanks Robert - a few comments..

Can you please address them and resubmit.
The changes that I did not comment are fine.

Thanks,
        Sam

On Sat, Nov 17, 2007 at 12:38:57PM -0500, Robert P. J. Day wrote:
> 
> Fix some typoes, and update some Makefile excerpts in the
> makefiles.txt file, so that the examples reflect actual existing code.
> 
> Signed-off-by: Robert P. J. Day <[EMAIL PROTECTED]>
> 
> ---
> 
>   the biggest set of patches was to just replace out-of-date Makefile
> snippets with existing snippets.
> 
> 
> diff --git a/Documentation/kbuild/makefiles.txt 
> b/Documentation/kbuild/makefiles.txt
> index 7a77533..af6c798 100644
> --- a/Documentation/kbuild/makefiles.txt
> +++ b/Documentation/kbuild/makefiles.txt
> @@ -53,7 +53,7 @@ The Makefiles have five parts:
>       .config                 the kernel configuration file.
>       arch/$(ARCH)/Makefile   the arch Makefile.
>       scripts/Makefile.*      common rules etc. for all kbuild Makefiles.
> -     kbuild Makefiles        there are about 500 of these.
> +     kbuild Makefiles        there are about 1000 of these.
> 
>  The top Makefile reads the .config file, which comes from the kernel
>  configuration process.
> @@ -277,9 +277,9 @@ more details, with real examples.
>  --- 3.7 Compilation flags
> 
>      ccflags-y, asflags-y and ldflags-y
> -     The three flags listed above applies only to the kbuild makefile
> +     The three flags listed above apply only to the kbuild makefile
>       where they are assigned. They are used for all the normal
> -     cc, as and ld invocation happenign during a recursive build.
> +     cc, as and ld invocation happening during a recursive build.
>       Note: Flags with the same behaviour were previously named:
>       EXTRA_CFLAGS, EXTRA_AFLAGS and EXTRA_LDFLAGS.
>       They are yet supported but their use are deprecated.
> @@ -287,9 +287,8 @@ more details, with real examples.
>       ccflags-y specifies options for compiling C files with $(CC).
> 
>       Example:
> -             # drivers/sound/emu10k1/Makefile
> -             ccflags-y += -I$(obj)
> -             ccflags-$(DEBUG) += -DEMU10K1_DEBUG
> +             #arch/x86/boot/Makefile
> +             $(obj)/bzImage: ccflags-y := -D__BIG_KERNEL__

It is more important to show the use of ccflags-$(CONFIG_xxx) than to
be an exact copy from the file.
In this case the correct fix is to update drivers/sound/emu10k1/Makefile
to use ccflags-y

> 
> 
>       This variable is necessary because the top Makefile owns the
> @@ -300,15 +299,15 @@ more details, with real examples.
>       when compiling assembly language source.
> 
>       Example:
> -             #arch/x86_64/kernel/Makefile
> -             asflags-y := -traditional
> +             #arch/x86/boot/Makefile
> +             $(obj)/zImage:  asflags-y := $(SVGA_MODE) $(RAMDISK)
> 
> 
>       ldflags-y is a string for per-directory options to $(LD).
> 
>       Example:
> -             #arch/m68k/fpsp040/Makefile
> -             ldflags-y := -x
> +             #arch/h8300/Makefile
> +             LDFLAGS += $(ldflags-y)

This file does not use ldflags-y from kbuild but a variable
of the same name.
Again the correct fix is to update the referenced file.

May I suggest you do that as a sweep over the full kernel?
For EXTRA_LDFLAGS the job is trivial...


> 
>      CFLAGS_$@, AFLAGS_$@
> 
> @@ -398,9 +397,9 @@ more details, with real examples.
> 
>       Example:
>               #arch/sh/Makefile
> -             cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
> +             isaflags-y := $(call as-option,-Wa$(comma)-isa=$(isa-y),)
> 
> -     In the above example, cflags-y will be assigned the option
> +     In the above example, isaflags-y will be assigned the option
>       -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
>       The second argument is optional, and if supplied will be used
>       if first argument is not supported.
> @@ -411,10 +410,13 @@ more details, with real examples.
>       specified if first option are not supported.
> 
>       Example:
> -             #arch/i386/kernel/Makefile
> -             vsyscall-flags += $(call ld-option, 
> -Wl$(comma)--hash-style=sysv)
> +             #arch/x86/vdso/Makefile
> +             vdso-flags = -fPIC -shared -Wl,-soname=linux-vdso.so.1 \
> +               $(call ld-option, -Wl$(comma)--hash-style=sysv) \
> +               -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
> +
> 
> -     In the above example, vsyscall-flags will be assigned the option
> +     In the above example, vdso-flags will use the option
>       -Wl$(comma)--hash-style=sysv if it is supported by $(CC).
>       The second argument is optional, and if supplied will be used
>       if first argument is not supported.
> @@ -423,20 +425,19 @@ more details, with real examples.
>       as-instr checks if the assembler reports a specific instruction
>       and then outputs either option1 or option2
>       C escapes are supported in the test instruction
> -     Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options

This note is important - do not delete it. And it is correct - no?

> 
>      cc-option
>       cc-option is used to check if $(CC) supports a given option, and not
>       supported to use an optional second option.
> 
>       Example:
> -             #arch/i386/Makefile
> -             cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
> +             #arch/x86/Makefile_64
> +             cflags-y += $(call cc-option,-funit-at-a-time)

Please update this to show usage with one and two arguments.

> 
> -     In the above example, cflags-y will be assigned the option
> -     -march=pentium-mmx if supported by $(CC), otherwise -march=i586.
> -     The second argument to cc-option is optional, and if omitted,
> -     cflags-y will be assigned no value if first option is not supported.
> +     In the above example, cflags-y will have appended to it the
> +     option -funit-at-a-time if supported by $(CC).  The second
> +     argument to cc-option is optional and, if omitted, will be
> +     represented by no value if the first option is not supported.
>       Note: cc-option uses KBUILD_CFLAGS for $(CC) options
> 
>     cc-option-yn
> @@ -445,14 +446,16 @@ more details, with real examples.
> 
>       Example:
>               #arch/ppc/Makefile
> -             biarch := $(call cc-option-yn, -m32)
> -             aflags-$(biarch) += -a32
> -             cflags-$(biarch) += -m32
> -
> -     In the above example, $(biarch) is set to y if $(CC) supports the -m32
> -     option. When $(biarch) equals 'y', the expanded variables $(aflags-y)
> -     and $(cflags-y) will be assigned the values -a32 and -m32,
> -     respectively.
> +             HAS_BIARCH      := $(call cc-option-yn, -m32)
> +             ifeq ($(HAS_BIARCH),y)
> +             AS              := $(AS) -a32
> +             LD              := $(LD) -m elf32ppc
> +             CC              := $(CC) -m32
> +             endif
> +
> +     In the above example, $(HAS_BIARCH) is set to y if $(CC) supports
> +     the -m32 option, which subsequently affects the values of $(AS),
> +     $(LD) and $(CC).
>       Note: cc-option-yn uses KBUILD_CFLAGS for $(CC) options
> 
>      cc-option-align
> @@ -464,7 +467,13 @@ more details, with real examples.
>       gcc >= 3.00
>               cc-option-align = -falign
> 
> -     Example:
> +     The correct value is set automatically in scripts/Kbuild.include:
> +             # cc-option-align
> +             # Prefix align with either -falign or -malign
> +             cc-option-align = $(subst -functions=0,,\
> +               $(call cc-option,-falign-functions=0,-malign-functions=0))

We should not include the implementation just to explain it.
Then it is better to make up an example.

> +
> +     Example usage:
>               KBUILD_CFLAGS += $(cc-option-align)-functions=4
> 
>       In the above example, the option -falign-functions=4 is used for
> @@ -475,18 +484,16 @@ more details, with real examples.
>       cc-version returns a numerical version of the $(CC) compiler version.
>       The format is <major><minor> where both are two digits. So for example
>       gcc 3.41 would return 0341.
> -     cc-version is useful when a specific $(CC) version is faulty in one
> -     area, for example -mregparm=3 was broken in some gcc versions
> -     even though the option was accepted by gcc.
> 
>       Example:
> -             #arch/i386/Makefile
> -             cflags-y += $(shell \
> -             if [ $(call cc-version) -ge 0300 ] ; then \
> -                     echo "-mregparm=3"; fi ;)
> +             #arch/ia64/Makefile
> +             ifeq ($(call cc-version),0304)
> +                     cflags-$(CONFIG_ITANIUM)        += -mtune=merced
> +                     cflags-$(CONFIG_MCKINLEY)       += -mtune=mckinley
> +             endif
> 
> -     In the above example, -mregparm=3 is only used for gcc version greater
> -     than or equal to gcc 3.0.
> +     In the above example, the "cflags" variable(s) will have some
> +     specific options appended if gcc 3.4 is being used.

The variable is named cflags-y - not cflags.

> 
>      cc-ifversion
>       cc-ifversion tests the version of $(CC) and equals last argument if
> @@ -494,10 +501,10 @@ more details, with real examples.
> 
>       Example:
>               #fs/reiserfs/Makefile
> -             ccflags-y := $(call cc-ifversion, -lt, 0402, -O1)
> +             EXTRA_CFLAGS := $(call cc-ifversion, -lt, 0400, -O1)

EXTRA_CFLAGS is deprecated. Please update reiserfs/Makefile instead.

> 
> -     In this example, ccflags-y will be assigned the value -O1 if the
> -     $(CC) version is less than 4.2.
> +     In this example, EXTRA_CFLAGS will be assigned the value -O1 if the
> +     $(CC) version is less than 4.0.
>       cc-ifversion takes all the shell operators:
>       -eq, -ne, -lt, -le, -gt, and -ge
>       The third parameter may be a text as in this example, but it may also
> @@ -509,12 +516,16 @@ more details, with real examples.
>       cc-fullversion points out a more specific version than cc-version does.
> 
>       Example:
> -             #arch/powerpc/Makefile
> -             $(Q)if test "$(call cc-fullversion)" = "040200" ; then \
> +             @if test "$(call cc-fullversion)" = "040200" \
> +                 && test "x${CONFIG_MODULES}${CONFIG_PPC64}" = "xyy" ; then \
>                       echo -n '*** GCC-4.2.0 cannot compile the 64-bit 
> powerpc ' ; \
> +                     echo 'kernel with modules enabled.' ; \
> +                     echo -n '*** Please use a different GCC version or ' ; \
> +                     echo 'disable kernel modules' ; \
>                       false ; \
>               fi
> 
> +
>       In this example for a specific GCC version the build will error out 
> explaining
>       to the user why it stops.
> 
> @@ -533,11 +544,14 @@ more details, with real examples.
>       is already set then leave it with the old value.
> 
>       Example:
> -             #arch/m68k/Makefile
> +             #arch/mips/Makefile
>               ifneq ($(SUBARCH),$(ARCH))
> -                     ifeq ($(CROSS_COMPILE),)
> -                            CROSS_COMPILE := $(call cc-cross-prefix, 
> m68k-linux-gnu-)
> -                     endif
> +               ifeq ($(CROSS_COMPILE),)
> +                 CROSS_COMPILE := $(call cc-cross-prefix,
> +                   $(tool-archpref)-linux-
> +                   $(tool-archpref)-linux-gnu-
> +                   $(tool-archpref)-unknown-linux-gnu-)
> +               endif
>               endif
> 
>  === 4 Host Program support
> ========================================================================
> Robert P. J. Day
> Linux Consulting, Training and Annoying Kernel Pedantry
> Waterloo, Ontario, CANADA
> 
> http://crashcourse.ca
> ========================================================================
> -
> 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
-
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