1# Copyright (C) 2022 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# 15 16LOCAL_DIR := $(GET_LOCAL_DIR) 17 18MODULE := $(LOCAL_DIR) 19 20MANIFEST := $(LOCAL_DIR)/manifest.json 21 22MODULE_SRCS += \ 23 $(LOCAL_DIR)/lib.rs \ 24 25MODULE_CRATE_NAME := keymint 26 27MODULE_LIBRARY_DEPS += \ 28 trusty/user/base/interface/keybox \ 29 trusty/user/base/lib/hwbcc/rust \ 30 trusty/user/base/lib/hwkey/rust \ 31 trusty/user/base/lib/hwwsk/rust \ 32 trusty/user/base/lib/keymint-rust/boringssl \ 33 trusty/user/base/lib/keymint-rust/common \ 34 trusty/user/base/lib/keymint-rust/ta \ 35 $(call FIND_CRATE,log) \ 36 $(call FIND_CRATE,protobuf)/2.27.1 \ 37 trusty/user/base/lib/storage/rust \ 38 trusty/user/base/lib/tipc/rust \ 39 trusty/user/base/lib/system_state/rust \ 40 trusty/user/base/lib/trusty-log \ 41 trusty/user/base/lib/trusty-std \ 42 43ifdef TRUSTY_KM_RUST_ACCESS_POLICY 44 MODULE_LIBRARY_DEPS+= $(TRUSTY_KM_RUST_ACCESS_POLICY) 45else 46 MODULE_LIBRARY_DEPS+= trusty/user/app/keymint/generic_access_policy 47endif 48 49MODULE_RUSTFLAGS += \ 50 --cfg 'feature="soft_attestation_fallback"' \ 51 --cfg 'feature="auto_second_imei"' \ 52 53MODULE_RUST_TESTS := true 54 55# The port tests are built and installed regardless of whether the KeyMint Rust TA 56# is enabled, so set a config value to allow tests that involve the TA to be skipped. 57ifeq (rust,$(TRUSTY_KEYMINT_IMPL)) 58 MODULE_RUSTFLAGS += --cfg 'kmr_enabled' 59endif 60 61MODULE_BINDGEN_ALLOW_TYPES := \ 62 keybox.* \ 63 64MODULE_BINDGEN_ALLOW_FUNCTIONS := \ 65 trusty_rng_.* \ 66 67MODULE_BINDGEN_ALLOW_VARS := \ 68 KEYBOX.* \ 69 70MODULE_BINDGEN_SRC_HEADER := $(LOCAL_DIR)/bindings.h 71 72MODULE_RUST_USE_CLIPPY := true 73 74include make/library.mk 75