Makefile.build (f594d0b9b34aeb8e3ffa524eaa8a4085afb56d22) Makefile.build (a5967db9af51a84f5e181600954714a9e4c69f1f)
1# ==========================================================================
2# Building
3# ==========================================================================
4
5src := $(obj)
6
7PHONY := __build
8__build:

--- 67 unchanged lines hidden (view full) ---

76ifndef obj
77$(warning kbuild: Makefile.build is included improperly)
78endif
79
80# ===========================================================================
81
82ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
83lib-target := $(obj)/lib.a
1# ==========================================================================
2# Building
3# ==========================================================================
4
5src := $(obj)
6
7PHONY := __build
8__build:

--- 67 unchanged lines hidden (view full) ---

76ifndef obj
77$(warning kbuild: Makefile.build is included improperly)
78endif
79
80# ===========================================================================
81
82ifneq ($(strip $(lib-y) $(lib-m) $(lib-)),)
83lib-target := $(obj)/lib.a
84obj-y += $(obj)/lib-ksyms.o
84endif
85
86ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
87builtin-target := $(obj)/built-in.o
88endif
89
90modorder-target := $(obj)/modules.order
91

--- 261 unchanged lines hidden (view full) ---

353
354# To build objects in subdirs, we need to descend into the directories
355$(sort $(subdir-obj-y)): $(subdir-ym) ;
356
357#
358# Rule to compile a set of .o files into one .o file
359#
360ifdef builtin-target
85endif
86
87ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
88builtin-target := $(obj)/built-in.o
89endif
90
91modorder-target := $(obj)/modules.order
92

--- 261 unchanged lines hidden (view full) ---

354
355# To build objects in subdirs, we need to descend into the directories
356$(sort $(subdir-obj-y)): $(subdir-ym) ;
357
358#
359# Rule to compile a set of .o files into one .o file
360#
361ifdef builtin-target
361quiet_cmd_link_o_target = LD $@
362
363ifdef CONFIG_THIN_ARCHIVES
364 cmd_make_builtin = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS)
365 cmd_make_empty_builtin = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS)
366 quiet_cmd_link_o_target = AR $@
367else
368 cmd_make_builtin = $(LD) $(ld_flags) -r -o
369 cmd_make_empty_builtin = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS)
370 quiet_cmd_link_o_target = LD $@
371endif
372
362# If the list of objects to link is empty, just create an empty built-in.o
363cmd_link_o_target = $(if $(strip $(obj-y)),\
373# If the list of objects to link is empty, just create an empty built-in.o
374cmd_link_o_target = $(if $(strip $(obj-y)),\
364 $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^) \
375 $(cmd_make_builtin) $@ $(filter $(obj-y), $^) \
365 $(cmd_secanalysis),\
376 $(cmd_secanalysis),\
366 rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@)
377 $(cmd_make_empty_builtin) $@)
367
368$(builtin-target): $(obj-y) FORCE
369 $(call if_changed,link_o_target)
370
371targets += $(builtin-target)
372endif # builtin-target
373
374#

--- 9 unchanged lines hidden (view full) ---

384$(modorder-target): $(subdir-ym) FORCE
385 $(Q)(cat /dev/null; $(modorder-cmds)) > $@
386
387#
388# Rule to compile a set of .o files into one .a file
389#
390ifdef lib-target
391quiet_cmd_link_l_target = AR $@
378
379$(builtin-target): $(obj-y) FORCE
380 $(call if_changed,link_o_target)
381
382targets += $(builtin-target)
383endif # builtin-target
384
385#

--- 9 unchanged lines hidden (view full) ---

395$(modorder-target): $(subdir-ym) FORCE
396 $(Q)(cat /dev/null; $(modorder-cmds)) > $@
397
398#
399# Rule to compile a set of .o files into one .a file
400#
401ifdef lib-target
402quiet_cmd_link_l_target = AR $@
392cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y)
393
403
404ifdef CONFIG_THIN_ARCHIVES
405 cmd_link_l_target = rm -f $@; $(AR) rcsT$(KBUILD_ARFLAGS) $@ $(lib-y)
406else
407 cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y)
408endif
409
394$(lib-target): $(lib-y) FORCE
395 $(call if_changed,link_l_target)
396
397targets += $(lib-target)
410$(lib-target): $(lib-y) FORCE
411 $(call if_changed,link_l_target)
412
413targets += $(lib-target)
414
415dummy-object = $(obj)/.lib_exports.o
416ksyms-lds = $(dot-target).lds
417ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX
418ref_prefix = EXTERN(_
419else
420ref_prefix = EXTERN(
398endif
399
421endif
422
423quiet_cmd_export_list = EXPORTS $@
424cmd_export_list = $(OBJDUMP) -h $< | \
425 sed -ne '/___ksymtab/{s/.*+/$(ref_prefix)/;s/ .*/)/;p}' >$(ksyms-lds);\
426 rm -f $(dummy-object);\
427 $(AR) rcs$(KBUILD_ARFLAGS) $(dummy-object);\
428 $(LD) $(ld_flags) -r -o $@ -T $(ksyms-lds) $(dummy-object);\
429 rm $(dummy-object) $(ksyms-lds)
430
431$(obj)/lib-ksyms.o: $(lib-target) FORCE
432 $(call if_changed,export_list)
433endif
434
400#
401# Rule to link composite objects
402#
403# Composite objects are specified in kbuild makefile as follows:
404# <composite-object>-objs := <list of .o files>
405# or
406# <composite-object>-y := <list of .o files>
407# or

--- 57 unchanged lines hidden ---
435#
436# Rule to link composite objects
437#
438# Composite objects are specified in kbuild makefile as follows:
439# <composite-object>-objs := <list of .o files>
440# or
441# <composite-object>-y := <list of .o files>
442# or

--- 57 unchanged lines hidden ---