Blame view
scripts/Makefile.lib
9.15 KB
f77bf0142 kbuild: introduce... |
1 2 3 4 5 |
# Backward compatibility asflags-y += $(EXTRA_AFLAGS) ccflags-y += $(EXTRA_CFLAGS) cppflags-y += $(EXTRA_CPPFLAGS) ldflags-y += $(EXTRA_LDFLAGS) |
720097d89 kbuild: introduce... |
6 7 8 9 |
# # flags that take effect in sub directories export KBUILD_SUBDIR_ASFLAGS := $(KBUILD_SUBDIR_ASFLAGS) $(subdir-asflags-y) export KBUILD_SUBDIR_CCFLAGS := $(KBUILD_SUBDIR_CCFLAGS) $(subdir-ccflags-y) |
1da177e4c Linux-2.6.12-rc2 |
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# Figure out what we need to build from the various variables # =========================================================================== # When an object is listed to be built compiled-in and modular, # only build the compiled-in version obj-m := $(filter-out $(obj-y),$(obj-m)) # Libraries are always collected in one lib file. # Filter out objects already built-in lib-y := $(filter-out $(obj-y), $(sort $(lib-y) $(lib-m))) # Handle objects in subdirs # --------------------------------------------------------------------------- # o if we encounter foo/ in $(obj-y), replace it by foo/built-in.o # and add the directory to the list of dirs to descend into: $(subdir-y) # o if we encounter foo/ in $(obj-m), remove it from $(obj-m) # and add the directory to the list of dirs to descend into: $(subdir-m) |
551559e13 kbuild: implement... |
30 31 32 33 |
# Determine modorder. # Unfortunately, we don't have information about ordering between -y # and -m subdirs. Just put -y's first. modorder := $(patsubst %/,%/modules.order, $(filter %/, $(obj-y)) $(obj-m:.o=.ko)) |
1da177e4c Linux-2.6.12-rc2 |
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
__subdir-y := $(patsubst %/,%,$(filter %/, $(obj-y))) subdir-y += $(__subdir-y) __subdir-m := $(patsubst %/,%,$(filter %/, $(obj-m))) subdir-m += $(__subdir-m) obj-y := $(patsubst %/, %/built-in.o, $(obj-y)) obj-m := $(filter-out %/, $(obj-m)) # Subdirectories we need to descend into subdir-ym := $(sort $(subdir-y) $(subdir-m)) # if $(foo-objs) exists, foo.o is a composite object multi-used-y := $(sort $(foreach m,$(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m)))) multi-used-m := $(sort $(foreach m,$(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))), $(m)))) multi-used := $(multi-used-y) $(multi-used-m) single-used-m := $(sort $(filter-out $(multi-used-m),$(obj-m))) # Build list of the parts of our composite objects, our composite # objects depend on those (obviously) multi-objs-y := $(foreach m, $(multi-used-y), $($(m:.o=-objs)) $($(m:.o=-y))) multi-objs-m := $(foreach m, $(multi-used-m), $($(m:.o=-objs)) $($(m:.o=-y))) multi-objs := $(multi-objs-y) $(multi-objs-m) |
f5fb97652 kbuild: fix direc... |
56 57 58 |
# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to # tell kbuild to descend subdir-obj-y := $(filter %/built-in.o, $(obj-y)) |
1da177e4c Linux-2.6.12-rc2 |
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# $(obj-dirs) is a list of directories that contain object files obj-dirs := $(dir $(multi-objs) $(subdir-obj-y)) # Replace multi-part objects by their individual parts, look at local dir only real-objs-y := $(foreach m, $(filter-out $(subdir-obj-y), $(obj-y)), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) $(extra-y) real-objs-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) # Add subdir path extra-y := $(addprefix $(obj)/,$(extra-y)) always := $(addprefix $(obj)/,$(always)) targets := $(addprefix $(obj)/,$(targets)) |
551559e13 kbuild: implement... |
72 |
modorder := $(addprefix $(obj)/,$(modorder)) |
1da177e4c Linux-2.6.12-rc2 |
73 74 75 76 77 78 79 80 81 82 83 84 85 |
obj-y := $(addprefix $(obj)/,$(obj-y)) obj-m := $(addprefix $(obj)/,$(obj-m)) lib-y := $(addprefix $(obj)/,$(lib-y)) subdir-obj-y := $(addprefix $(obj)/,$(subdir-obj-y)) real-objs-y := $(addprefix $(obj)/,$(real-objs-y)) real-objs-m := $(addprefix $(obj)/,$(real-objs-m)) single-used-m := $(addprefix $(obj)/,$(single-used-m)) multi-used-y := $(addprefix $(obj)/,$(multi-used-y)) multi-used-m := $(addprefix $(obj)/,$(multi-used-m)) multi-objs-y := $(addprefix $(obj)/,$(multi-objs-y)) multi-objs-m := $(addprefix $(obj)/,$(multi-objs-m)) subdir-ym := $(addprefix $(obj)/,$(subdir-ym)) obj-dirs := $(addprefix $(obj)/,$(obj-dirs)) |
1da177e4c Linux-2.6.12-rc2 |
86 87 88 89 90 91 92 |
# These flags are needed for modversions and compiling, so we define them here # already # $(modname_flags) #defines KBUILD_MODNAME as the name of the module it will # end up in (or would, if it gets compiled in) # Note: It's possible that one object gets potentially linked into more # than one module. In that case KBUILD_MODNAME will be set to foo_bar, # where foo and bar are the name of the modules. |
f83b5e323 kbuild: set corre... |
93 |
name-fix = $(subst $(comma),_,$(subst -,_,$1)) |
5e8d780d7 kbuild: fix ia64 ... |
94 |
basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(basetarget)))" |
f83b5e323 kbuild: set corre... |
95 96 |
modname_flags = $(if $(filter 1,$(words $(modname))),\ -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") |
1da177e4c Linux-2.6.12-rc2 |
97 |
|
346e15beb driver core: basi... |
98 |
#hash values |
e9d376f0f dynamic debug: co... |
99 |
ifdef CONFIG_DYNAMIC_DEBUG |
346e15beb driver core: basi... |
100 101 102 103 104 |
debug_flags = -D"DEBUG_HASH=$(shell ./scripts/basic/hash djb2 $(@D)$(modname))"\ -D"DEBUG_HASH2=$(shell ./scripts/basic/hash r5 $(@D)$(modname))" else debug_flags = endif |
720097d89 kbuild: introduce... |
105 |
orig_c_flags = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(KBUILD_SUBDIR_CCFLAGS) \ |
d8672b40d kbuild: expand -I... |
106 |
$(ccflags-y) $(CFLAGS_$(basetarget).o) |
656ee82cc kbuild: create ne... |
107 |
_c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags)) |
720097d89 kbuild: introduce... |
108 |
_a_flags = $(KBUILD_CPPFLAGS) $(KBUILD_AFLAGS) $(KBUILD_SUBDIR_ASFLAGS) \ |
d8672b40d kbuild: expand -I... |
109 |
$(asflags-y) $(AFLAGS_$(basetarget).o) |
f77bf0142 kbuild: introduce... |
110 |
_cpp_flags = $(KBUILD_CPPFLAGS) $(cppflags-y) $(CPPFLAGS_$(@F)) |
1da177e4c Linux-2.6.12-rc2 |
111 |
|
2521f2c22 gcov: add gcov pr... |
112 113 114 115 116 117 118 119 120 121 |
# # Enable gcov profiling flags for a file, directory or for all files depending # on variables GCOV_PROFILE_obj.o, GCOV_PROFILE and CONFIG_GCOV_PROFILE_ALL # (in this order) # ifeq ($(CONFIG_GCOV_KERNEL),y) _c_flags += $(if $(patsubst n%,, \ $(GCOV_PROFILE_$(basetarget).o)$(GCOV_PROFILE)$(CONFIG_GCOV_PROFILE_ALL)), \ $(CFLAGS_GCOV)) endif |
9e1b9b807 module: make MODU... |
122 123 124 |
ifdef CONFIG_SYMBOL_PREFIX _cpp_flags += -DSYMBOL_PREFIX=$(patsubst "%",%,$(CONFIG_SYMBOL_PREFIX)) endif |
1da177e4c Linux-2.6.12-rc2 |
125 126 127 128 129 130 131 132 |
# If building the kernel in a separate objtree expand all occurrences # of -Idir to -I$(srctree)/dir except for absolute paths (starting with '/'). ifeq ($(KBUILD_SRC),) __c_flags = $(_c_flags) __a_flags = $(_a_flags) __cpp_flags = $(_cpp_flags) else |
1da177e4c Linux-2.6.12-rc2 |
133 134 135 136 137 138 139 140 |
# -I$(obj) locates generated .h files # $(call addtree,-I$(obj)) locates .h files in srctree, from generated .c files # and locates generated .h files # FIXME: Replace both with specific CFLAGS* statements in the makefiles __c_flags = $(call addtree,-I$(obj)) $(call flags,_c_flags) __a_flags = $(call flags,_a_flags) __cpp_flags = $(call flags,_cpp_flags) endif |
d8672b40d kbuild: expand -I... |
141 142 |
c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \ $(__c_flags) $(modkern_cflags) \ |
346e15beb driver core: basi... |
143 144 |
-D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) \ $(debug_flags) |
1da177e4c Linux-2.6.12-rc2 |
145 |
|
d8672b40d kbuild: expand -I... |
146 |
a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \ |
1da177e4c Linux-2.6.12-rc2 |
147 |
$(__a_flags) $(modkern_aflags) |
d8672b40d kbuild: expand -I... |
148 149 |
cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE) \ $(__cpp_flags) |
1da177e4c Linux-2.6.12-rc2 |
150 |
|
f77bf0142 kbuild: introduce... |
151 |
ld_flags = $(LDFLAGS) $(ldflags-y) |
1da177e4c Linux-2.6.12-rc2 |
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# Finds the multi-part object the current object will be linked into modname-multi = $(sort $(foreach m,$(multi-used),\ $(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=)))) # Shipped files # =========================================================================== quiet_cmd_shipped = SHIPPED $@ cmd_shipped = cat $< > $@ $(obj)/%:: $(src)/%_shipped $(call cmd,shipped) # Commands useful for building a boot image # =========================================================================== # # Use as following: # # target: source(s) FORCE # $(if_changed,ld/objcopy/gzip) # |
836caba77 kbuild: kill back... |
174 |
# and add target to extra-y so that we know we have to |
1da177e4c Linux-2.6.12-rc2 |
175 176 177 178 179 180 |
# read in the saved command line # Linking # --------------------------------------------------------------------------- quiet_cmd_ld = LD $@ |
f77bf0142 kbuild: introduce... |
181 |
cmd_ld = $(LD) $(LDFLAGS) $(ldflags-y) $(LDFLAGS_$(@F)) \ |
1da177e4c Linux-2.6.12-rc2 |
182 183 184 185 186 187 188 189 190 191 192 193 |
$(filter-out FORCE,$^) -o $@ # Objcopy # --------------------------------------------------------------------------- quiet_cmd_objcopy = OBJCOPY $@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ # Gzip # --------------------------------------------------------------------------- quiet_cmd_gzip = GZIP $@ |
d3dd3b5a2 kbuild: allow com... |
194 195 |
cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \ (rm -f $@ ; false) |
1da177e4c Linux-2.6.12-rc2 |
196 |
|
1da177e4c Linux-2.6.12-rc2 |
197 |
|
bc22c17e1 bzip2/lzma: libra... |
198 199 |
# Bzip2 # --------------------------------------------------------------------------- |
d3dd3b5a2 kbuild: allow com... |
200 201 |
# Bzip2 and LZMA do not include size in file... so we have to fake that; # append the size as a 32-bit littleendian number as gzip does. |
4a2ff67c8 kbuild: fix bzIma... |
202 |
size_append = printf $(shell \ |
d3dd3b5a2 kbuild: allow com... |
203 204 205 206 207 |
dec_size=0; \ for F in $1; do \ fsize=$$(stat -c "%s" $$F); \ dec_size=$$(expr $$dec_size + $$fsize); \ done; \ |
1373411ae kbuild: really fi... |
208 209 210 211 212 213 214 215 |
printf "%08x " $$dec_size | \ sed 's/\(..\)/\1 /g' | { \ read ch0 ch1 ch2 ch3; \ for ch in $$ch3 $$ch2 $$ch1 $$ch0; do \ printf '%s%03o' '\\' $$((0x$$ch)); \ done; \ } \ |
d3dd3b5a2 kbuild: allow com... |
216 217 218 219 220 221 |
) quiet_cmd_bzip2 = BZIP2 $@ cmd_bzip2 = (cat $(filter-out FORCE,$^) | \ bzip2 -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ (rm -f $@ ; false) |
bc22c17e1 bzip2/lzma: libra... |
222 223 224 225 226 |
# Lzma # --------------------------------------------------------------------------- quiet_cmd_lzma = LZMA $@ |
d3dd3b5a2 kbuild: allow com... |
227 228 229 |
cmd_lzma = (cat $(filter-out FORCE,$^) | \ lzma -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ (rm -f $@ ; false) |
7dd65feb6 lib: add support ... |
230 |
|
2d74b2c62 scripts/Makefile.... |
231 |
quiet_cmd_lzo = LZO $@ |
7dd65feb6 lib: add support ... |
232 233 234 |
cmd_lzo = (cat $(filter-out FORCE,$^) | \ lzop -9 && $(call size_append, $(filter-out FORCE,$^))) > $@ || \ (rm -f $@ ; false) |
d61931d89 x86: Add optimize... |
235 236 237 238 |
# misc stuff # --------------------------------------------------------------------------- quote:=" |