Skip to content

Commit 3f675ec

Browse files
committed
fixup! BCM2708: Add core Device Tree support
1 parent e697a3b commit 3f675ec

2 files changed

Lines changed: 245 additions & 101 deletions

File tree

scripts/Makefile.build

Lines changed: 25 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -37,88 +37,18 @@ include $(srctree)/scripts/Makefile.compiler
3737
include $(kbuild-file)
3838
include $(srctree)/scripts/Makefile.lib
3939

40-
# flags that take effect in current and sub directories
41-
KBUILD_AFLAGS += $(subdir-asflags-y)
42-
KBUILD_CFLAGS += $(subdir-ccflags-y)
43-
KBUILD_RUSTFLAGS += $(subdir-rustflags-y)
44-
45-
# Figure out what we need to build from the various variables
46-
# ===========================================================================
47-
48-
# When an object is listed to be built compiled-in and modular,
49-
# only build the compiled-in version
50-
obj-m := $(filter-out $(obj-y),$(obj-m))
51-
52-
# Libraries are always collected in one lib file.
53-
# Filter out objects already built-in
54-
lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m)))
55-
56-
# Subdirectories we need to descend into
57-
subdir-ym := $(sort $(subdir-y) $(subdir-m) \
58-
$(patsubst %/,%, $(filter %/, $(obj-y) $(obj-m))))
59-
60-
# Handle objects in subdirs:
61-
# - If we encounter foo/ in $(obj-y), replace it by foo/built-in.a and
62-
# foo/modules.order
63-
# - If we encounter foo/ in $(obj-m), replace it by foo/modules.order
64-
#
65-
# Generate modules.order to determine modorder. Unfortunately, we don't have
66-
# information about ordering between -y and -m subdirs. Just put -y's first.
67-
68-
ifdef need-modorder
69-
obj-m := $(patsubst %/,%/modules.order, $(filter %/, $(obj-y)) $(obj-m))
70-
else
71-
obj-m := $(filter-out %/, $(obj-m))
72-
endif
73-
74-
ifdef need-builtin
75-
obj-y := $(patsubst %/, %/built-in.a, $(obj-y))
76-
else
77-
obj-y := $(filter-out %/, $(obj-y))
40+
# Do not include hostprogs rules unless needed.
41+
# $(sort ...) is used here to remove duplicated words and excessive spaces.
42+
hostprogs := $(sort $(hostprogs))
43+
ifneq ($(hostprogs),)
44+
include $(srctree)/scripts/Makefile.host
7845
endif
7946

80-
# Expand $(foo-objs) $(foo-y) etc. by replacing their individuals
81-
suffix-search = $(strip $(foreach s, $3, $($(1:%$(strip $2)=%$s))))
82-
# List composite targets that are constructed by combining other targets
83-
multi-search = $(sort $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $m)))
84-
# List primitive targets that are compiled from source files
85-
real-search = $(foreach m, $1, $(if $(call suffix-search, $m, $2, $3 -), $(call suffix-search, $m, $2, $3), $m))
86-
87-
# If $(foo-objs), $(foo-y), $(foo-m), or $(foo-) exists, foo.o is a composite object
88-
multi-obj-y := $(call multi-search, $(obj-y), .o, -objs -y)
89-
multi-obj-m := $(call multi-search, $(obj-m), .o, -objs -y -m)
90-
multi-obj-ym := $(multi-obj-y) $(multi-obj-m)
91-
92-
# Replace multi-part objects by their individual parts,
93-
# including built-in.a from subdirectories
94-
real-obj-y := $(call real-search, $(obj-y), .o, -objs -y)
95-
real-obj-m := $(call real-search, $(obj-m), .o, -objs -y -m)
96-
97-
always-y += $(always-m)
98-
99-
# hostprogs-always-y += foo
100-
# ... is a shorthand for
101-
# hostprogs += foo
102-
# always-y += foo
103-
hostprogs += $(hostprogs-always-y) $(hostprogs-always-m)
104-
always-y += $(hostprogs-always-y) $(hostprogs-always-m)
105-
106-
# userprogs-always-y is likewise.
107-
userprogs += $(userprogs-always-y) $(userprogs-always-m)
108-
always-y += $(userprogs-always-y) $(userprogs-always-m)
109-
110-
# Add subdir path
111-
112-
ifneq ($(obj),.)
113-
extra-y := $(addprefix $(obj)/, $(extra-y))
114-
always-y := $(addprefix $(obj)/, $(always-y))
115-
targets := $(addprefix $(obj)/, $(targets))
116-
obj-m := $(addprefix $(obj)/, $(obj-m))
117-
lib-y := $(addprefix $(obj)/, $(lib-y))
118-
real-obj-y := $(addprefix $(obj)/, $(real-obj-y))
119-
real-obj-m := $(addprefix $(obj)/, $(real-obj-m))
120-
multi-obj-m := $(addprefix $(obj)/, $(multi-obj-m))
121-
subdir-ym := $(addprefix $(obj)/, $(subdir-ym))
47+
# Do not include userprogs rules unless needed.
48+
# $(sort ...) is used here to remove duplicated words and excessive spaces.
49+
userprogs := $(sort $(userprogs))
50+
ifneq ($(userprogs),)
51+
include $(srctree)/scripts/Makefile.userprogs
12252
endif
12353

