summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2015-08-10 15:17:59 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-11 22:41:16 +0000
commit263b66204ceb84b9d89a4a06254fb8c281bbbf02 (patch)
tree5dda7a3ebf9e30a47fadab23ade74fbdffce4a20
parentccb0c139310671c659fc457cf61c4193a9d64fb1 (diff)
downloadchrome-ec-263b66204ceb84b9d89a4a06254fb8c281bbbf02.tar.gz
Allow for private board configurations
The public sources look for board configurations in directories named board/$BOARD/ Sometimes it's necessary to keep sensitive projects out of the public view for a bit. This CL allows board configurations to also appear in directories named private*/board/$BOARD/ BUG=none BRANCH=none TEST=manual First, ebuilds and "make buildall" seem to work just as before. Second, I copied 24 of the existing boards (those without board-specific #ifdefs in the code) into a private*/board/ directory, renamed them to something unique, and ran "make buildall" again. Both public and private boards compiled and passed their tests. Change-Id: I977c23cb8e73e40677c8f329abca8bbc51fd53df Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/292428 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
-rw-r--r--Makefile36
-rw-r--r--Makefile.rules6
-rw-r--r--chip/mec1322/build.mk2
3 files changed, 27 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 8d680f7bb0..6e68c6ba60 100644
--- a/Makefile
+++ b/Makefile
@@ -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 )