diff options
Diffstat (limited to 'Documentation/kbuild/makefiles.txt')
-rw-r--r-- | Documentation/kbuild/makefiles.txt | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index e08ef8759a07..f099b814d383 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -276,41 +276,39 @@ more details, with real examples. | |||
276 | 276 | ||
277 | --- 3.7 Compilation flags | 277 | --- 3.7 Compilation flags |
278 | 278 | ||
279 | EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS | 279 | ccflags-y, asflags-y and ldflags-y |
280 | The three flags listed above applies only to the kbuild makefile | ||
281 | where they are assigned. They are used for all the normal | ||
282 | cc, as and ld invocation happenign during a recursive build. | ||
283 | Note: Flags with the same behaviour were previously named: | ||
284 | EXTRA_CFLAGS, EXTRA_AFLAGS and EXTRA_LDFLAGS. | ||
285 | They are yet supported but their use are deprecated. | ||
280 | 286 | ||
281 | All the EXTRA_ variables apply only to the kbuild makefile | 287 | ccflags-y specifies options for compiling C files with $(CC). |
282 | where they are assigned. The EXTRA_ variables apply to all | ||
283 | commands executed in the kbuild makefile. | ||
284 | |||
285 | $(EXTRA_CFLAGS) specifies options for compiling C files with | ||
286 | $(CC). | ||
287 | 288 | ||
288 | Example: | 289 | Example: |
289 | # drivers/sound/emu10k1/Makefile | 290 | # drivers/sound/emu10k1/Makefile |
290 | EXTRA_CFLAGS += -I$(obj) | 291 | ccflags-y += -I$(obj) |
291 | ifdef DEBUG | 292 | ccflags-$(DEBUG) += -DEMU10K1_DEBUG |
292 | EXTRA_CFLAGS += -DEMU10K1_DEBUG | ||
293 | endif | ||
294 | 293 | ||
295 | 294 | ||
296 | This variable is necessary because the top Makefile owns the | 295 | This variable is necessary because the top Makefile owns the |
297 | variable $(CFLAGS) and uses it for compilation flags for the | 296 | variable $(KBUILD_CFLAGS) and uses it for compilation flags for the |
298 | entire tree. | 297 | entire tree. |
299 | 298 | ||
300 | $(EXTRA_AFLAGS) is a similar string for per-directory options | 299 | asflags-y is a similar string for per-directory options |
301 | when compiling assembly language source. | 300 | when compiling assembly language source. |
302 | 301 | ||
303 | Example: | 302 | Example: |
304 | #arch/x86_64/kernel/Makefile | 303 | #arch/x86_64/kernel/Makefile |
305 | EXTRA_AFLAGS := -traditional | 304 | asflags-y := -traditional |
306 | 305 | ||
307 | 306 | ||
308 | $(EXTRA_LDFLAGS) and $(EXTRA_ARFLAGS) are similar strings for | 307 | ldflags-y is a string for per-directory options to $(LD). |
309 | per-directory options to $(LD) and $(AR). | ||
310 | 308 | ||
311 | Example: | 309 | Example: |
312 | #arch/m68k/fpsp040/Makefile | 310 | #arch/m68k/fpsp040/Makefile |
313 | EXTRA_LDFLAGS := -x | 311 | ldflags-y := -x |
314 | 312 | ||
315 | CFLAGS_$@, AFLAGS_$@ | 313 | CFLAGS_$@, AFLAGS_$@ |
316 | 314 | ||
@@ -425,6 +423,7 @@ more details, with real examples. | |||
425 | as-instr checks if the assembler reports a specific instruction | 423 | as-instr checks if the assembler reports a specific instruction |
426 | and then outputs either option1 or option2 | 424 | and then outputs either option1 or option2 |
427 | C escapes are supported in the test instruction | 425 | C escapes are supported in the test instruction |
426 | Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options | ||
428 | 427 | ||
429 | cc-option | 428 | cc-option |
430 | cc-option is used to check if $(CC) supports a given option, and not | 429 | cc-option is used to check if $(CC) supports a given option, and not |
@@ -438,6 +437,7 @@ more details, with real examples. | |||
438 | -march=pentium-mmx if supported by $(CC), otherwise -march=i586. | 437 | -march=pentium-mmx if supported by $(CC), otherwise -march=i586. |
439 | The second argument to cc-option is optional, and if omitted, | 438 | The second argument to cc-option is optional, and if omitted, |
440 | cflags-y will be assigned no value if first option is not supported. | 439 | cflags-y will be assigned no value if first option is not supported. |
440 | Note: cc-option uses KBUILD_CFLAGS for $(CC) options | ||
441 | 441 | ||
442 | cc-option-yn | 442 | cc-option-yn |
443 | cc-option-yn is used to check if gcc supports a given option | 443 | cc-option-yn is used to check if gcc supports a given option |
@@ -453,6 +453,7 @@ more details, with real examples. | |||
453 | option. When $(biarch) equals 'y', the expanded variables $(aflags-y) | 453 | option. When $(biarch) equals 'y', the expanded variables $(aflags-y) |
454 | and $(cflags-y) will be assigned the values -a32 and -m32, | 454 | and $(cflags-y) will be assigned the values -a32 and -m32, |
455 | respectively. | 455 | respectively. |
456 | Note: cc-option-yn uses KBUILD_CFLAGS for $(CC) options | ||
456 | 457 | ||
457 | cc-option-align | 458 | cc-option-align |
458 | gcc versions >= 3.0 changed the type of options used to specify | 459 | gcc versions >= 3.0 changed the type of options used to specify |
@@ -464,10 +465,11 @@ more details, with real examples. | |||
464 | cc-option-align = -falign | 465 | cc-option-align = -falign |
465 | 466 | ||
466 | Example: | 467 | Example: |
467 | CFLAGS += $(cc-option-align)-functions=4 | 468 | KBUILD_CFLAGS += $(cc-option-align)-functions=4 |
468 | 469 | ||
469 | In the above example, the option -falign-functions=4 is used for | 470 | In the above example, the option -falign-functions=4 is used for |
470 | gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used. | 471 | gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used. |
472 | Note: cc-option-align uses KBUILD_CFLAGS for $(CC) options | ||
471 | 473 | ||
472 | cc-version | 474 | cc-version |
473 | cc-version returns a numerical version of the $(CC) compiler version. | 475 | cc-version returns a numerical version of the $(CC) compiler version. |
@@ -492,9 +494,9 @@ more details, with real examples. | |||
492 | 494 | ||
493 | Example: | 495 | Example: |
494 | #fs/reiserfs/Makefile | 496 | #fs/reiserfs/Makefile |
495 | EXTRA_CFLAGS := $(call cc-ifversion, -lt, 0402, -O1) | 497 | ccflags-y := $(call cc-ifversion, -lt, 0402, -O1) |
496 | 498 | ||
497 | In this example, EXTRA_CFLAGS will be assigned the value -O1 if the | 499 | In this example, ccflags-y will be assigned the value -O1 if the |
498 | $(CC) version is less than 4.2. | 500 | $(CC) version is less than 4.2. |
499 | cc-ifversion takes all the shell operators: | 501 | cc-ifversion takes all the shell operators: |
500 | -eq, -ne, -lt, -le, -gt, and -ge | 502 | -eq, -ne, -lt, -le, -gt, and -ge |
@@ -780,8 +782,8 @@ When kbuild executes, the following steps are followed (roughly): | |||
780 | Example: | 782 | Example: |
781 | #arch/s390/Makefile | 783 | #arch/s390/Makefile |
782 | LDFLAGS := -m elf_s390 | 784 | LDFLAGS := -m elf_s390 |
783 | Note: EXTRA_LDFLAGS and LDFLAGS_$@ can be used to further customise | 785 | Note: ldflags-y can be used to further customise |
784 | the flags used. See chapter 7. | 786 | the flags used. See chapter 3.7. |
785 | 787 | ||
786 | LDFLAGS_MODULE Options for $(LD) when linking modules | 788 | LDFLAGS_MODULE Options for $(LD) when linking modules |
787 | 789 | ||
@@ -817,26 +819,26 @@ When kbuild executes, the following steps are followed (roughly): | |||
817 | In this example, the binary $(obj)/image is a binary version of | 819 | In this example, the binary $(obj)/image is a binary version of |
818 | vmlinux. The usage of $(call if_changed,xxx) will be described later. | 820 | vmlinux. The usage of $(call if_changed,xxx) will be described later. |
819 | 821 | ||
820 | AFLAGS $(AS) assembler flags | 822 | KBUILD_AFLAGS $(AS) assembler flags |
821 | 823 | ||
822 | Default value - see top level Makefile | 824 | Default value - see top level Makefile |
823 | Append or modify as required per architecture. | 825 | Append or modify as required per architecture. |
824 | 826 | ||
825 | Example: | 827 | Example: |
826 | #arch/sparc64/Makefile | 828 | #arch/sparc64/Makefile |
827 | AFLAGS += -m64 -mcpu=ultrasparc | 829 | KBUILD_AFLAGS += -m64 -mcpu=ultrasparc |
828 | 830 | ||
829 | CFLAGS $(CC) compiler flags | 831 | KBUILD_CFLAGS $(CC) compiler flags |
830 | 832 | ||
831 | Default value - see top level Makefile | 833 | Default value - see top level Makefile |
832 | Append or modify as required per architecture. | 834 | Append or modify as required per architecture. |
833 | 835 | ||
834 | Often, the CFLAGS variable depends on the configuration. | 836 | Often, the KBUILD_CFLAGS variable depends on the configuration. |
835 | 837 | ||
836 | Example: | 838 | Example: |
837 | #arch/i386/Makefile | 839 | #arch/i386/Makefile |
838 | cflags-$(CONFIG_M386) += -march=i386 | 840 | cflags-$(CONFIG_M386) += -march=i386 |
839 | CFLAGS += $(cflags-y) | 841 | KBUILD_CFLAGS += $(cflags-y) |
840 | 842 | ||
841 | Many arch Makefiles dynamically run the target C compiler to | 843 | Many arch Makefiles dynamically run the target C compiler to |
842 | probe supported options: | 844 | probe supported options: |
@@ -848,7 +850,7 @@ When kbuild executes, the following steps are followed (roughly): | |||
848 | -march=pentium2,-march=i686) | 850 | -march=pentium2,-march=i686) |
849 | ... | 851 | ... |
850 | # Disable unit-at-a-time mode ... | 852 | # Disable unit-at-a-time mode ... |
851 | CFLAGS += $(call cc-option,-fno-unit-at-a-time) | 853 | KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time) |
852 | ... | 854 | ... |
853 | 855 | ||
854 | 856 | ||
@@ -1096,8 +1098,8 @@ When kbuild executes, the following steps are followed (roughly): | |||
1096 | specified options when building the target vmlinux.lds. | 1098 | specified options when building the target vmlinux.lds. |
1097 | 1099 | ||
1098 | When building the *.lds target, kbuild uses the variables: | 1100 | When building the *.lds target, kbuild uses the variables: |
1099 | CPPFLAGS : Set in top-level Makefile | 1101 | KBUILD_CPPFLAGS : Set in top-level Makefile |
1100 | EXTRA_CPPFLAGS : May be set in the kbuild makefile | 1102 | cppflags-y : May be set in the kbuild makefile |
1101 | CPPFLAGS_$(@F) : Target specific flags. | 1103 | CPPFLAGS_$(@F) : Target specific flags. |
1102 | Note that the full filename is used in this | 1104 | Note that the full filename is used in this |
1103 | assignment. | 1105 | assignment. |