mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 01:50:53 +00:00
QEMU tests served us well, but it has been more and more difficult to maintain as we now have more chips and use more functionality from each EC chip. With emulator tests in place to test common code and hardware test to test per-chip/per-board drivers, it's time to remove QEMU tests to simplify our code base. QEMU tests that are covered by other emulator tests are removed completely; tests that are not covered are left alone for now to preserve the test logic. BUG=chrome-os-partner:18343 TEST=util/make_all.sh BRANCH=None Change-Id: I5a4dd2f5ac42f7f66f86fdce0b62dbd2c65bf66a Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/174669 Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
180 lines
5.4 KiB
Makefile
180 lines
5.4 KiB
Makefile
# -*- makefile -*-
|
|
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
#
|
|
# Embedded Controller firmware build system - common targets
|
|
#
|
|
|
|
objs := $(all-y)
|
|
deps := $(objs:%.o=%.o.d)
|
|
build-utils := $(foreach u,$(build-util-bin),$(out)/util/$(u))
|
|
host-utils := $(foreach u,$(host-util-bin),$(out)/util/$(u))
|
|
|
|
# Create output directories if necessary
|
|
_dir_create := $(foreach d,$(dirs),$(shell [ -d $(out)/$(d) ] || \
|
|
mkdir -p $(out)/$(d)))
|
|
_dir_y_create := $(foreach d,$(dirs-y),$(shell [ -d $(out)/$(d) ] || \
|
|
mkdir -p $(out)/$(d)))
|
|
|
|
section = $(subst .,,$(suffix $(1)))
|
|
section_is = $(subst .,,SECTION_IS_$(suffix $(1)))
|
|
|
|
# Decrease verbosity unless you pass V=1
|
|
quiet = $(if $(V),,@echo ' $(2)' $(subst $(out)/,,$@) ; )$(cmd_$(1))
|
|
silent = $(if $(V),,1>/dev/null)
|
|
|
|
# commands to build all targets
|
|
cmd_lds = $(CPP) -P -C -MMD -MF $@.d -MT $@ $(CPPFLAGS) \
|
|
-D$(call section_is,$*) \
|
|
-DSECTION=$(call section,$*) $< -o $@
|
|
cmd_obj_to_bin = $(OBJCOPY) --gap-fill=0xff -O binary $^ $(out)/$*.bin.tmp
|
|
cmd_flat_to_obj = $(CC) -T $(out)/firmware_image.lds -nostdlib $(CPPFLAGS) \
|
|
-Wl,--build-id=none -o $@ $<
|
|
cmd_elf_to_flat = $(OBJCOPY) -O binary $^ $@
|
|
cmd_elf_to_dis = $(OBJDUMP) -D $< > $@
|
|
cmd_elf = $(LD) $(LDFLAGS) $(objs) -o $@ -T $< -Map $(out)/$*.map
|
|
cmd_exe = $(CC) $(HOST_TEST_LDFLAGS) $(objs) -o $@
|
|
cmd_c_to_o = $(CC) $(CFLAGS) -MMD -MF $@.d -c $< -o $@
|
|
cmd_c_to_build = $(BUILDCC) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) \
|
|
-MMD -MF $@.d $< -o $@
|
|
cmd_c_to_host = $(HOSTCC) $(HOST_CFLAGS) -MMD -MF $@.d $(filter %.c, $^) -o $@
|
|
cmd_host_test = ./util/run_host_test $* $(silent)
|
|
cmd_version = ./util/getversion.sh > $@
|
|
cmd_mv_from_tmp = mv $(out)/$*.bin.tmp $(out)/$*.bin
|
|
cmd_extractrw-y = cd $(out) && \
|
|
dump_fmap -x $(PROJECT).bin.tmp RW_SECTION_A $(silent) && \
|
|
mv RW_SECTION_A $(PROJECT).RW.bin
|
|
cmd_copyrw-y = cd $(out) && cp $(PROJECT).RW.flat $(PROJECT).RW.bin
|
|
|
|
.PHONY: all tests utils hosttests
|
|
all: $(out)/$(PROJECT).bin utils
|
|
|
|
dis-y = $(out)/$(PROJECT).RO.dis $(out)/$(PROJECT).RW.dis
|
|
dis: $(dis-y)
|
|
|
|
utils: $(build-utils) $(host-utils)
|
|
|
|
# On board test binaries
|
|
test-targets=$(foreach t,$(test-list-y),test-$(t))
|
|
.PHONY: $(test-targets)
|
|
|
|
$(test-targets): test-%:
|
|
@set -e ; \
|
|
echo " BUILD $(out)/$*" ; \
|
|
$(MAKE) --no-print-directory BOARD=$(BOARD) PROJECT=$* \
|
|
V=$(V) out=$(out)/$* TEST_BUILD=y; \
|
|
cp $(out)/$*/$*.bin $(out)/test-$*.bin
|
|
|
|
tests: $(test-targets)
|
|
|
|
# Emulator test executables
|
|
host-test-targets=$(foreach t,$(test-list-host),host-$(t))
|
|
run-test-targets=$(foreach t,$(test-list-host),run-$(t))
|
|
.PHONY: $(host-test-targets) $(run-test-targets)
|
|
|
|
$(host-test-targets): host-%:
|
|
@set -e ; \
|
|
echo " BUILD host - build/host/$*" ; \
|
|
$(MAKE) --no-print-directory BOARD=host PROJECT=$* \
|
|
V=$(V) out=build/host/$* TEST_BUILD=y EMU_BUILD=y $(TEST_FLAG) \
|
|
CROSS_COMPILE= build/host/$*/$*.exe
|
|
|
|
$(run-test-targets): run-%: host-%
|
|
$(call quiet,host_test,TEST )
|
|
|
|
hosttests: $(host-test-targets)
|
|
runtests: $(run-test-targets)
|
|
|
|
cov-test-targets=$(foreach t,$(test-list-host),build/host/$(t).info)
|
|
bldversion=$(shell (./util/getversion.sh ; echo VERSION) | $(CPP) -P)
|
|
|
|
# lcov fails when multiple instances run at the same time.
|
|
# We need to run them sequentially by using flock
|
|
cmd_lcov=flock /tmp/ec-lcov-lock -c "lcov -q -o $@ -c -d build/host/$*"
|
|
cmd_report_cov=genhtml -q -o build/host/coverage_rpt -t \
|
|
"EC Unittest "$(bldversion) $^
|
|
|
|
build/host/%.info: run-%
|
|
$(call quiet,lcov,COV )
|
|
|
|
coverage: TEST_FLAG=TEST_COVERAGE=y
|
|
coverage: $(cov-test-targets)
|
|
$(call quiet,report_cov,REPORT )
|
|
|
|
.PHONY: coverage
|
|
|
|
$(out)/firmware_image.lds: common/firmware_image.lds.S
|
|
$(call quiet,lds,LDS )
|
|
$(out)/%.lds: core/$(CORE)/ec.lds.S
|
|
$(call quiet,lds,LDS )
|
|
|
|
$(out)/%.bin: $(out)/%.obj
|
|
$(call quiet,obj_to_bin,OBJCOPY)
|
|
$(if $(sign-y),$(call quiet,sign,SIGN ),)
|
|
$(if $(sign-y),$(call quiet,extractrw-y,EXTR_RW), \
|
|
$(call quiet,copyrw-y,COPY_RW))
|
|
$(call quiet,mv_from_tmp,MV )
|
|
|
|
flat-y = $(out)/$(PROJECT).RO.flat $(out)/$(PROJECT).RW.flat
|
|
|
|
$(out)/%.obj: common/firmware_image.S $(out)/firmware_image.lds $(flat-y)
|
|
$(call quiet,flat_to_obj,CAT )
|
|
|
|
$(out)/%.dis: $(out)/%.elf
|
|
$(call quiet,elf_to_dis,OBJDUMP)
|
|
|
|
$(out)/%.flat: $(out)/%.elf
|
|
$(call quiet,elf_to_flat,OBJCOPY)
|
|
|
|
$(out)/%.elf: $(out)/%.lds $(objs)
|
|
$(call quiet,elf,LD )
|
|
|
|
$(out)/$(PROJECT).exe: $(objs)
|
|
$(call quiet,exe,EXE )
|
|
|
|
$(out)/%.o:%.c
|
|
$(call quiet,c_to_o,CC )
|
|
|
|
$(out)/vboot/%.o:$(VBOOT_SOURCE)/%.c
|
|
$(call quiet,c_to_o,CC )
|
|
|
|
$(out)/%.o:%.S
|
|
$(call quiet,c_to_o,AS )
|
|
|
|
$(out)/common/version.o: $(out)/ec_version.h
|
|
$(out)/ec_version.h: $(filter-out $(out)/common/version.o,$(objs))
|
|
$(call quiet,version,VERSION)
|
|
|
|
$(build-utils): $(out)/%:%.c
|
|
$(call quiet,c_to_build,BUILDCC)
|
|
|
|
$(host-utils): $(out)/%:%.c $(foreach u,$(host-util-common),util/$(u).c) \
|
|
$(foreach u,$(util-lock-objs),util/lock/$(u).c)
|
|
$(call quiet,c_to_host,HOSTCC )
|
|
|
|
$(out)/util/burn_my_ec: $(out)/$(PROJECT).bin
|
|
|
|
.PHONY: FORCE
|
|
cscope.files: FORCE
|
|
@-rm -f cscope.out
|
|
@find chip/${CHIP} board/${BOARD} common core driver power include \
|
|
-name '*.[chS]' \
|
|
-not -name '*test*' -not -name '*mock*' -not -name '*~*' \
|
|
> cscope.files
|
|
|
|
TAGS tags: cscope.files
|
|
@etags $(shell cat cscope.files)
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
-rm -rf $(out)
|
|
|
|
.PHONY: clobber
|
|
clobber:
|
|
-rm -rf build TAGS cscope.files cscope.out
|
|
|
|
.SECONDARY:
|
|
|
|
-include $(deps)
|