summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Sukhomlinov <sukhomlinov@google.com>2021-10-01 14:23:19 -0700
committerCommit Bot <commit-bot@chromium.org>2021-10-01 23:07:12 +0000
commit1aa482194d428f60fc65038c2d0c8508361a52a6 (patch)
treea150bc975a7df10b8099b9e52e5b78b16f9dcce2
parent88768bef5f6356fd415321e228a2e4627112ec27 (diff)
downloadchrome-ec-1aa482194d428f60fc65038c2d0c8508361a52a6.tar.gz
cr50: detangle RO and RW build settings
Cr50 so far builds RO and RW images as part of build process. With adding FIPS module and moving to board-specific crypto library with different interfaces it become hard to maintain build process as RO sources use crypto, but with different APIs, and changing that crypto is challenging as it is also used by other boards with different crypto APIs. In this CL we enable RW and RO to have independent selection of crypto library and include paths, and don't contaminate include paths with unused things like third_party/cryptoc for RW. BUG=none TEST=make buildall -j make BOARD=cr50 make BOARD=cr50 CRYPTO_TEST=1 Built cr50 images can be flashed and are workable. Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> Change-Id: I1b666fbb8193b79f71c885a761436443fd3fca7b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3200069 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Tested-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Commit-Queue: Vadim Sukhomlinov <sukhomlinov@chromium.org>
-rw-r--r--board/cr50/build.mk23
-rw-r--r--chip/g/build.mk6
-rw-r--r--chip/g/upgrade_fw.c2
3 files changed, 16 insertions, 15 deletions
diff --git a/board/cr50/build.mk b/board/cr50/build.mk
index 7eda0385ec..c3ab7a6f53 100644
--- a/board/cr50/build.mk
+++ b/board/cr50/build.mk
@@ -29,39 +29,39 @@ ifneq ($(CRYPTO_TEST),)
CPPFLAGS += -DCRYPTO_TEST_SETUP
ifneq ($(U2F_TEST),)
-CPPFLAGS += -DCRYPTO_TEST_CMD_U2F_TEST=1
+CPPFLAGS_RW += -DCRYPTO_TEST_CMD_U2F_TEST=1
endif
ifneq ($(RND_TEST),)
-CPPFLAGS += -DCRYPTO_TEST_CMD_RAND=1
+CPPFLAGS_RW += -DCRYPTO_TEST_CMD_RAND=1
endif
ifneq ($(DRBG_TEST),)
-CPPFLAGS += -DCRYPTO_TEST_CMD_HMAC_DRBG=1
+CPPFLAGS_RW += -DCRYPTO_TEST_CMD_HMAC_DRBG=1
endif
ifneq ($(ECDSA_TEST),)
-CPPFLAGS += -DCRYPTO_TEST_CMD_DCRYPTO_ECDSA=1
+CPPFLAGS_RW += -DCRYPTO_TEST_CMD_DCRYPTO_ECDSA=1
endif
ifneq ($(DCRYPTO_TEST),)
-CPPFLAGS += -DCRYPTO_TEST_CMD_DCRYPTO_TEST=1
+CPPFLAGS_RW += -DCRYPTO_TEST_CMD_DCRYPTO_TEST=1
endif
ifneq ($(P256_BIN_TEST),)
-CPPFLAGS += -DP256_BIN_TEST=1
+CPPFLAGS_RW += -DP256_BIN_TEST=1
endif
ifneq ($(SHA1_TEST),)
-CPPFLAGS += -DSHA1_TEST=1
+CPPFLAGS_RW += -DSHA1_TEST=1
endif
ifneq ($(SHA256_TEST),)
-CPPFLAGS += -DSHA256_TEST=1
+CPPFLAGS_RW += -DSHA256_TEST=1
endif
ifneq ($(HMAC_SHA256_TEST),)
-CPPFLAGS += -DHMAC_SHA256_TEST=1
+CPPFLAGS_RW += -DHMAC_SHA256_TEST=1
endif
endif
@@ -77,7 +77,7 @@ all: hex
ifeq ($(CONFIG_DCRYPTO_BOARD),y)
# chip/g/build.mk also adds chip/g/dcrypto for CONFIG_DCRYPTO
# so, only add it if we build RW with CONFIG_DCRYPTO_BOARD
-CFLAGS += -I$(realpath $(BDIR)/dcrypto)
+CPPFLAGS_RW += -I$(realpath $(BDIR)/dcrypto)
dirs-y += $(BDIR)/dcrypto
endif
@@ -167,6 +167,7 @@ board-y += tpm2/trng.o
board-y += tpm2/virtual_nvmem.o
board-y += tpm_nvmem_ops.o
board-y += wp.o
+board-$(CONFIG_PINWEAVER)+=pinweaver_tpm_imports.o
ifneq ($(H1_RED_BOARD),)
CPPFLAGS += -DH1_RED_BOARD=$(EMPTY)
@@ -250,5 +251,3 @@ $(TPM2_TARGET):
$(call quiet,tpm2lib,TPM2 )
endif # BOARD_MK_INCLUDED_ONCE is nonempty
-
-board-$(CONFIG_PINWEAVER)+=pinweaver_tpm_imports.o
diff --git a/chip/g/build.mk b/chip/g/build.mk
index b7bf498cd2..a0c79fdbb4 100644
--- a/chip/g/build.mk
+++ b/chip/g/build.mk
@@ -14,12 +14,12 @@ ifeq ($(CONFIG_DCRYPTO),y)
INCLUDE_ROOT := $(abspath ./include)
CPPFLAGS += -I$(abspath .)
CPPFLAGS += -I$(abspath ./builtin)
-CPPFLAGS += -I$(abspath ./chip/$(CHIP))
+CPPFLAGS += -I$(abspath ./chip/$(CHIP)/dcrypto)
CPPFLAGS += -I$(INCLUDE_ROOT)
+CPPFLAGS += -I$(realpath ../../third_party/cryptoc/include)
dirs-y += chip/g/dcrypto
endif
-CPPFLAGS += -I$(realpath ../../third_party/cryptoc/include)
# Required chip modules
chip-y = clock.o gpio.o hwtimer.o pre_init.o system.o
@@ -97,6 +97,8 @@ chip-$(CONFIG_LOW_POWER_IDLE)+=idle.o
chip-$(CONFIG_FLASH_PHYSICAL) += flash.o
ifneq ($(CONFIG_CUSTOMIZED_RO),)
+CPPFLAGS_RO += -I$(abspath ./chip/$(CHIP)/dcrypto)
+CPPFLAGS_RO += -I$(realpath ../../third_party/cryptoc/include)
custom-ro_objs-y = chip/g/clock.o
custom-ro_objs-y += chip/g/dcrypto/sha256.o
custom-ro_objs-y += chip/g/loader/key_ladder.o
diff --git a/chip/g/upgrade_fw.c b/chip/g/upgrade_fw.c
index ca1043b22a..328ce4dbb5 100644
--- a/chip/g/upgrade_fw.c
+++ b/chip/g/upgrade_fw.c
@@ -9,7 +9,7 @@
#include "byteorder.h"
#include "compile_time_macros.h"
#include "console.h"
-#include "dcrypto/dcrypto.h"
+#include "dcrypto.h"
#include "extension.h"
#include "flash.h"
#include "flash_info.h"