• Home
  • Raw
  • Download

Lines Matching +full:link +full:- +full:trigger +full:- +full:order

29 architecture-specific information to the top Makefile.
34 any built-in or modular targets.
51 working on. In order to do this effectively, they need some overall
80 ----------------
90 obj-y += foo.o
95 If foo.o shall be built as a module, the variable obj-m is used.
100 obj-$(CONFIG_FOO) += foo.o
102 $(CONFIG_FOO) evaluates to either y (for built-in) or m (for module).
106 Built-in object goals - obj-y
107 -----------------------------
110 in the $(obj-y) lists. These lists depend on the kernel
113 Kbuild compiles all the $(obj-y) files. It then calls
114 ``$(AR) rcSTP`` to merge these files into one built-in.a file.
116 linked into vmlinux by scripts/link-vmlinux.sh
118 The order of files in $(obj-y) is significant. Duplicates in
120 built-in.a and succeeding instances will be ignored.
122 Link order is significant, because certain functions
124 order they appear. So keep in mind that changing the link
125 order may e.g. change the order in which your SCSI
133 obj-$(CONFIG_ISDN_I4L) += isdn.o
134 obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
136 Loadable module goals - obj-m
137 -----------------------------
139 $(obj-m) specifies object files which are built as loadable
144 simply adds the file to $(obj-m).
149 obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
156 module from, so you have to tell it by setting a $(<module_name>-y)
162 obj-$(CONFIG_ISDN_I4L) += isdn.o
163 isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o
166 compile the objects listed in $(isdn-y) and then run
167 ``$(LD) -r`` on the list of these files to generate isdn.o.
169 Due to kbuild recognizing $(<module_name>-y) for composite objects,
176 obj-$(CONFIG_EXT2_FS) += ext2.o
177 ext2-y := balloc.o dir.o file.o ialloc.o inode.o ioctl.o \
179 ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o xattr_user.o \
189 parts and then link this into built-in.a, as you would expect.
191 Library file goals - lib-y
192 --------------------------
194 Objects listed with obj-* are used for modules, or
195 combined in a built-in.a for that specific directory.
198 All objects listed with lib-y are combined in a single
200 Objects that are listed in obj-y and additionally listed in
201 lib-y will not be included in the library, since they will
203 For consistency, objects listed in lib-m will be included in lib.a.
205 Note that the same kbuild makefile may list files to be built-in
207 may contain both a built-in.a and a lib.a file.
212 lib-y := delay.o
216 shall be listed in libs-y.
220 Use of lib-y is normally restricted to ``lib/`` and ``arch/*/lib``.
223 ------------------------------
231 To do so, obj-y and obj-m are used.
238 obj-$(CONFIG_EXT2_FS) += ext2/
240 If CONFIG_EXT2_FS is set to either "y" (built-in) or "m" (modular)
241 the corresponding obj- variable will be set, and kbuild will descend
245 the directory, but also to decide whether or not to link objects from
248 When Kbuild descends into the directory with "y", all built-in objects
249 from that directory are combined into the built-in.a, which will be
254 that directory specifies obj-y, those objects will be left orphan.
257 Kbuild also supports dedicated syntax, subdir-y and subdir-m, for
259 do not contain kernel-space objects at all. A typical usage is to let
265 subdir-$(CONFIG_GCC_PLUGINS) += gcc-plugins
266 subdir-$(CONFIG_MODVERSIONS) += genksyms
267 subdir-$(CONFIG_SECURITY_SELINUX) += selinux
269 Unlike obj-y/m, subdir-y/m does not need the trailing slash since this
276 Non-builtin vmlinux targets - extra-y
277 -------------------------------------
279 extra-y specifies targets which are needed for building vmlinux,
280 but not combined into built-in.a.
292 extra-y += vmlinux.lds
294 $(extra-y) should only contain targets needed for vmlinux.
296 Kbuild skips extra-y when vmlinux is apparently not a final goal.
299 If you intend to build targets unconditionally, always-y (explained
302 Always built goals - always-y
303 -----------------------------
305 always-y specifies targets which are literally always built when
311 offsets-file := include/generated/asm-offsets.h
312 always-y += $(offsets-file)
315 -----------------
317 ccflags-y, asflags-y and ldflags-y
325 ccflags-y specifies options for compiling with $(CC).
330 ccflags-y := -Os -D_LINUX -DBUILDING_ACPICA
331 ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
337 asflags-y specifies assembler options.
342 asflags-y := -ansi
344 ldflags-y specifies options for linking with $(LD).
349 ldflags-y += -T $(src)/decompress_$(arch-y).lds
351 subdir-ccflags-y, subdir-asflags-y
352 The two flags listed above are similar to ccflags-y and asflags-y.
353 The difference is that the subdir- variants have effect for the kbuild
355 Options specified using subdir-* are added to the commandline before
356 the options specified using the non-subdir variants.
360 subdir-ccflags-y := -Werror
362 ccflags-remove-y, asflags-remove-y
368 ccflags-remove-$(CONFIG_MCOUNT) += -pg
374 $(CFLAGS_$@) specifies per-file options for $(CC). The $@
377 CFLAGS_$@ has the higher priority than ccflags-remove-y; CFLAGS_$@
378 can re-add compiler flags that were removed by ccflags-remove-y.
383 CFLAGS_aha152x.o = -DAHA152X_STAT -DAUTOCONF
390 AFLAGS_$@ has the higher priority than asflags-remove-y; AFLAGS_$@
391 can re-add assembler flags that were removed by asflags-remove-y.
396 AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
397 AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312
398 AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
401 -------------------
407 3) Command-line used to compile target
410 be re-compiled.
413 ------------
418 Another example are the architecture-specific Makefiles which
442 $(CPP) -DCHIP=810 - < $< | ... $(src)/script_asm.pl
454 but when execution ``make -s`` one does not expect to see any output
457 text following $(kecho) to stdout except if ``make -s`` is used.
471 quiet_cmd_<command> - what shall be echoed
472 cmd_<command> - the command to execute
490 ------------------------
498 Kbuild achieves this by a kind of meta-programming.
513 obj-y/m, lib-y/m, extra-y/m, always-y/m, hostprogs, userprogs, Kbuild
533 tests on changed commands trigger execution of commands.
536 -----------------------
544 as-option
545 as-option is used to check if $(CC) -- when used to compile
546 assembler (``*.S``) files -- supports the given option. An optional
552 cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
554 In the above example, cflags-y will be assigned the option
555 -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
559 as-instr
560 as-instr checks if the assembler reports a specific instruction
563 Note: as-instr-option uses KBUILD_AFLAGS for assembler options
565 cc-option
566 cc-option is used to check if $(CC) supports a given option, and if
572 cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
574 In the above example, cflags-y will be assigned the option
575 -march=pentium-mmx if supported by $(CC), otherwise -march=i586.
576 The second argument to cc-option is optional, and if omitted,
577 cflags-y will be assigned no value if first option is not supported.
578 Note: cc-option uses KBUILD_CFLAGS for $(CC) options
580 cc-option-yn
581 cc-option-yn is used to check if $(CC) supports a given option
587 biarch := $(call cc-option-yn, -m32)
588 aflags-$(biarch) += -a32
589 cflags-$(biarch) += -m32
591 In the above example, $(biarch) is set to y if $(CC) supports the -m32
592 option. When $(biarch) equals "y", the expanded variables $(aflags-y)
593 and $(cflags-y) will be assigned the values -a32 and -m32,
596 Note: cc-option-yn uses KBUILD_CFLAGS for $(CC) options
598 cc-disable-warning
599 cc-disable-warning checks if $(CC) supports a given warning and returns
601 because gcc 4.4 and later accept any unknown -Wno-* option and only
606 KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
608 In the above example, -Wno-unused-but-set-variable will be added to
611 gcc-min-version
612 gcc-min-version tests if the value of $(CONFIG_GCC_VERSION) is greater than
617 cflags-$(call gcc-min-version, 70100) := -foo
619 In this example, cflags-y will be assigned the value -foo if $(CC) is gcc and
622 clang-min-version
623 clang-min-version tests if the value of $(CONFIG_CLANG_VERSION) is greater
628 cflags-$(call clang-min-version, 110000) := -foo
630 In this example, cflags-y will be assigned the value -foo if $(CC) is clang
633 cc-cross-prefix
634 cc-cross-prefix is used to check if there exists a $(CC) in path with
636 prefix$(CC) in the PATH is returned - and if no prefix$(CC) is found
640 call of cc-cross-prefix.
643 to set CROSS_COMPILE to well-known values but may have several
655 CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu-)
660 --------------------------
662 rustc-min-version
663 rustc-min-version tests if the value of $(CONFIG_RUSTC_VERSION) is greater
668 rustflags-$(call rustc-min-version, 108500) := -Cfoo
670 In this example, rustflags-y will be assigned the value -Cfoo if
674 -----------------------
676 ld-option
677 ld-option is used to check if $(LD) supports the supplied option.
678 ld-option takes two options as arguments.
686 LDFLAGS_vmlinux += $(call ld-option, -X)
689 -----------------
714 Two steps are required in order to use a host executable.
721 or utilise the variable ``always-y``.
725 -------------------
738 c-source file named bin2hex.c located in the same directory as
742 -----------------------
747 $(<executable>-objs) lists all objects used to link the final
754 lxdialog-objs := checklist.o lxdialog.o
761 Note: The syntax <executable>-y is not permitted for host-programs.
764 ---------------------------
774 qconf-cxxobjs := qconf.o
777 qconf.cc - identified by $(qconf-cxxobjs).
786 qconf-cxxobjs := qconf.o
787 qconf-objs := check.o
790 ----------------------------
800 target-rust := y
807 ----------------------------------------------
819 HOST_EXTRACFLAGS += -I/usr/include/ncurses
827 HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE)
834 HOSTLDLIBS_qconf := -L$(QTDIR)/lib
837 ``-L$(QTDIR)/lib``.
840 -------------------------------------
842 Kbuild will only build host-programs when they are referenced
852 hostprogs := gen-devlist
853 $(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist
854 ( cd $(obj); ./gen-devlist ) < $<
857 $(obj)/gen-devlist is updated. Note that references to
860 (2) Use always-y
863 shall be built when a makefile is entered, the always-y
870 always-y := $(hostprogs)
874 hostprogs-always-y := lxdialog
890 ------------------------
892 The following line tells kbuild that the program bpf-direct shall be
897 userprogs := bpf-direct
899 Kbuild assumes in the above example that bpf-direct is made from a
900 single C source file named bpf-direct.c located in the same directory
904 ----------------------------
909 $(<executable>-objs) lists all objects used to link the final
915 userprogs := bpf-fancy
916 bpf-fancy-objs := bpf-fancy.o bpf-helper.o
919 files. In the above example, bpf-fancy.c is compiled to bpf-fancy.o
920 and bpf-helper.c is compiled to bpf-helper.o.
922 Finally, the two .o files are linked to the executable, bpf-fancy.
923 Note: The syntax <executable>-y is not permitted for userspace programs.
926 ---------------------------------------------------
938 userccflags += -I usr/include
945 bpf-helper-userccflags += -I user/include
952 bpfilter_umh-userldflags += -static
955 ``<executable>-userldlibs``. The ``userldlibs`` syntax specifies libraries
958 When linking bpfilter_umh, it will be passed the extra option -static.
963 ------------------------------------------
978 (2) Use always-y
983 always-y := $(userprogs)
987 userprogs-always-y := binderfs_example
997 Kbuild knows targets listed in $(hostprogs), $(always-y), $(always-m),
998 $(always-), $(extra-y), $(extra-) and $(targets). They are all deleted
1004 $(clean-files).
1009 clean-files := crc32table.h
1016 $(no-clean-files) variable.
1018 Usually kbuild descends down in subdirectories due to ``obj-* := dir/``,
1025 subdir- := compressed
1030 Note 1: arch/$(SRCARCH)/Makefile cannot use ``subdir-``, because that file is
1032 ``subdir-``.
1034 Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will
1058 - Additional prerequisites are specified in arch/$(SRCARCH)/Makefile
1061 init-* core* drivers-* net-* libs-* and build all targets.
1063 - The values of the above variables are expanded in arch/$(SRCARCH)/Makefile.
1067 The very first objects linked are listed in scripts/head-object-list.txt.
1069 6) Finally, the architecture-specific part does any required post processing
1072 - This includes building boot records
1073 - Preparing initrd images and the like
1076 ----------------------------------------------------
1087 KBUILD_LDFLAGS := -m elf_s390
1089 Note: ldflags-y can be used to further customise
1090 the flags used. See `Non-builtin vmlinux targets - extra-y`_.
1103 LDFLAGS_vmlinux := -e stext
1117 OBJCOPYFLAGS := -O binary
1129 Default value - see top level Makefile.
1136 KBUILD_AFLAGS += -m64 -mcpu=ultrasparc
1141 Default value - see top level Makefile.
1150 cflags-$(CONFIG_X86_32) := -march=i386
1151 cflags-$(CONFIG_X86_64) := -mcmodel=small
1152 KBUILD_CFLAGS += $(cflags-y)
1160 cflags-$(CONFIG_MPENTIUMII) += $(call cc-option,\
1161 -march=pentium2,-march=i686)
1163 # Disable unit-at-a-time mode ...
1164 KBUILD_CFLAGS += $(call cc-option,-fno-unit-at-a-time)
1174 Default value - see top level Makefile.
1180 Note that target specification file generation (for ``--target``)
1184 Assembler options specific for built-in
1192 $(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that
1198 $(CC) options specific for built-in
1206 $(KBUILD_CFLAGS_MODULE) is used to add arch-specific options that
1212 $(RUSTC) options specific for built-in
1220 $(KBUILD_RUSTFLAGS_MODULE) is used to add arch-specific options that
1228 $(KBUILD_LDFLAGS_MODULE) is used to add arch-specific options
1234 The linker script with full path. Assigned by the top-level Makefile.
1238 order as listed in KBUILD_VMLINUX_OBJS.
1240 The objects listed in scripts/head-object-list.txt are exceptions;
1246 link vmlinux.
1249 --------------------------------
1258 --------------------------------
1273 See also chapter XXX-TODO that describes how kbuild supports
1277 -----------------------------------------
1281 corresponding arch-specific section for modules; the module-building
1282 machinery is all architecture-independent.
1284 core-y, libs-y, drivers-y
1285 $(libs-y) lists directories where a lib.a archive can be located.
1287 The rest list directories where a built-in.a object file can be
1290 Then the rest follows in this order:
1292 $(core-y), $(libs-y), $(drivers-y)
1295 and arch/$(SRCARCH)/Makefile only adds architecture-specific
1301 core-y += arch/sparc/
1303 libs-y += arch/sparc/prom/
1304 libs-y += arch/sparc/lib/
1306 drivers-$(CONFIG_PM) += arch/sparc/power/
1308 Architecture-specific boot images
1309 ---------------------------------
1337 There are no rules for naming architecture-specific targets,
1345 echo '* bzImage - Compressed kernel image (arch/x86/boot/bzImage)'
1366 -----------------------------------------
1372 Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
1377 LDFLAGS_bootsect := -Ttext 0x0 -s --oformat binary
1378 LDFLAGS_setup := -Ttext 0x0 -s --oformat binary -e begtext
1386 LDFLAGS_$@ syntax - one for each potential target.
1414 $(obj)/vmlinux.bin.gz: $(vmlinux.bin.all-y) FORCE
1421 blob to non-init memory prior to calling unflatten_device_tree().
1423 To use this command, simply add ``*.dtb`` into obj-y or targets, or make
1431 targets += $(dtb-y)
1432 DTC_FLAGS ?= -p 1024
1435 ----------------------------
1443 kbuild knows .lds files and includes a rule ``*lds.S`` -> ``*lds``.
1448 extra-y := vmlinux.lds
1450 The assignment to extra-y is used to tell kbuild to build the
1458 KBUILD_CPPFLAGS : Set in top-level Makefile
1459 cppflags-y : May be set in the kbuild makefile
1460 CPPFLAGS_$(@F) : Target-specific flags.
1465 architecture-specific files.
1468 --------------------
1470 The directory include/asm-generic contains the header files
1476 See `generic-y`_ for further info on syntax etc.
1478 Post-link pass
1479 --------------
1482 will be invoked for post-link objects (vmlinux and modules.ko)
1483 for architectures to run post-link passes on. Must also handle
1489 .tmp_vmlinux? targets to be called from link-vmlinux.sh.
1498 Many headers can be exported as-is but other headers require a
1499 minimal pre-processing before they are ready for user-space.
1501 The pre-processing does:
1503 - drop kernel-specific annotations
1504 - drop include of compiler.h
1505 - drop all sections that are kernel internal (guarded by ``ifdef __KERNEL__``)
1512 arch/<arch>/include/asm/ to list asm files coming from asm-generic.
1516 no-export-headers
1517 -----------------
1519 no-export-headers is essentially used by include/uapi/linux/Kbuild to
1523 generic-y
1524 ---------
1527 include/asm-generic then this is listed in the file
1533 generic-y += termios.h
1534 generic-y += rtc.h
1551 #include <asm-generic/termios.h>
1553 generated-y
1554 -----------
1556 If an architecture generates other header files alongside generic-y
1557 wrappers, generated-y specifies them.
1559 This prevents them being treated as stale asm-generic wrappers and
1565 generated-y += syscalls_32.h
1567 mandatory-y
1568 -----------
1570 mandatory-y is essentially used by include/(uapi/)asm-generic/Kbuild
1573 This works like optional generic-y. If a mandatory header is missing
1575 generate a wrapper of the asm-generic one.
1588 three-part version number, such as "2", "4", and "0". These three
1591 $(EXTRAVERSION) defines an even tinier sublevel for pre-patches
1592 or additional patches. It is usually some non-numeric string
1593 such as "-pre4", and is often blank.
1596 $(KERNELRELEASE) is a single string such as "2.4.0-pre4", suitable
1616 both 32-bit and 64-bit.
1625 Use this for architecture-specific install targets.
1640 default option --strip-debug will be used. Otherwise, the
1658 GNU Make supports elementary list-processing functions. The kernel
1663 immediate evaluation of the right-hand side and stores an actual string
1664 into the left-hand side. ``=`` is like a formula definition; it stores the
1665 right-hand side in an unevaluated form and then evaluates this form each
1666 time the left-hand side is used.
1674 - Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
1675 - Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
1676 - Updates by Sam Ravnborg <sam@ravnborg.org>
1677 - Language QA by Jan Engelhardt <jengelh@gmx.de>
1682 - Generating offset header files.
1683 - Add more variables to chapters 7 or 9?