diff options
Diffstat (limited to 'third_party/rules.mk')
-rw-r--r-- | third_party/rules.mk | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/third_party/rules.mk b/third_party/rules.mk new file mode 100644 index 0000000000..b208a3739e --- /dev/null +++ b/third_party/rules.mk @@ -0,0 +1,47 @@ +# -*- makefile -*- +# vim: set filetype=make : +# Copyright 2020 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 - third_party rules/targets +# + +# Build and link against libcryptoc. +ifeq ($(CONFIG_LIBCRYPTOC),y) + +CRYPTOCLIB ?= $(realpath ../../third_party/cryptoc) + +# SUPPORT_UNALIGNED indicates to libcryptoc that provided data buffers +# may be unaligned and please handle them safely. +cmd_libcryptoc_make = $(MAKE) -C $(CRYPTOCLIB) \ + obj=$(realpath $(out))/cryptoc \ + SUPPORT_UNALIGNED=1 +cmd_libcryptoc = $(cmd_libcryptoc_make) -q || $(cmd_libcryptoc_make) + +ifneq ($(BOARD),host) +CPPFLAGS += -I$(abspath ./builtin) +endif +CPPFLAGS += -I$(CRYPTOCLIB)/include +CRYPTOC_LDFLAGS := -L$(out)/cryptoc -lcryptoc + +# Force the external build each time, so it can look for changed sources. +.PHONY: $(out)/cryptoc/libcryptoc.a +$(out)/cryptoc/libcryptoc.a: + +$(call quiet,libcryptoc,MAKE ) + +# Link RO and RW against cryptoc. +$(out)/RO/ec.RO.elf $(out)/RO/ec.RO_B.elf: LDFLAGS_EXTRA += $(CRYPTOC_LDFLAGS) +$(out)/RO/ec.RO.elf $(out)/RO/ec.RO_B.elf: $(out)/cryptoc/libcryptoc.a +$(out)/RW/ec.RW.elf $(out)/RW/ec.RW_B.elf: LDFLAGS_EXTRA += $(CRYPTOC_LDFLAGS) +$(out)/RW/ec.RW.elf $(out)/RW/ec.RW_B.elf: $(out)/cryptoc/libcryptoc.a +# Host test executables (including fuzz tests). +$(out)/$(PROJECT).exe: LDFLAGS_EXTRA += $(CRYPTOC_LDFLAGS) +$(out)/$(PROJECT).exe: $(out)/cryptoc/libcryptoc.a +# On-device tests. +test-targets=$(foreach test,$(test-list-y),\ + $(out)/RW/$(test).RW.elf $(out)/RO/$(test).RO.elf) +$(test-targets): LDFLAGS_EXTRA += $(CRYPTOC_LDFLAGS) +$(test-targets): $(out)/cryptoc/libcryptoc.a + +endif # CONFIG_LIBCRYPTOC |