1# Dauntless
2BOARD_VENDOR_SEPOLICY_DIRS += device/google/gs-common/dauntless/sepolicy
3ifneq ($(wildcard vendor/google_nos),)
4PRODUCT_SOONG_NAMESPACES += vendor/google_nos/init/dauntless
5
6PRODUCT_PACKAGES += \
7    citadeld \
8    citadel_updater \
9    android.hardware.weaver-service.citadel \
10    android.hardware.authsecret-service.citadel \
11    android.hardware.oemlock-service.citadel \
12    init_citadel \
13    android.hardware.strongbox_keystore.xml \
14    android.hardware.security.keymint-service.citadel \
15    dump_gsc.sh
16
17# USERDEBUG ONLY: Install test packages
18PRODUCT_PACKAGES_DEBUG += citadel_integration_tests \
19                          pwntest \
20                          nugget_targeted_tests \
21                          CitadelProvision \
22                          nugget_aidl_test_weaver
23
24# Assign default value for RELEASE_GOOGLE_DAUNTLESS_DIR if no trunk flags support
25RELEASE_GOOGLE_DAUNTLESS_DIR ?= vendor/google_nos/prebuilts/dauntless
26
27# The production Dauntless firmware will be of flavors evt and d3m2.
28# There are also several flavors of pre-release chips. Each flavor
29# (production and pre-release) requires the firmware to be signed differently.
30DAUNTLESS_FIRMWARE_SIZE := 1048576
31
32# The nearly-production Dauntless chips are "proto1.1"
33ifneq (,$(wildcard $(RELEASE_GOOGLE_DAUNTLESS_DIR)/proto11.ec.bin))
34ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" $(RELEASE_GOOGLE_DAUNTLESS_DIR)/proto11.ec.bin))
35$(error GSC firmware size check fail)
36endif
37PRODUCT_COPY_FILES += \
38    $(RELEASE_GOOGLE_DAUNTLESS_DIR)/proto11.ec.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/dauntless/proto11.ec.bin
39$(call dist-for-goals,droid,$(RELEASE_GOOGLE_DAUNTLESS_DIR)/proto11.ec.bin)
40else
41$(error GSC firmware not found in $(RELEASE_GOOGLE_DAUNTLESS_DIR))
42endif
43
44# The production Dauntless chips are "evt"
45ifneq (,$(wildcard $(RELEASE_GOOGLE_DAUNTLESS_DIR)/evt.ec.bin))
46ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" $(RELEASE_GOOGLE_DAUNTLESS_DIR)/evt.ec.bin))
47$(error GSC firmware size check fail)
48endif
49PRODUCT_COPY_FILES += \
50    $(RELEASE_GOOGLE_DAUNTLESS_DIR)/evt.ec.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/dauntless/evt.ec.bin
51$(call dist-for-goals,droid,$(RELEASE_GOOGLE_DAUNTLESS_DIR)/evt.ec.bin)
52else
53$(error GSC firmware not found in $(RELEASE_GOOGLE_DAUNTLESS_DIR))
54endif
55
56# New 2023 production Dauntless chips are "d3m2"
57ifneq (,$(wildcard $(RELEASE_GOOGLE_DAUNTLESS_DIR)/d3m2.ec.bin))
58ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" $(RELEASE_GOOGLE_DAUNTLESS_DIR)/d3m2.ec.bin))
59$(error GSC firmware size check fail)
60endif
61PRODUCT_COPY_FILES += \
62    $(RELEASE_GOOGLE_DAUNTLESS_DIR)/d3m2.ec.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/dauntless/d3m2.ec.bin
63$(call dist-for-goals,droid,$(RELEASE_GOOGLE_DAUNTLESS_DIR)/d3m2.ec.bin)
64else
65$(error GSC firmware not found in $(RELEASE_GOOGLE_DAUNTLESS_DIR))
66endif
67
68# Intermediate image artifacts are published, but aren't included in /vendor/firmware/dauntless
69# in PRODUCT_COPY_FILES
70# This is because intermediate images aren't needed on user devices, but the published artifact
71# is useful for flashstation purposes.
72
73# proto11 chips need an intermediate image prior to upgrading to newever versions of the firmware
74ifneq (,$(wildcard vendor/google_nos/prebuilts/dauntless/intermediate_images/proto11_intermediate.ec.bin))
75ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" vendor/google_nos/prebuilts/dauntless/intermediate_images/proto11_intermediate.ec.bin))
76$(error GSC firmware size check fail)
77endif
78$(call dist-for-goals,droid,vendor/google_nos/prebuilts/dauntless/intermediate_images/proto11_intermediate.ec.bin)
79endif
80# evt chips need an intermediate image prior to upgrading to newever versions of the firmware
81ifneq (,$(wildcard vendor/google_nos/prebuilts/dauntless/intermediate_images/evt_intermediate.ec.bin))
82ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" vendor/google_nos/prebuilts/dauntless/intermediate_images/evt_intermediate.ec.bin))
83$(error GSC firmware size check fail)
84endif
85$(call dist-for-goals,droid,vendor/google_nos/prebuilts/dauntless/intermediate_images/evt_intermediate.ec.bin)
86endif
87# d3m2 chips need an intermediate image prior to upgrading to newever versions of the firmware
88ifneq (,$(wildcard vendor/google_nos/prebuilts/dauntless/intermediate_images/d3m2_intermediate.ec.bin))
89ifneq ($(DAUNTLESS_FIRMWARE_SIZE), $(shell stat -c "%s" vendor/google_nos/prebuilts/dauntless/intermediate_images/d3m2_intermediate.ec.bin))
90$(error GSC firmware size check fail)
91endif
92$(call dist-for-goals,droid,vendor/google_nos/prebuilts/dauntless/intermediate_images/d3m2_intermediate.ec.bin)
93endif
94
95endif # $(wildcard vendor/google_nos)
96