• Home
  • Raw
  • Download

Lines Matching +full:built +full:- +full:into

12 	   --- 3.1 Goal definitions
13 --- 3.2 Built-in object goals - obj-y
14 --- 3.3 Loadable module goals - obj-m
15 --- 3.4 Objects which export symbols
16 --- 3.5 Library file goals - lib-y
17 --- 3.6 Descending down in directories
18 --- 3.7 Compilation flags
19 --- 3.8 <deleted>
20 --- 3.9 Dependency tracking
21 --- 3.10 Special Rules
22 --- 3.11 $(CC) support functions
23 --- 3.12 $(LD) support functions
24 --- 3.13 Script Invocation
27 --- 4.1 Simple Host Program
28 --- 4.2 Composite Host Programs
29 --- 4.3 Using C++ for host programs
30 --- 4.4 Controlling compiler options for host programs
31 --- 4.5 When host programs are actually built
34 --- 5.1 Simple Userspace Program
35 --- 5.2 Composite Userspace Programs
36 --- 5.3 Controlling compiler options for userspace programs
37 --- 5.4 When userspace programs are actually built
42 --- 7.1 Set variables to tweak the build to the architecture
43 --- 7.2 Add prerequisites to archheaders
44 --- 7.3 Add prerequisites to archprepare
45 --- 7.4 List directories to visit when descending
46 --- 7.5 Architecture-specific boot images
47 --- 7.6 Building non-kbuild targets
48 --- 7.7 Commands useful for building a boot image
49 --- 7.8 Custom kbuild commands
50 --- 7.9 Preprocessing linker scripts
51 --- 7.10 Generic header files
52 --- 7.11 Post-link pass
55 --- 8.1 no-export-headers
56 --- 8.2 generic-y
57 --- 8.3 generated-y
58 --- 8.4 mandatory-y
81 It builds these goals by recursively descending into the subdirectories of
86 architecture-specific information to the top Makefile.
91 any built-in or modular targets.
137 --------------------
140 These lines define the files to be built, any special compilation
147 obj-y += foo.o
150 foo.o. foo.o will be built from foo.c or foo.S.
152 If foo.o shall be built as a module, the variable obj-m is used.
157 obj-$(CONFIG_FOO) += foo.o
159 $(CONFIG_FOO) evaluates to either y (for built-in) or m (for module).
163 3.2 Built-in object goals - obj-y
164 ---------------------------------
167 in the $(obj-y) lists. These lists depend on the kernel
170 Kbuild compiles all the $(obj-y) files. It then calls
171 "$(AR) rcSTP" to merge these files into one built-in.a file.
173 linked into vmlinux by scripts/link-vmlinux.sh
175 The order of files in $(obj-y) is significant. Duplicates in
176 the lists are allowed: the first instance will be linked into
177 built-in.a and succeeding instances will be ignored.
190 obj-$(CONFIG_ISDN_I4L) += isdn.o
191 obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
193 3.3 Loadable module goals - obj-m
194 ---------------------------------
196 $(obj-m) specifies object files which are built as loadable
199 A module may be built from one source file or several source
201 simply adds the file to $(obj-m).
206 obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
210 If a kernel module is built from several source files, you specify
213 module from, so you have to tell it by setting a $(<module_name>-y)
219 obj-$(CONFIG_ISDN_I4L) += isdn.o
220 isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o
223 compile the objects listed in $(isdn-y) and then run
224 "$(LD) -r" on the list of these files to generate isdn.o.
226 Due to kbuild recognizing $(<module_name>-y) for composite objects,
233 obj-$(CONFIG_EXT2_FS) += ext2.o
234 ext2-y := balloc.o dir.o file.o ialloc.o inode.o ioctl.o \
236 ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o xattr_user.o \
243 Note: Of course, when you are building objects into the kernel,
246 parts and then link this into built-in.a, as you would expect.
249 --------------------------------
254 3.5 Library file goals - lib-y
255 ------------------------------
257 Objects listed with obj-* are used for modules, or
258 combined in a built-in.a for that specific directory.
261 All objects listed with lib-y are combined in a single
263 Objects that are listed in obj-y and additionally listed in
264 lib-y will not be included in the library, since they will
266 For consistency, objects listed in lib-m will be included in lib.a.
268 Note that the same kbuild makefile may list files to be built-in
270 may contain both a built-in.a and a lib.a file.
275 lib-y := delay.o
278 actually recognize that there is a lib.a being built, the directory
279 shall be listed in libs-y.
283 Use of lib-y is normally restricted to `lib/` and `arch/*/lib`.
286 ----------------------------------
294 To do so, obj-y and obj-m are used.
301 obj-$(CONFIG_EXT2_FS) += ext2/
303 If CONFIG_EXT2_FS is set to either 'y' (built-in) or 'm' (modular)
304 the corresponding obj- variable will be set, and kbuild will descend
309 the directory into vmlinux.
311 When Kbuild descends into the directory with 'y', all built-in objects
312 from that directory are combined into the built-in.a, which will be
313 eventually linked into vmlinux.
315 When Kbuild descends into the directory with 'm', in contrast, nothing
316 from that directory will be linked into vmlinux. If the Makefile in
317 that directory specifies obj-y, those objects will be left orphan.
325 ---------------------
327 ccflags-y, asflags-y and ldflags-y
335 ccflags-y specifies options for compiling with $(CC).
340 ccflags-y := -Os -D_LINUX -DBUILDING_ACPICA
341 ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
347 asflags-y specifies assembler options.
352 asflags-y := -ansi
354 ldflags-y specifies options for linking with $(LD).
359 ldflags-y += -T $(srctree)/$(src)/decompress_$(arch-y).lds
361 subdir-ccflags-y, subdir-asflags-y
362 The two flags listed above are similar to ccflags-y and asflags-y.
363 The difference is that the subdir- variants have effect for the kbuild
365 Options specified using subdir-* are added to the commandline before
366 the options specified using the non-subdir variants.
370 subdir-ccflags-y := -Werror
372 ccflags-remove-y, asflags-remove-y
378 ccflags-remove-$(CONFIG_MCOUNT) += -pg
384 $(CFLAGS_$@) specifies per-file options for $(CC). The $@
387 CFLAGS_$@ has the higher priority than ccflags-remove-y; CFLAGS_$@
388 can re-add compiler flags that were removed by ccflags-remove-y.
393 CFLAGS_aha152x.o = -DAHA152X_STAT -DAUTOCONF
394 CFLAGS_gdth.o = # -DDEBUG_GDTH=2 -D__SERIAL__ -D__COM2__ \
395 -DGDTH_STATISTICS
402 AFLAGS_$@ has the higher priority than asflags-remove-y; AFLAGS_$@
403 can re-add assembler flags that were removed by asflags-remove-y.
408 AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
409 AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312
410 AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
414 -----------------------
420 3) Command-line used to compile target
423 be re-compiled.
426 ------------------
431 Another example are the architecture-specific Makefiles which
455 $(CPP) -DCHIP=810 - < $< | ... $(src)/script_asm.pl
467 but when execution "make -s" one does not expect to see any output
470 text following $(kecho) to stdout except if "make -s" is used.
481 ----------------------------
483 The kernel may be built with several different versions of
489 as-option
490 as-option is used to check if $(CC) -- when used to compile
491 assembler (`*.S`) files -- supports the given option. An optional
497 cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
499 In the above example, cflags-y will be assigned the option
500 -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
504 as-instr
505 as-instr checks if the assembler reports a specific instruction
508 Note: as-instr-option uses KBUILD_AFLAGS for assembler options
510 cc-option
511 cc-option is used to check if $(CC) supports a given option, and if
517 cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
519 In the above example, cflags-y will be assigned the option
520 -march=pentium-mmx if supported by $(CC), otherwise -march=i586.
521 The second argument to cc-option is optional, and if omitted,
522 cflags-y will be assigned no value if first option is not supported.
523 Note: cc-option uses KBUILD_CFLAGS for $(CC) options
525 cc-option-yn
526 cc-option-yn is used to check if gcc supports a given option
532 biarch := $(call cc-option-yn, -m32)
533 aflags-$(biarch) += -a32
534 cflags-$(biarch) += -m32
536 In the above example, $(biarch) is set to y if $(CC) supports the -m32
537 option. When $(biarch) equals 'y', the expanded variables $(aflags-y)
538 and $(cflags-y) will be assigned the values -a32 and -m32,
540 Note: cc-option-yn uses KBUILD_CFLAGS for $(CC) options
542 cc-disable-warning
543 cc-disable-warning checks if gcc supports a given warning and returns
545 because gcc 4.4 and later accept any unknown -Wno-* option and only
550 KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
552 In the above example, -Wno-unused-but-set-variable will be added to
555 cc-ifversion
556 cc-ifversion tests the version of $(CC) and equals the fourth parameter
563 ccflags-y := $(call cc-ifversion, -lt, 0402, -O1)
565 In this example, ccflags-y will be assigned the value -O1 if the
567 cc-ifversion takes all the shell operators:
568 -eq, -ne, -lt, -le, -gt, and -ge
572 cc-cross-prefix
573 cc-cross-prefix is used to check if there exists a $(CC) in path with
575 prefix$(CC) in the PATH is returned - and if no prefix$(CC) is found
578 call of cc-cross-prefix.
580 to set CROSS_COMPILE to well-known values but may have several
591 CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu-)
596 ----------------------------
598 ld-option
599 ld-option is used to check if $(LD) supports the supplied option.
600 ld-option takes two options as arguments.
607 LDFLAGS_vmlinux += $(call ld-option, -X)
610 ----------------------
641 or utilise the variable "always-y".
645 -----------------------
650 built on the build host.
657 c-source file named bin2hex.c located in the same directory as
661 ---------------------------
666 $(<executable>-objs) lists all objects used to link the final
673 lxdialog-objs := checklist.o lxdialog.o
680 Note: The syntax <executable>-y is not permitted for host-programs.
683 -------------------------------
693 qconf-cxxobjs := qconf.o
696 qconf.cc - identified by $(qconf-cxxobjs).
705 qconf-cxxobjs := qconf.o
706 qconf-objs := check.o
709 --------------------------------------------------
720 HOST_EXTRACFLAGS += -I/usr/include/ncurses
728 HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE)
735 HOSTLDLIBS_qconf := -L$(QTDIR)/lib
738 "-L$(QTDIR)/lib".
740 4.5 When host programs are actually built
741 -----------------------------------------
743 Kbuild will only build host-programs when they are referenced
752 hostprogs := gen-devlist
753 $(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist
754 ( cd $(obj); ./gen-devlist ) < $<
756 The target $(obj)/devlist.h will not be built before
757 $(obj)/gen-devlist is updated. Note that references to
760 (2) Use always-y
763 shall be built when a makefile is entered, the always-y
770 always-y := $(hostprogs)
774 hostprogs-always-y := lxdialog
790 ----------------------------
792 The following line tells kbuild that the program bpf-direct shall be
793 built for the target architecture.
797 userprogs := bpf-direct
799 Kbuild assumes in the above example that bpf-direct is made from a
800 single C source file named bpf-direct.c located in the same directory
804 --------------------------------
809 $(<executable>-objs) lists all objects used to link the final
815 userprogs := bpf-fancy
816 bpf-fancy-objs := bpf-fancy.o bpf-helper.o
819 files. In the above example, bpf-fancy.c is compiled to bpf-fancy.o
820 and bpf-helper.c is compiled to bpf-helper.o.
822 Finally, the two .o files are linked to the executable, bpf-fancy.
823 Note: The syntax <executable>-y is not permitted for userspace programs.
826 -------------------------------------------------------
837 userccflags += -I usr/include
844 bpf-helper-userccflags += -I user/include
851 bpfilter_umh-userldflags += -static
853 When linking bpfilter_umh, it will be passed the extra option -static.
855 5.4 When userspace programs are actually built
856 ----------------------------------------------
869 $(obj)/bpfilter_umh is built before $(obj)/bpfilter_umh_blob.o
871 (2) Use always-y
876 always-y := $(userprogs)
880 userprogs-always-y := binderfs_example
890 Kbuild knows targets listed in $(hostprogs), $(always-y), $(always-m),
891 $(always-), $(extra-y), $(extra-) and $(targets). They are all deleted
897 $(clean-files).
902 clean-files := crc32table.h
909 $(no-clean-files) variable.
911 Usually kbuild descends down in subdirectories due to "obj-* := dir/",
918 subdir- := compressed
934 the subdir- trick to descend further down.
936 Note 1: arch/$(ARCH)/Makefile cannot use "subdir-", because that file is
940 Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will
959 - Additional prerequisites are specified in arch/$(ARCH)/Makefile
961 init-* core* drivers-* net-* libs-* and build all targets.
962 - The values of the above variables are expanded in arch/$(ARCH)/Makefile.
965 The very first objects linked are listed in head-y, assigned by
967 6) Finally, the architecture-specific part does any required post processing
969 - This includes building boot records
970 - Preparing initrd images and the like
974 --------------------------------------------------------
985 KBUILD_LDFLAGS := -m elf_s390
987 Note: ldflags-y can be used to further customise
1000 LDFLAGS_vmlinux := -e stext
1013 OBJCOPYFLAGS := -O binary
1025 Default value - see top level Makefile
1031 KBUILD_AFLAGS += -m64 -mcpu=ultrasparc
1036 Default value - see top level Makefile
1044 cflags-$(CONFIG_X86_32) := -march=i386
1045 cflags-$(CONFIG_X86_64) := -mcmodel=small
1046 KBUILD_CFLAGS += $(cflags-y)
1054 cflags-$(CONFIG_MPENTIUMII) += $(call cc-option,\
1055 -march=pentium2,-march=i686)
1057 # Disable unit-at-a-time mode ...
1058 KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time)
1066 Assembler options specific for built-in
1074 $(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that
1080 $(CC) options specific for built-in
1088 $(KBUILD_CFLAGS_MODULE) is used to add arch-specific options that
1095 $(KBUILD_LDFLAGS_MODULE) is used to add arch-specific options
1102 The linker script with full path. Assigned by the top-level Makefile.
1106 The module linker script with full path. Assigned by the top-level
1121 ------------------------------------
1124 may be installed into user space by "make header_install".
1131 ------------------------------------
1134 built before starting to descend down in the subdirectories.
1144 See also chapter XXX-TODO that describes how kbuild supports
1149 ---------------------------------------------
1153 corresponding arch-specific section for modules; the module-building
1154 machinery is all architecture-independent.
1157 head-y, init-y, core-y, libs-y, drivers-y, net-y
1158 $(head-y) lists objects to be linked first in vmlinux.
1160 $(libs-y) lists directories where a lib.a archive can be located.
1162 The rest list directories where a built-in.a object file can be
1165 $(init-y) objects will be located after $(head-y).
1169 $(core-y), $(libs-y), $(drivers-y) and $(net-y).
1172 and arch/$(ARCH)/Makefile only adds architecture-specific
1178 core-y += arch/sparc64/kernel/
1179 libs-y += arch/sparc64/prom/ arch/sparc64/lib/
1180 drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
1183 7.5 Architecture-specific boot images
1184 -------------------------------------
1200 into the arch/$(ARCH)/boot/Makefile.
1212 There are no rules for naming architecture-specific targets,
1220 echo '* bzImage - Image (arch/$(ARCH)/boot/bzImage)'
1224 will be built. In the top level Makefile the first goal present
1236 When "make" is executed without arguments, bzImage will be built.
1238 7.6 Building non-kbuild targets
1239 -------------------------------
1241 extra-y
1242 extra-y specifies additional targets created in the current
1243 directory, in addition to any targets specified by `obj-*`.
1245 Listing all targets in extra-y is required for two purposes:
1249 - When $(call if_changed,xxx) is used
1256 extra-y := head.o init_task.o
1258 In this example, extra-y is used to list object files that
1259 shall be built, but shall not be linked as part of built-in.a.
1262 ---------------------------------------------
1281 always be built.
1309 LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
1310 LDFLAGS_setup := -Ttext 0x0 -s --oformat binary -e begtext
1318 LDFLAGS_$@ syntax - one for each potential target.
1344 $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
1349 into vmlinux. Device tree blobs linked into vmlinux are placed
1351 blob to non-init memory prior to calling unflatten_device_tree().
1353 To use this command, simply add `*.dtb` into obj-y or targets, or make
1361 targets += $(dtb-y)
1362 DTC_FLAGS ?= -p 1024
1365 --------------------------
1372 quiet_cmd_<command> - what shall be echoed
1373 cmd_<command> - the command to execute
1395 --------------------------------
1397 When the vmlinux image is built, the linker script
1401 kbuild knows .lds files and includes a rule `*lds.S` -> `*lds`.
1406 extra-y := vmlinux.lds
1409 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
1411 The assignment to extra-y is used to tell kbuild to build the
1418 KBUILD_CPPFLAGS : Set in top-level Makefile
1419 cppflags-y : May be set in the kbuild makefile
1420 CPPFLAGS_$(@F) : Target-specific flags.
1425 architecture-specific files.
1428 -------------------------
1430 The directory include/asm-generic contains the header files
1434 See "8.2 generic-y" for further info on syntax etc.
1436 7.11 Post-link pass
1437 -------------------
1440 will be invoked for post-link objects (vmlinux and modules.ko)
1441 for architectures to run post-link passes on. Must also handle
1447 .tmp_vmlinux? targets to be called from link-vmlinux.sh.
1453 ------------------------------------
1456 Many headers can be exported as-is but other headers require a
1457 minimal pre-processing before they are ready for user-space.
1458 The pre-processing does:
1460 - drop kernel-specific annotations
1461 - drop include of compiler.h
1462 - drop all sections that are kernel internal (guarded by `ifdef __KERNEL__`)
1469 arch/<arch>/include/asm/ to list asm files coming from asm-generic.
1472 8.1 no-export-headers
1473 ---------------------
1475 no-export-headers is essentially used by include/uapi/linux/Kbuild to
1479 8.2 generic-y
1480 -------------
1483 include/asm-generic then this is listed in the file
1489 generic-y += termios.h
1490 generic-y += rtc.h
1507 #include <asm-generic/termios.h>
1509 8.3 generated-y
1510 ---------------
1512 If an architecture generates other header files alongside generic-y
1513 wrappers, generated-y specifies them.
1515 This prevents them being treated as stale asm-generic wrappers and
1521 generated-y += syscalls_32.h
1523 8.4 mandatory-y
1524 ---------------
1526 mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild
1529 This works like optional generic-y. If a mandatory header is missing
1531 a wrapper of the asm-generic one.
1544 three-part version number, such as "2", "4", and "0". These three
1547 $(EXTRAVERSION) defines an even tinier sublevel for pre-patches
1548 or additional patches. It is usually some non-numeric string
1549 such as "-pre4", and is often blank.
1552 $(KERNELRELEASE) is a single string such as "2.4.0-pre4", suitable
1571 Use this for architecture-specific install targets.
1586 default option --strip-debug will be used. Otherwise, the
1598 GNU Make supports elementary list-processing functions. The kernel
1603 immediate evaluation of the right-hand side and stores an actual string
1604 into the left-hand side. "=" is like a formula definition; it stores the
1605 right-hand side in an unevaluated form and then evaluates this form each
1606 time the left-hand side is used.
1614 - Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1615 - Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1616 - Updates by Sam Ravnborg <sam@ravnborg.org>
1617 - Language QA by Jan Engelhardt <jengelh@gmx.de>
1622 - Describe how kbuild supports shipped files with _shipped.
1623 - Generating offset header files.
1624 - Add more variables to chapters 7 or 9?