mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
make: decouple rw and ro object file sets
When building EC image, in the majority of cases the RW and RO images
are built from exactly the same set of object files, and the RO set of
objects is used as a template to derive the RW set of objects.
This is not necessarily correct in all cases, let's just create an
abstract set of object files and use it to derive the sets for RO, RW
and sharedlib as appropriate.
BRANCH=None
BUG=chrome-os-partner:43025
TEST=tested as follows:
- changed the Makefile to sort all object files in a single list
(instead of sorting them by directory, with the directory list
unchanged). Built all targets, saved all .smap files. Then applied
this change and again built all targets. Compare all smap files,
there were no differences.
- modified board/samus/board.h to trigger building sharedlib
objects, verified that build/samus/sharedlib built fine.
Change-Id: Ie563aca62028cae9e16f067ba20b5e2930355cf5
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/310389
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
a25c7025e1
commit
d5e49bc23d
29
Makefile
29
Makefile
@@ -119,7 +119,7 @@ $(eval CHIP_VARIANT_$(UC_CHIP_VARIANT)=y)
|
||||
$(eval CHIP_FAMILY_$(UC_CHIP_FAMILY)=y)
|
||||
|
||||
# Private subdirectories may call this from their build.mk
|
||||
ro-objs_from_dir=$(sort $(foreach obj, $($(2)-y), $(out)/RO/$(1)/$(obj)))
|
||||
objs_from_dir=$(foreach obj, $($(2)-y), $(1)/$(obj))
|
||||
|
||||
# Get build configuration from sub-directories
|
||||
# Note that this re-includes the board and chip makefiles
|
||||
@@ -140,27 +140,28 @@ include util/signer/build.mk
|
||||
includes+=$(includes-y)
|
||||
|
||||
# Get all sources to build
|
||||
all-ro-y+=$(call ro-objs_from_dir,core/$(CORE),core)
|
||||
all-ro-y+=$(call ro-objs_from_dir,chip/$(CHIP),chip)
|
||||
all-ro-y+=$(call ro-objs_from_dir,$(BDIR),board)
|
||||
all-ro-y+=$(call ro-objs_from_dir,private,private)
|
||||
all-ro-y+=$(call ro-objs_from_dir,private-cr51,private-cr51)
|
||||
all-ro-y+=$(call ro-objs_from_dir,common,common)
|
||||
all-ro-y+=$(call ro-objs_from_dir,driver,driver)
|
||||
all-ro-y+=$(call ro-objs_from_dir,power,power)
|
||||
all-ro-y+=$(call ro-objs_from_dir,test,$(PROJECT))
|
||||
all-obj-y+=$(call objs_from_dir,core/$(CORE),core)
|
||||
all-obj-y+=$(call objs_from_dir,chip/$(CHIP),chip)
|
||||
all-obj-y+=$(call objs_from_dir,$(BDIR),board)
|
||||
all-obj-y+=$(call objs_from_dir,private,private)
|
||||
all-obj-y+=$(call objs_from_dir,private-cr51,private-cr51)
|
||||
all-obj-y+=$(call objs_from_dir,common,common)
|
||||
all-obj-y+=$(call objs_from_dir,driver,driver)
|
||||
all-obj-y+=$(call objs_from_dir,power,power)
|
||||
all-obj-y+=$(call objs_from_dir,test,$(PROJECT))
|
||||
dirs=core/$(CORE) chip/$(CHIP) $(BDIR) common power test
|
||||
dirs+= private private-cr51
|
||||
dirs+=$(shell find driver -type d)
|
||||
common_dirs=util
|
||||
|
||||
ro-objs := $(all-ro-y)
|
||||
ro-objs := $(sort $(foreach obj, $(all-obj-y), $(out)/RO/$(obj)))
|
||||
rw-objs := $(sort $(foreach obj, $(all-obj-y), $(out)/RW/$(obj)))
|
||||
|
||||
# Don't include the shared objects in the RO/RW image if we're enabling
|
||||
# the shared objects library.
|
||||
ifeq ($(CONFIG_SHAREDLIB),y)
|
||||
ro-objs := $(filter-out %_sharedlib.o, $(ro-objs))
|
||||
endif
|
||||
rw-objs := $(ro-objs:$(out)/RO/%=$(out)/RW/%)
|
||||
ro-deps := $(ro-objs:%.o=%.o.d)
|
||||
rw-deps := $(rw-objs:%.o=%.o.d)
|
||||
deps := $(ro-deps) $(rw-deps)
|
||||
@@ -181,8 +182,8 @@ rw: $(libsharedobjs_elf-y) $(out)/RW/$(PROJECT).RW.flat
|
||||
|
||||
# Shared objects library
|
||||
SHOBJLIB := libsharedobjs
|
||||
sharedlib-objs := $(filter %_sharedlib.o, $(all-ro-y))
|
||||
sharedlib-objs := $(sharedlib-objs:$(out)/RO/%=$(out)/$(SHOBJLIB)/%)
|
||||
sharedlib-objs := $(filter %_sharedlib.o, $(all-obj-y))
|
||||
sharedlib-objs := $(foreach obj, $(sharedlib-objs), $(out)/$(SHOBJLIB)/$(obj))
|
||||
sharedlib-deps := $(sharedlib-objs:%.o=%.o.d)
|
||||
deps += $(sharedlib-deps)
|
||||
def_libsharedobjs_deps := $(sharedlib-objs)
|
||||
|
||||
Reference in New Issue
Block a user