diff options
-rw-r--r-- | Makefile | 36 | ||||
-rw-r--r-- | Makefile.rules | 6 | ||||
-rw-r--r-- | chip/mec1322/build.mk | 2 |
3 files changed, 27 insertions, 17 deletions
@@ -24,6 +24,16 @@ else BOARD ?= bds +# Directory where the board is configured (includes /$(BOARD) at the end) +BDIR:=$(wildcard board/$(BOARD) private*/board/$(BOARD)) +# There can be only one <insert exploding windows here> +ifeq (,$(BDIR)) +$(error unable to locate BOARD $(BOARD)) +endif +ifneq (1,$(words $(BDIR))) +$(error multiple definitions for BOARD $(BOARD): $(BDIR)) +endif + PROJECT?=ec # Output directory for build objects @@ -33,7 +43,7 @@ out?=build/$(BOARD) config=$(out)/.config # If no key file is provided, use the default dev key -PEM ?= board/$(BOARD)/dev_key.pem +PEM ?= $(BDIR)/dev_key.pem include Makefile.toolchain @@ -44,7 +54,7 @@ all: # The board makefile sets $CHIP and the chip makefile sets $CORE. # Include those now, since they must be defined for _flag_cfg below. -include board/$(BOARD)/build.mk +include $(BDIR)/build.mk include chip/$(CHIP)/build.mk # Create uppercase config variants, to avoid mixed case constants. @@ -65,41 +75,41 @@ includes=include core/$(CORE)/include $(dirs) $(out) test ifeq "$(TEST_BUILD)" "y" _tsk_lst_file:=ec.tasklist _tsk_lst:=$(shell echo "CONFIG_TASK_LIST CONFIG_TEST_TASK_LIST" | \ - $(CPP) -P -Iboard/$(BOARD) -Itest \ + $(CPP) -P -I$(BDIR) -Itest \ -D"TASK_NOTEST(n, r, d, s)=" -D"TASK_ALWAYS(n, r, d, s)=n" \ -D"TASK_TEST(n, r, d, s)=n" -imacros $(_tsk_lst_file) \ -imacros $(PROJECT).tasklist) else _tsk_lst_file:=$(PROJECT).tasklist _tsk_lst:=$(shell echo "CONFIG_TASK_LIST" | $(CPP) -P \ - -Iboard/$(BOARD) -D"TASK_NOTEST(n, r, d, s)=n" \ + -I$(BDIR) -D"TASK_NOTEST(n, r, d, s)=n" \ -D"TASK_ALWAYS(n, r, d, s)=n" -imacros $(_tsk_lst_file)) endif _tsk_cfg:=$(foreach t,$(_tsk_lst) ,HAS_TASK_$(t)) CPPFLAGS+=$(foreach t,$(_tsk_cfg),-D$(t)) -_flag_cfg:=$(shell $(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) -Iboard/$(BOARD) \ +_flag_cfg:=$(shell $(CPP) $(CPPFLAGS) -P -dM -Ichip/$(CHIP) -I$(BDIR) \ include/config.h | grep -o "\#define CONFIG_[A-Z0-9_]*" | \ cut -c9- | sort) $(foreach c,$(_tsk_cfg) $(_flag_cfg),$(eval $(c)=y)) ifneq "$(CONFIG_COMMON_RUNTIME)" "y" - _irq_list:=$(shell $(CPP) $(CPPFLAGS) -P -Ichip/$(CHIP) -Iboard/$(BOARD) \ + _irq_list:=$(shell $(CPP) $(CPPFLAGS) -P -Ichip/$(CHIP) -I$(BDIR) \ -D"ENABLE_IRQ(x)=EN_IRQ x" -imacros chip/$(CHIP)/registers.h \ - board/$(BOARD)/ec.irqlist | grep "EN_IRQ .*" | cut -c8-) + $(BDIR)/ec.irqlist | grep "EN_IRQ .*" | cut -c8-) CPPFLAGS+=$(foreach irq,$(_irq_list),\ -D"irq_$(irq)_handler_optional=irq_$(irq)_handler") endif # Compute RW firmware size and offset _rw_off_str:=$(shell echo "CONFIG_RW_MEM_OFF" | $(CPP) $(CPPFLAGS) -P \ - -Ichip/$(CHIP) -Iboard/$(BOARD) -imacros include/config.h) + -Ichip/$(CHIP) -I$(BDIR) -imacros include/config.h) _rw_off:=$(shell echo "$$(($(_rw_off_str)))") _rw_size_str:=$(shell echo "CONFIG_RW_SIZE" | $(CPP) $(CPPFLAGS) -P \ - -Ichip/$(CHIP) -Iboard/$(BOARD) -imacros include/config.h) + -Ichip/$(CHIP) -I$(BDIR) -imacros include/config.h) _rw_size:=$(shell echo "$$(($(_rw_size_str)))") _flash_base_str:=$(shell echo "CONFIG_FLASH_BASE" | $(CPP) $(CPPFLAGS) -P \ - -Ichip/$(CHIP) -Iboard/$(BOARD) -imacros include/config.h) + -Ichip/$(CHIP) -I$(BDIR) -imacros include/config.h) _flash_base=$(shell echo "$$(($(_flash_base_str)))") $(eval BOARD_$(UC_BOARD)=y) @@ -109,7 +119,7 @@ $(eval CHIP_FAMILY_$(UC_CHIP_FAMILY)=y) # Get build configuration from sub-directories # Note that this re-includes the board and chip makefiles -include board/$(BOARD)/build.mk +include $(BDIR)/build.mk include chip/$(CHIP)/build.mk include core/$(CORE)/build.mk @@ -130,14 +140,14 @@ ro-objs_from_dir=$(sort $(foreach obj, $($(2)-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,board/$(BOARD),board) +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)) -dirs=core/$(CORE) chip/$(CHIP) board/$(BOARD) common power test +dirs=core/$(CORE) chip/$(CHIP) $(BDIR) common power test dirs+= private private-cr51 dirs+=$(shell find driver -type d) common_dirs=util diff --git a/Makefile.rules b/Makefile.rules index 36927aa657..5682f47ec9 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -14,7 +14,7 @@ host-srcs := $(foreach u,$(host-util-bin),$(sort $($(u)-objs:%.o=util/%.c) util/ # Don't do a build test on the following boards: skip_boards = OWNERS host it8380dev -boards := $(filter-out $(skip_boards),$(subst board/,,$(wildcard board/*))) +boards := $(filter-out $(skip_boards),$(notdir $(wildcard board/* private*/board/*))) # Create output directories if necessary _common_dir_create := $(foreach d,$(common_dirs),$(shell [ -d $(out)/$(d) ] || \ @@ -317,7 +317,7 @@ xrefs: $(call targ_if_prog,etags,$(out)/TAGS) \ flash: $(out)/ec.bin openocd -c "set BOARD $(BOARD)"\ -c "set BUILD_DIR $(out)"\ - -f board/$(BOARD)/openocd-flash.cfg + -f $(BDIR)/openocd-flash.cfg .PHONY: flash_ec flash_ec: $(out)/ec.bin @@ -325,7 +325,7 @@ flash_ec: $(out)/ec.bin .PHONY: flash_dfu flash_dfu: $(out)/ec.bin - sudo ./board/$(BOARD)/dfu $(out)/ec.bin + sudo ./$(BDIR)/dfu $(out)/ec.bin .PHONY: clean clean: diff --git a/chip/mec1322/build.mk b/chip/mec1322/build.mk index 5d20b7d079..587dbe3847 100644 --- a/chip/mec1322/build.mk +++ b/chip/mec1322/build.mk @@ -53,7 +53,7 @@ objs_lfw += $(out)/RW/common/version.o dirs-y+=chip/$(CHIP)/lfw # objs with -lfw suffix are to include lfw's gpio -$(out)/RW/%-lfw.o: private CC+=-Iboard/$(BOARD)/lfw -DLFW +$(out)/RW/%-lfw.o: private CC+=-I$(BDIR)/lfw -DLFW $(out)/RW/%-lfw.o: %.c $(call quiet,c_to_o,CC ) |