@@ -28,7 +28,6 @@ This document describes the Linux kernel Makefiles.
28
28
--- 4.3 Using C++ for host programs
29
29
--- 4.4 Controlling compiler options for host programs
30
30
--- 4.5 When host programs are actually built
31
- --- 4.6 Using hostprogs-$(CONFIG_FOO)
32
31
33
32
=== 5 Kbuild clean infrastructure
34
33
@@ -595,11 +594,11 @@ compilation stage.
595
594
Two steps are required in order to use a host executable.
596
595
597
596
The first step is to tell kbuild that a host program exists. This is
598
- done utilising the variable hostprogs-y .
597
+ done utilising the variable " hostprogs" .
599
598
600
599
The second step is to add an explicit dependency to the executable.
601
600
This can be done in two ways. Either add the dependency in a rule,
602
- or utilise the variable $( always) .
601
+ or utilise the variable " always-y" .
603
602
Both possibilities are described in the following.
604
603
605
604
4.1 Simple Host Program
@@ -612,7 +611,7 @@ Both possibilities are described in the following.
612
611
613
612
Example::
614
613
615
- hostprogs-y := bin2hex
614
+ hostprogs := bin2hex
616
615
617
616
Kbuild assumes in the above example that bin2hex is made from a single
618
617
c-source file named bin2hex.c located in the same directory as
@@ -630,7 +629,7 @@ Both possibilities are described in the following.
630
629
Example::
631
630
632
631
#scripts/lxdialog/Makefile
633
- hostprogs-y := lxdialog
632
+ hostprogs := lxdialog
634
633
lxdialog-objs := checklist.o lxdialog.o
635
634
636
635
Objects with extension .o are compiled from the corresponding .c
@@ -650,7 +649,7 @@ Both possibilities are described in the following.
650
649
Example::
651
650
652
651
#scripts/kconfig/Makefile
653
- hostprogs-y := qconf
652
+ hostprogs := qconf
654
653
qconf-cxxobjs := qconf.o
655
654
656
655
In the example above the executable is composed of the C++ file
@@ -662,7 +661,7 @@ Both possibilities are described in the following.
662
661
Example::
663
662
664
663
#scripts/kconfig/Makefile
665
- hostprogs-y := qconf
664
+ hostprogs := qconf
666
665
qconf-cxxobjs := qconf.o
667
666
qconf-objs := check.o
668
667
@@ -710,55 +709,39 @@ Both possibilities are described in the following.
710
709
Example::
711
710
712
711
#drivers/pci/Makefile
713
- hostprogs-y := gen-devlist
712
+ hostprogs := gen-devlist
714
713
$(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist
715
714
( cd $(obj); ./gen-devlist ) < $<
716
715
717
716
The target $(obj)/devlist.h will not be built before
718
717
$(obj)/gen-devlist is updated. Note that references to
719
718
the host programs in special rules must be prefixed with $(obj).
720
719
721
- (2) Use $( always)
720
+ (2) Use always-y
722
721
723
722
When there is no suitable special rule, and the host program
724
- shall be built when a makefile is entered, the $( always)
723
+ shall be built when a makefile is entered, the always-y
725
724
variable shall be used.
726
725
727
726
Example::
728
727
729
728
#scripts/lxdialog/Makefile
730
- hostprogs-y := lxdialog
731
- always := $(hostprogs-y )
729
+ hostprogs := lxdialog
730
+ always-y := $(hostprogs)
732
731
733
732
This will tell kbuild to build lxdialog even if not referenced in
734
733
any rule.
735
734
736
- 4.6 Using hostprogs-$(CONFIG_FOO)
737
- ---------------------------------
738
-
739
- A typical pattern in a Kbuild file looks like this:
740
-
741
- Example::
742
-
743
- #scripts/Makefile
744
- hostprogs-$(CONFIG_KALLSYMS) += kallsyms
745
-
746
- Kbuild knows about both 'y' for built-in and 'm' for module.
747
- So if a config symbol evaluates to 'm', kbuild will still build
748
- the binary. In other words, Kbuild handles hostprogs-m exactly
749
- like hostprogs-y. But only hostprogs-y is recommended to be used
750
- when no CONFIG symbols are involved.
751
-
752
735
5 Kbuild clean infrastructure
753
736
=============================
754
737
755
738
"make clean" deletes most generated files in the obj tree where the kernel
756
739
is compiled. This includes generated files such as host programs.
757
- Kbuild knows targets listed in $(hostprogs-y ), $(hostprogs-m ), $(always),
758
- $(extra-y) and $(targets). They are all deleted during "make clean".
759
- Files matching the patterns "*.[oas]", " *.ko", plus some additional files
760
- generated by kbuild are deleted all over the kernel src tree when
761
- "make clean" is executed.
740
+ Kbuild knows targets listed in $(hostprogs), $(always-y ), $(always-m ),
741
+ $(always-), $( extra-y), $(extra-) and $(targets). They are all deleted
742
+ during "make clean". Files matching the patterns "*.[oas]", " *.ko", plus
743
+ some additional files generated by kbuild are deleted all over the kernel
744
+ source tree when "make clean" is executed.
762
745
763
746
Additional files or directories can be specified in kbuild makefiles by use of
764
747
$(clean-files).
0 commit comments