12454
ifndef obj
@@ -137,6 +67,7 @@ endif
13767
# subdir-builtin and subdir-modorder may contain duplications. Use $(sort ...)
13868
subdir-builtin := $(sort $(filter %/built-in.a, $(real-obj-y)))
13969
subdir-modorder := $(sort $(filter %/modules.order, $(obj-m)))
70+
subdir-dtbslist := $(sort $(filter %/dtbs-list, $(dtb-y)))
14071

14172
targets-for-builtin := $(extra-y)
14273

@@ -429,7 +360,7 @@ $(obj)/%.o: $(obj)/%.S FORCE
429360

430361
targets += $(filter-out $(subdir-builtin), $(real-obj-y))
431362
targets += $(filter-out $(subdir-modorder), $(real-obj-m))
432-
targets += $(lib-y) $(always-y)
363+
targets += $(real-dtb-y) $(lib-y) $(always-y)
433364

434365
# Linker scripts preprocessor (.lds.S -> .lds)
435366
# ---------------------------------------------------------------------------
@@ -455,6 +386,7 @@ $(obj)/%.asn1.c $(obj)/%.asn1.h: $(src)/%.asn1 $(objtree)/scripts/asn1_compiler
455386
# To build objects in subdirs, we need to descend into the directories
456387
$(subdir-builtin): $(obj)/%/built-in.a: $(obj)/% ;
457388
$(subdir-modorder): $(obj)/%/modules.order: $(obj)/% ;
389+
$(subdir-dtbslist): $(obj)/%/dtbs-list: $(obj)/% ;
458390

459391
#
460392
# Rule to compile a set of .o files into one .a file (without symbol table)
@@ -480,6 +412,9 @@ cmd_gen_order = { $(foreach m, $(real-prereqs), \
480412
$(obj)/modules.order: $(obj-m) FORCE
481413
$(call if_changed,gen_order)
482414

415+
$(obj)/dtbs-list: $(dtb-y) $(dtbo-y) FORCE
416+
$(call if_changed,gen_order)
417+
483418
#
484419
# Rule to compile a set of .o files into one .a file (with symbol table)
485420
#
@@ -508,26 +443,15 @@ intermediate_targets = $(foreach sfx, $(2), \
508443
$(patsubst %$(strip $(1)),%$(sfx), \
509444
$(filter %$(strip $(1)), $(targets))))
510445
# %.asn1.o <- %.asn1.[ch] <- %.asn1
511-
targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h)
512-
513-
# Include additional build rules when necessary
514-
# ---------------------------------------------------------------------------
515-
516-
# $(sort ...) is used here to remove duplicated words and excessive spaces.
517-
hostprogs := $(sort $(hostprogs))
518-
ifneq ($(hostprogs),)
519-
include $(srctree)/scripts/Makefile.host
520-
endif
521-
522-
# $(sort ...) is used here to remove duplicated words and excessive spaces.
523-
userprogs := $(sort $(userprogs))
524-
ifneq ($(userprogs),)
525-
include $(srctree)/scripts/Makefile.userprogs
526-
endif
527-
528-
ifneq ($(need-dtbslist)$(dtb-y)$(dtb-)$(filter %.dtb %.dtb.o %.dtbo.o,$(targets)),)
529-
include $(srctree)/scripts/Makefile.dtbs
530-
endif
446+
# %.dtb.o <- %.dtb.S <- %.dtb <- %.dts
447+
# %.dtbo.o <- %.dtbo.S <- %.dtbo <- %.dtso
448+
# %.lex.o <- %.lex.c <- %.l
449+
# %.tab.o <- %.tab.[ch] <- %.y
450+
targets += $(call intermediate_targets, .asn1.o, .asn1.c .asn1.h) \
451+
$(call intermediate_targets, .dtb.o, .dtb.S .dtb) \
452+
$(call intermediate_targets, .dtbo.o, .dtbo.S .dtbo) \
453+
$(call intermediate_targets, .lex.o, .lex.c) \
454+
$(call intermediate_targets, .tab.o, .tab.c .tab.h)
531455

532456
# Build
533457
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)