summaryrefslogtreecommitdiff
path: root/Makefile
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 /Makefile
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>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile36
1 files changed, 23 insertions, 13 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