1*8617a60dSAndroid Build Coastguard Worker# Copyright 2013 The ChromiumOS Authors 2*8617a60dSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8617a60dSAndroid Build Coastguard Worker# found in the LICENSE file. 4*8617a60dSAndroid Build Coastguard Worker 5*8617a60dSAndroid Build Coastguard Worker# This Makefile normally builds in a 'build' subdir, but use 6*8617a60dSAndroid Build Coastguard Worker# 7*8617a60dSAndroid Build Coastguard Worker# make BUILD=<dir> 8*8617a60dSAndroid Build Coastguard Worker# 9*8617a60dSAndroid Build Coastguard Worker# to put the output somewhere else. 10*8617a60dSAndroid Build Coastguard Worker 11*8617a60dSAndroid Build Coastguard Worker############################################################################## 12*8617a60dSAndroid Build Coastguard Worker# Make variables come in two flavors, immediate or deferred. 13*8617a60dSAndroid Build Coastguard Worker# 14*8617a60dSAndroid Build Coastguard Worker# Variable definitions are parsed like this: 15*8617a60dSAndroid Build Coastguard Worker# 16*8617a60dSAndroid Build Coastguard Worker# IMMEDIATE = DEFERRED 17*8617a60dSAndroid Build Coastguard Worker# or 18*8617a60dSAndroid Build Coastguard Worker# IMMEDIATE := IMMEDIATE 19*8617a60dSAndroid Build Coastguard Worker# 20*8617a60dSAndroid Build Coastguard Worker# Rules are parsed this way: 21*8617a60dSAndroid Build Coastguard Worker# 22*8617a60dSAndroid Build Coastguard Worker# IMMEDIATE : IMMEDIATE 23*8617a60dSAndroid Build Coastguard Worker# DEFERRED 24*8617a60dSAndroid Build Coastguard Worker# 25*8617a60dSAndroid Build Coastguard Worker# So you can assign variables in any order if they're only to be used in 26*8617a60dSAndroid Build Coastguard Worker# actions, but if you use a variable in either the target or prerequisite of a 27*8617a60dSAndroid Build Coastguard Worker# rule, the rule will be constructed using only the top-down, immediate value. 28*8617a60dSAndroid Build Coastguard Worker# 29*8617a60dSAndroid Build Coastguard Worker# So we'll try to define all the variables first. Then the rules. 30*8617a60dSAndroid Build Coastguard Worker# 31*8617a60dSAndroid Build Coastguard Worker 32*8617a60dSAndroid Build Coastguard Worker############################################################################## 33*8617a60dSAndroid Build Coastguard Worker# Configuration variables come first. 34*8617a60dSAndroid Build Coastguard Worker# 35*8617a60dSAndroid Build Coastguard Worker# Our convention is that we only use := for variables that will never be 36*8617a60dSAndroid Build Coastguard Worker# changed or appended. They must be defined before being used anywhere. 37*8617a60dSAndroid Build Coastguard Worker 38*8617a60dSAndroid Build Coastguard Worker# We should only run pwd once, not every time we refer to ${BUILD}. 39*8617a60dSAndroid Build Coastguard WorkerSRCDIR := $(shell pwd) 40*8617a60dSAndroid Build Coastguard WorkerBUILD = ${SRCDIR}/build 41*8617a60dSAndroid Build Coastguard Workerexport BUILD 42*8617a60dSAndroid Build Coastguard Worker 43*8617a60dSAndroid Build Coastguard Worker# Stuff for 'make install' 44*8617a60dSAndroid Build Coastguard WorkerINSTALL = install 45*8617a60dSAndroid Build Coastguard WorkerDESTDIR = / 46*8617a60dSAndroid Build Coastguard WorkerLIBDIR ?= lib 47*8617a60dSAndroid Build Coastguard Worker 48*8617a60dSAndroid Build Coastguard Worker# Default values 49*8617a60dSAndroid Build Coastguard WorkerDEV_DEBUG_FORCE= 50*8617a60dSAndroid Build Coastguard Worker 51*8617a60dSAndroid Build Coastguard Worker# Where exactly do the pieces go? 52*8617a60dSAndroid Build Coastguard Worker# UB_DIR = utility binary directory 53*8617a60dSAndroid Build Coastguard Worker# ULP_DIR = pkgconfig directory, usually /usr/lib/pkgconfig 54*8617a60dSAndroid Build Coastguard Worker# UI_DIR = include directory for library headers 55*8617a60dSAndroid Build Coastguard Worker# US_DIR = shared data directory (for static content like devkeys) 56*8617a60dSAndroid Build Coastguard Worker# DF_DIR = utility defaults directory 57*8617a60dSAndroid Build Coastguard Worker# VB_DIR = vboot binary directory for dev-mode-only scripts 58*8617a60dSAndroid Build Coastguard Worker# DUT_TEST_DIR = vboot dut tests binary directory 59*8617a60dSAndroid Build Coastguard WorkerUB_DIR=${DESTDIR}/usr/bin 60*8617a60dSAndroid Build Coastguard WorkerUL_DIR=${DESTDIR}/usr/${LIBDIR} 61*8617a60dSAndroid Build Coastguard WorkerULP_DIR=${UL_DIR}/pkgconfig 62*8617a60dSAndroid Build Coastguard WorkerUI_DIR=${DESTDIR}/usr/include/vboot 63*8617a60dSAndroid Build Coastguard WorkerUS_DIR=${DESTDIR}/usr/share/vboot 64*8617a60dSAndroid Build Coastguard WorkerDF_DIR=${DESTDIR}/etc/default 65*8617a60dSAndroid Build Coastguard WorkerVB_DIR=${US_DIR}/bin 66*8617a60dSAndroid Build Coastguard WorkerDUT_TEST_DIR=${US_DIR}/tests 67*8617a60dSAndroid Build Coastguard Worker 68*8617a60dSAndroid Build Coastguard Worker# Where to install the (exportable) executables for testing? 69*8617a60dSAndroid Build Coastguard WorkerTEST_INSTALL_DIR = ${BUILD}/install_for_test 70*8617a60dSAndroid Build Coastguard Worker 71*8617a60dSAndroid Build Coastguard Worker# Set when installing into the SDK instead of building for a board sysroot. 72*8617a60dSAndroid Build Coastguard WorkerSDK_BUILD ?= 73*8617a60dSAndroid Build Coastguard Worker 74*8617a60dSAndroid Build Coastguard Worker# Verbose? Use V=1 75*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${V}),) 76*8617a60dSAndroid Build Coastguard WorkerQ := @ 77*8617a60dSAndroid Build Coastguard Workerendif 78*8617a60dSAndroid Build Coastguard Worker 79*8617a60dSAndroid Build Coastguard Worker# Quiet? Use QUIET=1 80*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${QUIET}),) 81*8617a60dSAndroid Build Coastguard WorkerPRINTF := printf 82*8617a60dSAndroid Build Coastguard Workerelse 83*8617a60dSAndroid Build Coastguard WorkerPRINTF := : 84*8617a60dSAndroid Build Coastguard Workerendif 85*8617a60dSAndroid Build Coastguard Worker 86*8617a60dSAndroid Build Coastguard Worker# ARCH and/or FIRMWARE_ARCH are defined by the ChromiumOS ebuild. 87*8617a60dSAndroid Build Coastguard Worker# Pick a valid target architecture if none is defined. 88*8617a60dSAndroid Build Coastguard Workerifeq (${ARCH},) 89*8617a60dSAndroid Build Coastguard Worker ARCH := $(shell uname -m) 90*8617a60dSAndroid Build Coastguard Workerendif 91*8617a60dSAndroid Build Coastguard Worker 92*8617a60dSAndroid Build Coastguard Workerifeq (${ARCH},armv7l) 93*8617a60dSAndroid Build Coastguard Worker override ARCH := arm 94*8617a60dSAndroid Build Coastguard Workerelse ifeq (${ARCH},aarch64) 95*8617a60dSAndroid Build Coastguard Worker override ARCH := arm64 96*8617a60dSAndroid Build Coastguard Workerelse ifeq (${ARCH},i386) 97*8617a60dSAndroid Build Coastguard Worker override ARCH := x86 98*8617a60dSAndroid Build Coastguard Workerelse ifeq (${ARCH},i686) 99*8617a60dSAndroid Build Coastguard Worker override ARCH := x86 100*8617a60dSAndroid Build Coastguard Workerelse ifeq (${ARCH},amd64) 101*8617a60dSAndroid Build Coastguard Worker override ARCH := x86_64 102*8617a60dSAndroid Build Coastguard Workerendif 103*8617a60dSAndroid Build Coastguard Worker 104*8617a60dSAndroid Build Coastguard Workerifneq (,$(filter arm arm64,${ARCH})) 105*8617a60dSAndroid Build Coastguard Worker ARCH_DIR := arm 106*8617a60dSAndroid Build Coastguard Workerelse ifneq (,$(filter x86 x86_64,${ARCH})) 107*8617a60dSAndroid Build Coastguard Worker ARCH_DIR := x86 108*8617a60dSAndroid Build Coastguard Workerelse 109*8617a60dSAndroid Build Coastguard Worker ARCH_DIR := stub 110*8617a60dSAndroid Build Coastguard Workerendif 111*8617a60dSAndroid Build Coastguard Worker 112*8617a60dSAndroid Build Coastguard Worker# Provide default CC and CFLAGS for firmware builds; if you have any -D flags, 113*8617a60dSAndroid Build Coastguard Worker# please add them after this point (e.g., -DVBOOT_DEBUG). 114*8617a60dSAndroid Build Coastguard WorkerDEBUG_FLAGS := $(if $(filter-out 0,${DEBUG}),-g -Og,-g -Os) 115*8617a60dSAndroid Build Coastguard WorkerWERROR := -Werror 116*8617a60dSAndroid Build Coastguard WorkerFIRMWARE_FLAGS := -nostdinc -ffreestanding -fno-builtin -fno-stack-protector 117*8617a60dSAndroid Build Coastguard WorkerCOMMON_FLAGS := -pipe ${WERROR} -Wall -Wstrict-prototypes -Wtype-limits \ 118*8617a60dSAndroid Build Coastguard Worker -Wundef -Wmissing-prototypes -Wno-trigraphs -Wredundant-decls -Wshadow \ 119*8617a60dSAndroid Build Coastguard Worker -Wwrite-strings -Wstrict-aliasing -Wdate-time \ 120*8617a60dSAndroid Build Coastguard Worker -Wint-conversion -ffunction-sections -fdata-sections \ 121*8617a60dSAndroid Build Coastguard Worker -Wformat -Wno-format-security -std=gnu11 ${DEBUG_FLAGS} ${CPPFLAGS} 122*8617a60dSAndroid Build Coastguard Worker 123*8617a60dSAndroid Build Coastguard Worker# test_ccflag 124*8617a60dSAndroid Build Coastguard Worker# $(1): compiler flags to test 125*8617a60dSAndroid Build Coastguard Worker# $(2): code to insert into test snippet 126*8617a60dSAndroid Build Coastguard Worker# returns: $(1) if compiler was successful, empty string otherwise 127*8617a60dSAndroid Build Coastguard Workertest_ccflag = $(shell \ 128*8617a60dSAndroid Build Coastguard Worker printf "$(2)\nvoid _start(void) {}\n" | \ 129*8617a60dSAndroid Build Coastguard Worker $(CC) -nostdlib -Werror $(1) -xc -c - -o /dev/null \ 130*8617a60dSAndroid Build Coastguard Worker >/dev/null 2>&1 && echo "$(1)") 131*8617a60dSAndroid Build Coastguard Worker 132*8617a60dSAndroid Build Coastguard WorkerCOMMON_FLAGS += $(call test_ccflag,-Wimplicit-fallthrough) 133*8617a60dSAndroid Build Coastguard WorkerCOMMON_FLAGS += $(call test_ccflag,-Wno-address-of-packed-member) 134*8617a60dSAndroid Build Coastguard WorkerCOMMON_FLAGS += $(call test_ccflag,-Wno-unknown-warning) 135*8617a60dSAndroid Build Coastguard WorkerCOMMON_FLAGS += $(call test_ccflag,-Wincompatible-function-pointer-types) 136*8617a60dSAndroid Build Coastguard Worker 137*8617a60dSAndroid Build Coastguard WorkerTEST_FLAGS := $(call test_ccflag,-Wno-address-of-packed-member) 138*8617a60dSAndroid Build Coastguard Worker 139*8617a60dSAndroid Build Coastguard Worker# FIRMWARE_ARCH is only defined by the ChromiumOS ebuild if compiling 140*8617a60dSAndroid Build Coastguard Worker# for a firmware target (coreboot or depthcharge). It must map to the same 141*8617a60dSAndroid Build Coastguard Worker# consistent set of architectures as the host. 142*8617a60dSAndroid Build Coastguard Workerifeq (${FIRMWARE_ARCH},i386) 143*8617a60dSAndroid Build Coastguard Worker override FIRMWARE_ARCH := x86 144*8617a60dSAndroid Build Coastguard Workerelse ifeq (${FIRMWARE_ARCH},amd64) 145*8617a60dSAndroid Build Coastguard Worker override FIRMWARE_ARCH := x86_64 146*8617a60dSAndroid Build Coastguard Workerelse ifneq ($(filter arm64 armv7 armv8 armv8_64,${FIRMWARE_ARCH}),) 147*8617a60dSAndroid Build Coastguard Worker override FIRMWARE_ARCH := arm 148*8617a60dSAndroid Build Coastguard Workerendif 149*8617a60dSAndroid Build Coastguard Worker 150*8617a60dSAndroid Build Coastguard Workerifeq (${FIRMWARE_ARCH},arm) 151*8617a60dSAndroid Build Coastguard WorkerCC ?= armv7a-cros-linux-gnueabihf-gcc 152*8617a60dSAndroid Build Coastguard WorkerCFLAGS ?= -march=armv5 -fno-common -ffixed-r8 -mfloat-abi=hard -marm 153*8617a60dSAndroid Build Coastguard Worker -mabi=aapcs-linux -mno-thumb-interwork ${FIRMWARE_FLAGS} ${COMMON_FLAGS} 154*8617a60dSAndroid Build Coastguard Workerelse ifeq (${FIRMWARE_ARCH},x86) 155*8617a60dSAndroid Build Coastguard WorkerCC ?= i686-pc-linux-gnu-gcc 156*8617a60dSAndroid Build Coastguard Worker# Drop -march=i386 to permit use of SSE instructions 157*8617a60dSAndroid Build Coastguard WorkerCFLAGS ?= -fvisibility=hidden -fomit-frame-pointer \ 158*8617a60dSAndroid Build Coastguard Worker -fno-toplevel-reorder -fno-dwarf2-cfi-asm -mpreferred-stack-boundary=2 \ 159*8617a60dSAndroid Build Coastguard Worker ${FIRMWARE_FLAGS} ${COMMON_FLAGS} 160*8617a60dSAndroid Build Coastguard Workerelse ifeq (${FIRMWARE_ARCH},x86_64) 161*8617a60dSAndroid Build Coastguard WorkerCFLAGS ?= ${FIRMWARE_FLAGS} ${COMMON_FLAGS} -fvisibility=hidden \ 162*8617a60dSAndroid Build Coastguard Worker -fomit-frame-pointer 163*8617a60dSAndroid Build Coastguard Workerelse ifeq (${FIRMWARE_ARCH},mock) 164*8617a60dSAndroid Build Coastguard WorkerFIRMWARE_STUB := 1 165*8617a60dSAndroid Build Coastguard WorkerCFLAGS += ${TEST_FLAGS} 166*8617a60dSAndroid Build Coastguard Workerelse ifneq (${FIRMWARE_ARCH},) 167*8617a60dSAndroid Build Coastguard Worker$(error Unexpected FIRMWARE_ARCH ${FIRMWARE_ARCH}) 168*8617a60dSAndroid Build Coastguard Workerelse 169*8617a60dSAndroid Build Coastguard Worker# FIRMWARE_ARCH not defined; assuming local compile. 170*8617a60dSAndroid Build Coastguard WorkerFIRMWARE_STUB := 1 171*8617a60dSAndroid Build Coastguard WorkerCC ?= gcc 172*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DCHROMEOS_ENVIRONMENT ${COMMON_FLAGS} 173*8617a60dSAndroid Build Coastguard Workerendif 174*8617a60dSAndroid Build Coastguard Worker 175*8617a60dSAndroid Build Coastguard Worker# Needs -Wl because LD is actually set to CC by default. 176*8617a60dSAndroid Build Coastguard WorkerLDFLAGS += -Wl,--gc-sections 177*8617a60dSAndroid Build Coastguard Worker 178*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${DEBUG})$(filter-out 0,${TEST_PRINT}),) 179*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DVBOOT_DEBUG 180*8617a60dSAndroid Build Coastguard Workerendif 181*8617a60dSAndroid Build Coastguard Worker 182*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${NDEBUG}),) 183*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DNDEBUG 184*8617a60dSAndroid Build Coastguard Workerendif 185*8617a60dSAndroid Build Coastguard Worker 186*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${TPM2_MODE}),) 187*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DTPM2_MODE 188*8617a60dSAndroid Build Coastguard Workerendif 189*8617a60dSAndroid Build Coastguard Worker 190*8617a60dSAndroid Build Coastguard Worker# Support devices with GPT in SPI-NOR (for nand device) 191*8617a60dSAndroid Build Coastguard Worker# TODO(b:184812319): Consider removing this code if nobody uses it. 192*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${GPT_SPI_NOR}),) 193*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DGPT_SPI_NOR 194*8617a60dSAndroid Build Coastguard Workerendif 195*8617a60dSAndroid Build Coastguard Worker 196*8617a60dSAndroid Build Coastguard Worker# Enable EC early firmware selection. 197*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${EC_EFS}),) 198*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DEC_EFS=1 199*8617a60dSAndroid Build Coastguard Workerelse 200*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DEC_EFS=0 201*8617a60dSAndroid Build Coastguard Workerendif 202*8617a60dSAndroid Build Coastguard Worker 203*8617a60dSAndroid Build Coastguard Worker# Some tests need to be disabled when using mocked_secdata_tpm. 204*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${MOCK_TPM}),) 205*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DMOCK_TPM 206*8617a60dSAndroid Build Coastguard Workerendif 207*8617a60dSAndroid Build Coastguard Worker 208*8617a60dSAndroid Build Coastguard Worker# EXTERNAL_TPM_CLEAR_REQUEST indicates whether we want to use the external 209*8617a60dSAndroid Build Coastguard Worker# tpm_clear_request tool or not. 210*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${EXTERNAL_TPM_CLEAR_REQUEST}),) 211*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DEXTERNAL_TPM_CLEAR_REQUEST=1 212*8617a60dSAndroid Build Coastguard Workerelse 213*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DEXTERNAL_TPM_CLEAR_REQUEST=0 214*8617a60dSAndroid Build Coastguard Workerendif 215*8617a60dSAndroid Build Coastguard Worker 216*8617a60dSAndroid Build Coastguard Worker# Configurable temporary directory for host tools 217*8617a60dSAndroid Build Coastguard WorkerVBOOT_TMP_DIR := /tmp 218*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DVBOOT_TMP_DIR=\"${VBOOT_TMP_DIR}\" 219*8617a60dSAndroid Build Coastguard Worker 220*8617a60dSAndroid Build Coastguard Worker# Directory used by crossystem to create a lock file 221*8617a60dSAndroid Build Coastguard WorkerCROSSYSTEM_LOCK_DIR := /run/lock 222*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DCROSSYSTEM_LOCK_DIR=\"${CROSSYSTEM_LOCK_DIR}\" 223*8617a60dSAndroid Build Coastguard Worker 224*8617a60dSAndroid Build Coastguard Worker# NOTE: We don't use these files but they are useful for other packages to 225*8617a60dSAndroid Build Coastguard Worker# query about required compiling/linking flags. 226*8617a60dSAndroid Build Coastguard WorkerPC_IN_FILES = vboot_host.pc.in 227*8617a60dSAndroid Build Coastguard Worker 228*8617a60dSAndroid Build Coastguard Worker# Create / use dependency files 229*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -MMD -MF $@.d 230*8617a60dSAndroid Build Coastguard Worker 231*8617a60dSAndroid Build Coastguard Workerifeq (${FIRMWARE_ARCH},) 232*8617a60dSAndroid Build Coastguard Worker# Creates position independent code for non firmware target. 233*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -fPIC 234*8617a60dSAndroid Build Coastguard Workerendif 235*8617a60dSAndroid Build Coastguard Worker 236*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -D_GNU_SOURCE 237*8617a60dSAndroid Build Coastguard Worker 238*8617a60dSAndroid Build Coastguard Worker# This is required to access large disks and files on 32-bit systems, 239*8617a60dSAndroid Build Coastguard Worker# but if the environment doesn't support it, at least compile support 240*8617a60dSAndroid Build Coastguard Worker# for what is possible. 241*8617a60dSAndroid Build Coastguard Worker# Pass through cflags_use_64bits to evaluate it only once, here. 242*8617a60dSAndroid Build Coastguard WorkerHASH_CONST := \# 243*8617a60dSAndroid Build Coastguard Workercflags_use_64bits := $(call test_ccflag,$\ 244*8617a60dSAndroid Build Coastguard Worker -D_FILE_OFFSET_BITS=64,$\ 245*8617a60dSAndroid Build Coastguard Worker ${HASH_CONST}include <fts.h>) 246*8617a60dSAndroid Build Coastguard WorkerCFLAGS += $(cflags_use_64bits) 247*8617a60dSAndroid Build Coastguard Worker 248*8617a60dSAndroid Build Coastguard Worker# Code coverage 249*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${COV}),) 250*8617a60dSAndroid Build Coastguard Worker COV_FLAGS = -Og --coverage -DCOVERAGE 251*8617a60dSAndroid Build Coastguard Worker CFLAGS += ${COV_FLAGS} 252*8617a60dSAndroid Build Coastguard Worker LDFLAGS += ${COV_FLAGS} 253*8617a60dSAndroid Build Coastguard Worker COV_INFO = ${BUILD}/coverage.info 254*8617a60dSAndroid Build Coastguard Workerendif 255*8617a60dSAndroid Build Coastguard Worker 256*8617a60dSAndroid Build Coastguard Workerifdef HAVE_MACOS 257*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_MACOS -Wno-deprecated-declarations 258*8617a60dSAndroid Build Coastguard Workerendif 259*8617a60dSAndroid Build Coastguard Worker 260*8617a60dSAndroid Build Coastguard Worker# Musl doesn't have execinfo.h. 261*8617a60dSAndroid Build Coastguard Workerifndef HAVE_MUSL 262*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_EXECINFO_H 263*8617a60dSAndroid Build Coastguard Workerendif 264*8617a60dSAndroid Build Coastguard Worker 265*8617a60dSAndroid Build Coastguard Worker# And a few more default utilities 266*8617a60dSAndroid Build Coastguard WorkerLD = ${CC} 267*8617a60dSAndroid Build Coastguard WorkerCXX ?= g++ 268*8617a60dSAndroid Build Coastguard WorkerPKG_CONFIG ?= pkg-config 269*8617a60dSAndroid Build Coastguard Worker 270*8617a60dSAndroid Build Coastguard Worker# Static? 271*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${STATIC}),) 272*8617a60dSAndroid Build Coastguard WorkerLDFLAGS += -static 273*8617a60dSAndroid Build Coastguard WorkerPKG_CONFIG += --static 274*8617a60dSAndroid Build Coastguard Workerendif 275*8617a60dSAndroid Build Coastguard Worker 276*8617a60dSAndroid Build Coastguard Workerifneq (${FUZZ_FLAGS},) 277*8617a60dSAndroid Build Coastguard WorkerCFLAGS += ${FUZZ_FLAGS} 278*8617a60dSAndroid Build Coastguard Workerendif 279*8617a60dSAndroid Build Coastguard Worker 280*8617a60dSAndroid Build Coastguard Worker# Optional Libraries 281*8617a60dSAndroid Build Coastguard WorkerLIBZIP_VERSION := $(shell ${PKG_CONFIG} --modversion libzip 2>/dev/null) 282*8617a60dSAndroid Build Coastguard WorkerHAVE_LIBZIP := $(if ${LIBZIP_VERSION},1) 283*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${HAVE_LIBZIP}),) 284*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_LIBZIP $(shell ${PKG_CONFIG} --cflags libzip) 285*8617a60dSAndroid Build Coastguard Worker LIBZIP_LIBS := $(shell ${PKG_CONFIG} --libs libzip) 286*8617a60dSAndroid Build Coastguard Workerendif 287*8617a60dSAndroid Build Coastguard Worker 288*8617a60dSAndroid Build Coastguard WorkerLIBARCHIVE_VERSION := $(shell ${PKG_CONFIG} --modversion libarchive 2>/dev/null) 289*8617a60dSAndroid Build Coastguard WorkerHAVE_LIBARCHIVE := $(if ${LIBARCHIVE_VERSION},1) 290*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${HAVE_LIBARCHIVE}),) 291*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_LIBARCHIVE $(shell ${PKG_CONFIG} --cflags libarchive) 292*8617a60dSAndroid Build Coastguard Worker LIBARCHIVE_LIBS := $(shell ${PKG_CONFIG} --libs libarchive) 293*8617a60dSAndroid Build Coastguard Workerendif 294*8617a60dSAndroid Build Coastguard Worker 295*8617a60dSAndroid Build Coastguard WorkerHAVE_CROSID := $(shell ${PKG_CONFIG} --exists crosid && echo 1) 296*8617a60dSAndroid Build Coastguard Workerifeq ($(HAVE_CROSID),1) 297*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_CROSID $(shell ${PKG_CONFIG} --cflags crosid) 298*8617a60dSAndroid Build Coastguard Worker CROSID_LIBS := $(shell ${PKG_CONFIG} --libs crosid) 299*8617a60dSAndroid Build Coastguard Workerendif 300*8617a60dSAndroid Build Coastguard Worker 301*8617a60dSAndroid Build Coastguard WorkerHAVE_NSS := $(shell ${PKG_CONFIG} --exists nss && echo 1) 302*8617a60dSAndroid Build Coastguard Workerifeq ($(HAVE_NSS),1) 303*8617a60dSAndroid Build Coastguard Worker CFLAGS += -DHAVE_NSS $(shell ${PKG_CONFIG} --cflags nss) 304*8617a60dSAndroid Build Coastguard Worker # The LIBS is not needed because we only use the header. 305*8617a60dSAndroid Build Coastguard Workerelse 306*8617a60dSAndroid Build Coastguard Worker $(warning Missing NSS. PKCS11 signing not supported. Install libnss3 to enable this feature.) 307*8617a60dSAndroid Build Coastguard Workerendif 308*8617a60dSAndroid Build Coastguard Worker 309*8617a60dSAndroid Build Coastguard Worker# Get major version of openssl (e.g. version 3.0.5 -> "3") 310*8617a60dSAndroid Build Coastguard WorkerOPENSSL_VERSION := $(shell ${PKG_CONFIG} --modversion openssl | cut -d. -f1) 311*8617a60dSAndroid Build Coastguard Worker 312*8617a60dSAndroid Build Coastguard Worker# A test wrapper can be specified. Tests are run inside the wrapper eg: 313*8617a60dSAndroid Build Coastguard Worker# make RUNTEST=env runtests 314*8617a60dSAndroid Build Coastguard WorkerRUNTEST = 315*8617a60dSAndroid Build Coastguard Worker# The Path to the $BUILD inside the runtest wrapper, used by the test scripts. 316*8617a60dSAndroid Build Coastguard Worker# The top of the chroot for RUNTEST must be passed in via the SYSROOT 317*8617a60dSAndroid Build Coastguard Worker# environment variable. In the ChromiumOS chroot, this is done automatically by 318*8617a60dSAndroid Build Coastguard Worker# the ebuild. 319*8617a60dSAndroid Build Coastguard Workerexport BUILD_RUN = $(subst ${SYSROOT},,${BUILD}) 320*8617a60dSAndroid Build Coastguard Worker# Path to the $SRCDIR inside the wrapper, the test scripts rederive this. 321*8617a60dSAndroid Build Coastguard WorkerSRC_RUN = $(subst ${SYSROOT},,${SRCDIR}) 322*8617a60dSAndroid Build Coastguard Worker 323*8617a60dSAndroid Build Coastguard Worker############################################################################## 324*8617a60dSAndroid Build Coastguard Worker# The default target is here, to allow dependencies to be expressed below 325*8617a60dSAndroid Build Coastguard Worker# without accidentally changing the default target. 326*8617a60dSAndroid Build Coastguard Worker 327*8617a60dSAndroid Build Coastguard Worker# Default target. 328*8617a60dSAndroid Build Coastguard Worker.PHONY: all 329*8617a60dSAndroid Build Coastguard Workerall: fwlib futil utillib hostlib cgpt tlcl util_files \ 330*8617a60dSAndroid Build Coastguard Worker $(if $(filter x86_64,${ARCH}),$(if $(filter clang,${CC}),fuzzers)) \ 331*8617a60dSAndroid Build Coastguard Worker $(if $(filter-out 0,${COV}),coverage) 332*8617a60dSAndroid Build Coastguard Worker 333*8617a60dSAndroid Build Coastguard Worker############################################################################## 334*8617a60dSAndroid Build Coastguard Worker# Now we need to describe everything we might want or need to build 335*8617a60dSAndroid Build Coastguard Worker 336*8617a60dSAndroid Build Coastguard Worker# Everything wants these headers. 337*8617a60dSAndroid Build Coastguard WorkerINCLUDES += \ 338*8617a60dSAndroid Build Coastguard Worker -Ifirmware/include \ 339*8617a60dSAndroid Build Coastguard Worker -Ifirmware/lib/include \ 340*8617a60dSAndroid Build Coastguard Worker -Ifirmware/lib/cgptlib/include \ 341*8617a60dSAndroid Build Coastguard Worker -Ifirmware/lib/tpm_lite/include \ 342*8617a60dSAndroid Build Coastguard Worker -Ifirmware/2lib/include 343*8617a60dSAndroid Build Coastguard Worker 344*8617a60dSAndroid Build Coastguard Worker# If we're not building for a specific target, just stub out things like the 345*8617a60dSAndroid Build Coastguard Worker# TPM commands and various external functions that are provided by the BIOS. 346*8617a60dSAndroid Build Coastguard Workerifneq (${FIRMWARE_STUB},) 347*8617a60dSAndroid Build Coastguard WorkerINCLUDES += -Ihost/include -Ihost/lib/include 348*8617a60dSAndroid Build Coastguard WorkerINCLUDES += -Ihost/lib21/include 349*8617a60dSAndroid Build Coastguard Workerifeq ($(shell uname -s), OpenBSD) 350*8617a60dSAndroid Build Coastguard WorkerINCLUDES += -I/usr/local/include 351*8617a60dSAndroid Build Coastguard Workerendif 352*8617a60dSAndroid Build Coastguard Workerendif 353*8617a60dSAndroid Build Coastguard Worker 354*8617a60dSAndroid Build Coastguard Worker# Firmware library, used by the other firmware components (depthcharge, 355*8617a60dSAndroid Build Coastguard Worker# coreboot, etc.). It doesn't need exporting to some other place; they'll build 356*8617a60dSAndroid Build Coastguard Worker# this source tree locally and link to it directly. 357*8617a60dSAndroid Build Coastguard WorkerFWLIB = ${BUILD}/vboot_fw.a 358*8617a60dSAndroid Build Coastguard Worker 359*8617a60dSAndroid Build Coastguard Worker# Separate TPM lightweight command library (TLCL) 360*8617a60dSAndroid Build Coastguard WorkerTLCL = ${BUILD}/tlcl.a 361*8617a60dSAndroid Build Coastguard Worker 362*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS = \ 363*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2api.c \ 364*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2auxfw_sync.c \ 365*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2common.c \ 366*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2context.c \ 367*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2crc8.c \ 368*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2crypto.c \ 369*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2ec_sync.c \ 370*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2firmware.c \ 371*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2gbb.c \ 372*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2hmac.c \ 373*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2kernel.c \ 374*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2load_kernel.c \ 375*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2misc.c \ 376*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2nvstorage.c \ 377*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2packed_key.c \ 378*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2recovery_reasons.c \ 379*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2rsa.c \ 380*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2secdata_firmware.c \ 381*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2secdata_fwmp.c \ 382*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2secdata_kernel.c \ 383*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha1.c \ 384*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha256.c \ 385*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha512.c \ 386*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha_utility.c \ 387*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2struct.c \ 388*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2stub_hwcrypto.c \ 389*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2tpm_bootmode.c \ 390*8617a60dSAndroid Build Coastguard Worker firmware/lib/cgptlib/cgptlib.c \ 391*8617a60dSAndroid Build Coastguard Worker firmware/lib/cgptlib/cgptlib_internal.c \ 392*8617a60dSAndroid Build Coastguard Worker firmware/lib/cgptlib/crc32.c \ 393*8617a60dSAndroid Build Coastguard Worker firmware/lib/gpt_misc.c \ 394*8617a60dSAndroid Build Coastguard Worker firmware/lib20/api_kernel.c \ 395*8617a60dSAndroid Build Coastguard Worker firmware/lib20/kernel.c 396*8617a60dSAndroid Build Coastguard Worker 397*8617a60dSAndroid Build Coastguard Worker# TPM lightweight command library 398*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${TPM2_MODE}),) 399*8617a60dSAndroid Build Coastguard WorkerTLCL_SRCS = \ 400*8617a60dSAndroid Build Coastguard Worker firmware/lib/tpm_lite/tlcl.c 401*8617a60dSAndroid Build Coastguard Workerelse 402*8617a60dSAndroid Build Coastguard Worker# TODO(apronin): tests for TPM2 case? 403*8617a60dSAndroid Build Coastguard WorkerTLCL_SRCS = \ 404*8617a60dSAndroid Build Coastguard Worker firmware/lib/tpm2_lite/tlcl.c \ 405*8617a60dSAndroid Build Coastguard Worker firmware/lib/tpm2_lite/marshaling.c 406*8617a60dSAndroid Build Coastguard Workerendif 407*8617a60dSAndroid Build Coastguard Worker 408*8617a60dSAndroid Build Coastguard Worker# Support real TPM unless MOCK_TPM is set 409*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${MOCK_TPM}),) 410*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 411*8617a60dSAndroid Build Coastguard Worker firmware/lib/tpm_lite/mocked_tlcl.c 412*8617a60dSAndroid Build Coastguard Workerendif 413*8617a60dSAndroid Build Coastguard Worker 414*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${X86_SHA_EXT}),) 415*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DX86_SHA_EXT 416*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 417*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2hwcrypto.c \ 418*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha256_x86.c 419*8617a60dSAndroid Build Coastguard Workerendif 420*8617a60dSAndroid Build Coastguard Worker 421*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${ARMV8_CRYPTO_EXT}),) 422*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DARMV8_CRYPTO_EXT 423*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 424*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2hwcrypto.c \ 425*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha256_arm.c 426*8617a60dSAndroid Build Coastguard WorkerFWLIB_ASMS += \ 427*8617a60dSAndroid Build Coastguard Worker firmware/2lib/sha256_armv8a_ce_a64.S 428*8617a60dSAndroid Build Coastguard Workerendif 429*8617a60dSAndroid Build Coastguard Worker 430*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${ARM64_RSA_ACCELERATION}),) 431*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DARM64_RSA_ACCELERATION 432*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 433*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2modpow_neon.c 434*8617a60dSAndroid Build Coastguard Workerendif 435*8617a60dSAndroid Build Coastguard Worker 436*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${VB2_X86_RSA_ACCELERATION}),) 437*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DVB2_X86_RSA_ACCELERATION 438*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 439*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2modpow_sse2.c 440*8617a60dSAndroid Build Coastguard Workerendif 441*8617a60dSAndroid Build Coastguard Worker 442*8617a60dSAndroid Build Coastguard Workerifneq (,$(filter arm64 x86 x86_64,${ARCH})) 443*8617a60dSAndroid Build Coastguard WorkerENABLE_HWCRYPTO_RSA_TESTS := 1 444*8617a60dSAndroid Build Coastguard Workerendif 445*8617a60dSAndroid Build Coastguard Worker 446*8617a60dSAndroid Build Coastguard Worker# Even if X86_SHA_EXT is 0 we need cflags since this will be compiled for tests 447*8617a60dSAndroid Build Coastguard Worker${BUILD}/firmware/2lib/2sha256_x86.o: CFLAGS += -mssse3 -mno-avx -msha 448*8617a60dSAndroid Build Coastguard Worker 449*8617a60dSAndroid Build Coastguard Worker${BUILD}/firmware/2lib/2modpow_sse2.o: CFLAGS += -msse2 -mno-avx 450*8617a60dSAndroid Build Coastguard Worker 451*8617a60dSAndroid Build Coastguard Workerifneq (${FIRMWARE_STUB},) 452*8617a60dSAndroid Build Coastguard Worker# Include BIOS stubs in the firmware library when compiling for host 453*8617a60dSAndroid Build Coastguard Worker# TODO: split out other stub funcs too 454*8617a60dSAndroid Build Coastguard WorkerFWLIB_SRCS += \ 455*8617a60dSAndroid Build Coastguard Worker firmware/stub/tpm_lite_stub.c \ 456*8617a60dSAndroid Build Coastguard Worker firmware/stub/vboot_api_stub_disk.c \ 457*8617a60dSAndroid Build Coastguard Worker firmware/stub/vboot_api_stub_stream.c \ 458*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2stub.c 459*8617a60dSAndroid Build Coastguard Workerendif 460*8617a60dSAndroid Build Coastguard Worker 461*8617a60dSAndroid Build Coastguard WorkerFWLIB_OBJS = ${FWLIB_SRCS:%.c=${BUILD}/%.o} ${FWLIB_ASMS:%.S=${BUILD}/%.o} 462*8617a60dSAndroid Build Coastguard WorkerTLCL_OBJS = ${TLCL_SRCS:%.c=${BUILD}/%.o} 463*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${FWLIB_OBJS} ${TLCL_OBJS} 464*8617a60dSAndroid Build Coastguard Worker 465*8617a60dSAndroid Build Coastguard Worker# Maintain behaviour of default on. 466*8617a60dSAndroid Build Coastguard WorkerUSE_FLASHROM ?= 1 467*8617a60dSAndroid Build Coastguard Worker 468*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${USE_FLASHROM}),) 469*8617a60dSAndroid Build Coastguard Worker$(info building with libflashrom support) 470*8617a60dSAndroid Build Coastguard WorkerFLASHROM_LIBS := $(shell ${PKG_CONFIG} --libs flashrom) 471*8617a60dSAndroid Build Coastguard WorkerCOMMONLIB_SRCS += \ 472*8617a60dSAndroid Build Coastguard Worker host/lib/flashrom.c \ 473*8617a60dSAndroid Build Coastguard Worker host/lib/flashrom_drv.c 474*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DUSE_FLASHROM 475*8617a60dSAndroid Build Coastguard Workerendif 476*8617a60dSAndroid Build Coastguard WorkerCOMMONLIB_SRCS += \ 477*8617a60dSAndroid Build Coastguard Worker host/lib/subprocess.c \ 478*8617a60dSAndroid Build Coastguard Worker host/lib/cbfstool.c 479*8617a60dSAndroid Build Coastguard Worker 480*8617a60dSAndroid Build Coastguard Worker# Intermediate library for the vboot_reference utilities to link against. 481*8617a60dSAndroid Build Coastguard WorkerUTILLIB = ${BUILD}/libvboot_util.a 482*8617a60dSAndroid Build Coastguard Worker 483*8617a60dSAndroid Build Coastguard Worker# Avoid build failures outside the chroot on Ubuntu 2022.04 484*8617a60dSAndroid Build Coastguard Worker# e.g.: 485*8617a60dSAndroid Build Coastguard Worker# host/lib/host_key2.c:103:17: error: ‘RSA_free’ is deprecated: Since OpenSSL 3.0 486*8617a60dSAndroid Build Coastguard Worker# [-Werror=deprecated-declarations] 487*8617a60dSAndroid Build Coastguard Workerifeq ($(OPENSSL_VERSION),3) 488*8617a60dSAndroid Build Coastguard Worker${UTILLIB}: CFLAGS += -Wno-error=deprecated-declarations 489*8617a60dSAndroid Build Coastguard Workerendif 490*8617a60dSAndroid Build Coastguard Worker 491*8617a60dSAndroid Build Coastguard WorkerUTILLIB_SRCS = \ 492*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_add.c \ 493*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_boot.c \ 494*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_common.c \ 495*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_create.c \ 496*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_edit.c \ 497*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_prioritize.c \ 498*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_repair.c \ 499*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_show.c \ 500*8617a60dSAndroid Build Coastguard Worker futility/dump_kernel_config_lib.c \ 501*8617a60dSAndroid Build Coastguard Worker host/arch/${ARCH_DIR}/lib/crossystem_arch.c \ 502*8617a60dSAndroid Build Coastguard Worker host/lib/chromeos_config.c \ 503*8617a60dSAndroid Build Coastguard Worker host/lib/crossystem.c \ 504*8617a60dSAndroid Build Coastguard Worker host/lib/crypto.c \ 505*8617a60dSAndroid Build Coastguard Worker host/lib/file_keys.c \ 506*8617a60dSAndroid Build Coastguard Worker $(COMMONLIB_SRCS) \ 507*8617a60dSAndroid Build Coastguard Worker host/lib/fmap.c \ 508*8617a60dSAndroid Build Coastguard Worker host/lib/host_common.c \ 509*8617a60dSAndroid Build Coastguard Worker host/lib/host_key2.c \ 510*8617a60dSAndroid Build Coastguard Worker host/lib/host_keyblock.c \ 511*8617a60dSAndroid Build Coastguard Worker host/lib/host_misc.c \ 512*8617a60dSAndroid Build Coastguard Worker host/lib/host_signature.c \ 513*8617a60dSAndroid Build Coastguard Worker host/lib/host_signature2.c \ 514*8617a60dSAndroid Build Coastguard Worker host/lib/signature_digest.c \ 515*8617a60dSAndroid Build Coastguard Worker host/lib/util_misc.c \ 516*8617a60dSAndroid Build Coastguard Worker host/lib21/host_common.c \ 517*8617a60dSAndroid Build Coastguard Worker host/lib21/host_key.c \ 518*8617a60dSAndroid Build Coastguard Worker host/lib21/host_misc.c \ 519*8617a60dSAndroid Build Coastguard Worker host/lib21/host_signature.c 520*8617a60dSAndroid Build Coastguard Worker 521*8617a60dSAndroid Build Coastguard Workerifeq ($(HAVE_NSS),1) 522*8617a60dSAndroid Build Coastguard WorkerUTILLIB_SRCS += \ 523*8617a60dSAndroid Build Coastguard Worker host/lib/host_p11.c 524*8617a60dSAndroid Build Coastguard Workerelse 525*8617a60dSAndroid Build Coastguard WorkerUTILLIB_SRCS += \ 526*8617a60dSAndroid Build Coastguard Worker host/lib/host_p11_stub.c 527*8617a60dSAndroid Build Coastguard Workerendif 528*8617a60dSAndroid Build Coastguard Worker 529*8617a60dSAndroid Build Coastguard WorkerUTILLIB_OBJS = ${UTILLIB_SRCS:%.c=${BUILD}/%.o} 530*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${UTILLIB_OBJS} 531*8617a60dSAndroid Build Coastguard Worker 532*8617a60dSAndroid Build Coastguard Worker# Externally exported library for some target userspace apps to link with 533*8617a60dSAndroid Build Coastguard Worker# (cryptohome, updater, etc.) 534*8617a60dSAndroid Build Coastguard WorkerHOSTLIB = ${BUILD}/libvboot_host.so 535*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_STATIC = ${BUILD}/libvboot_host.a 536*8617a60dSAndroid Build Coastguard Worker 537*8617a60dSAndroid Build Coastguard Worker# For testing purposes files contianing some libvboot_host symbols. 538*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_DEF = ${BUILD}/tests/libvboot_host_def.txt 539*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_UNDEF = ${BUILD}/tests/libvboot_host_undef.txt 540*8617a60dSAndroid Build Coastguard Worker 541*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_SRCS = \ 542*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_add.c \ 543*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_boot.c \ 544*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_common.c \ 545*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_create.c \ 546*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_edit.c \ 547*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_find.c \ 548*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_prioritize.c \ 549*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_repair.c \ 550*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_show.c \ 551*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2common.c \ 552*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2context.c \ 553*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2crc8.c \ 554*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2crypto.c \ 555*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2hmac.c \ 556*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2nvstorage.c \ 557*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2recovery_reasons.c \ 558*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2rsa.c \ 559*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha1.c \ 560*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha256.c \ 561*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha512.c \ 562*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2sha_utility.c \ 563*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2struct.c \ 564*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2stub.c \ 565*8617a60dSAndroid Build Coastguard Worker firmware/2lib/2stub_hwcrypto.c \ 566*8617a60dSAndroid Build Coastguard Worker firmware/lib/cgptlib/cgptlib_internal.c \ 567*8617a60dSAndroid Build Coastguard Worker firmware/lib/cgptlib/crc32.c \ 568*8617a60dSAndroid Build Coastguard Worker firmware/lib/gpt_misc.c \ 569*8617a60dSAndroid Build Coastguard Worker firmware/stub/tpm_lite_stub.c \ 570*8617a60dSAndroid Build Coastguard Worker firmware/stub/vboot_api_stub_disk.c \ 571*8617a60dSAndroid Build Coastguard Worker futility/dump_kernel_config_lib.c \ 572*8617a60dSAndroid Build Coastguard Worker host/arch/${ARCH_DIR}/lib/crossystem_arch.c \ 573*8617a60dSAndroid Build Coastguard Worker host/lib/chromeos_config.c \ 574*8617a60dSAndroid Build Coastguard Worker host/lib/crossystem.c \ 575*8617a60dSAndroid Build Coastguard Worker host/lib/crypto.c \ 576*8617a60dSAndroid Build Coastguard Worker host/lib/extract_vmlinuz.c \ 577*8617a60dSAndroid Build Coastguard Worker $(COMMONLIB_SRCS) \ 578*8617a60dSAndroid Build Coastguard Worker host/lib/fmap.c \ 579*8617a60dSAndroid Build Coastguard Worker host/lib/host_misc.c \ 580*8617a60dSAndroid Build Coastguard Worker host/lib21/host_misc.c \ 581*8617a60dSAndroid Build Coastguard Worker ${TLCL_SRCS} 582*8617a60dSAndroid Build Coastguard Worker 583*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${GPT_SPI_NOR}),) 584*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_SRCS += cgpt/cgpt_nor.c 585*8617a60dSAndroid Build Coastguard Workerendif 586*8617a60dSAndroid Build Coastguard Worker 587*8617a60dSAndroid Build Coastguard WorkerHOSTLIB_OBJS = ${HOSTLIB_SRCS:%.c=${BUILD}/%.o} 588*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${HOSTLIB_OBJS} 589*8617a60dSAndroid Build Coastguard Worker 590*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 591*8617a60dSAndroid Build Coastguard Worker# Now for the userspace binaries 592*8617a60dSAndroid Build Coastguard Worker 593*8617a60dSAndroid Build Coastguard WorkerCGPT = ${BUILD}/cgpt/cgpt 594*8617a60dSAndroid Build Coastguard Worker 595*8617a60dSAndroid Build Coastguard WorkerCGPT_SRCS = \ 596*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt.c \ 597*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_add.c \ 598*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_boot.c \ 599*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_common.c \ 600*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_create.c \ 601*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_edit.c \ 602*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_find.c \ 603*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_legacy.c \ 604*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_prioritize.c \ 605*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_repair.c \ 606*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_show.c \ 607*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_add.c \ 608*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_boot.c \ 609*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_create.c \ 610*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_edit.c \ 611*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_find.c \ 612*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_legacy.c \ 613*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_prioritize.c \ 614*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_repair.c \ 615*8617a60dSAndroid Build Coastguard Worker cgpt/cmd_show.c 616*8617a60dSAndroid Build Coastguard Worker 617*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${GPT_SPI_NOR}),) 618*8617a60dSAndroid Build Coastguard WorkerCGPT_SRCS += cgpt/cgpt_nor.c 619*8617a60dSAndroid Build Coastguard Workerendif 620*8617a60dSAndroid Build Coastguard Worker 621*8617a60dSAndroid Build Coastguard WorkerCGPT_OBJS = ${CGPT_SRCS:%.c=${BUILD}/%.o} 622*8617a60dSAndroid Build Coastguard Worker 623*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${CGPT_OBJS} 624*8617a60dSAndroid Build Coastguard Worker 625*8617a60dSAndroid Build Coastguard WorkerCGPT_WRAPPER = ${BUILD}/cgpt/cgpt_wrapper 626*8617a60dSAndroid Build Coastguard Worker 627*8617a60dSAndroid Build Coastguard WorkerCGPT_WRAPPER_SRCS = \ 628*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_nor.c \ 629*8617a60dSAndroid Build Coastguard Worker cgpt/cgpt_wrapper.c 630*8617a60dSAndroid Build Coastguard Worker 631*8617a60dSAndroid Build Coastguard WorkerCGPT_WRAPPER_OBJS = ${CGPT_WRAPPER_SRCS:%.c=${BUILD}/%.o} 632*8617a60dSAndroid Build Coastguard Worker 633*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${CGPT_WRAPPER_OBJS} 634*8617a60dSAndroid Build Coastguard Worker 635*8617a60dSAndroid Build Coastguard Worker# Utility defaults 636*8617a60dSAndroid Build Coastguard WorkerUTIL_DEFAULTS = ${BUILD}/default/vboot_reference 637*8617a60dSAndroid Build Coastguard Worker 638*8617a60dSAndroid Build Coastguard Worker# Scripts to install directly (not compiled) 639*8617a60dSAndroid Build Coastguard WorkerUTIL_SCRIPT_NAMES_SDK = \ 640*8617a60dSAndroid Build Coastguard Worker utility/dev_make_keypair \ 641*8617a60dSAndroid Build Coastguard Worker utility/vbutil_what_keys 642*8617a60dSAndroid Build Coastguard WorkerUTIL_SCRIPT_NAMES_BOARD = \ 643*8617a60dSAndroid Build Coastguard Worker utility/chromeos-tpm-recovery \ 644*8617a60dSAndroid Build Coastguard Worker utility/dev_debug_vboot \ 645*8617a60dSAndroid Build Coastguard Worker utility/enable_dev_usb_boot \ 646*8617a60dSAndroid Build Coastguard Worker utility/tpm-nvsize 647*8617a60dSAndroid Build Coastguard Worker 648*8617a60dSAndroid Build Coastguard WorkerUTIL_BIN_NAMES_SDK = \ 649*8617a60dSAndroid Build Coastguard Worker utility/dumpRSAPublicKey \ 650*8617a60dSAndroid Build Coastguard Worker utility/load_kernel_test \ 651*8617a60dSAndroid Build Coastguard Worker utility/pad_digest_utility \ 652*8617a60dSAndroid Build Coastguard Worker utility/signature_digest_utility \ 653*8617a60dSAndroid Build Coastguard Worker utility/verify_data 654*8617a60dSAndroid Build Coastguard WorkerUTIL_BIN_NAMES_BOARD = \ 655*8617a60dSAndroid Build Coastguard Worker utility/dumpRSAPublicKey \ 656*8617a60dSAndroid Build Coastguard Worker utility/tpmc 657*8617a60dSAndroid Build Coastguard Worker 658*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${USE_FLASHROM}),) 659*8617a60dSAndroid Build Coastguard WorkerUTIL_BIN_NAMES_BOARD += utility/crossystem 660*8617a60dSAndroid Build Coastguard Workerendif 661*8617a60dSAndroid Build Coastguard Worker 662*8617a60dSAndroid Build Coastguard WorkerUTIL_SCRIPTS_SDK = $(addprefix ${BUILD}/,${UTIL_SCRIPT_NAMES_SDK}) 663*8617a60dSAndroid Build Coastguard WorkerUTIL_SCRIPTS_BOARD = $(addprefix ${BUILD}/,${UTIL_SCRIPT_NAMES_BOARD}) 664*8617a60dSAndroid Build Coastguard WorkerUTIL_BINS_SDK = $(addprefix ${BUILD}/,${UTIL_BIN_NAMES_SDK}) 665*8617a60dSAndroid Build Coastguard WorkerUTIL_BINS_BOARD = $(addprefix ${BUILD}/,${UTIL_BIN_NAMES_BOARD}) 666*8617a60dSAndroid Build Coastguard WorkerUTIL_FILES_SDK = ${UTIL_BINS_SDK} ${UTIL_SCRIPTS_SDK} 667*8617a60dSAndroid Build Coastguard WorkerUTIL_FILES_BOARD = ${UTIL_BINS_BOARD} ${UTIL_SCRIPTS_BOARD} 668*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += $(addsuffix .o,${UTIL_BINS_SDK}) 669*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += $(addsuffix .o,${UTIL_BINS_BOARD}) 670*8617a60dSAndroid Build Coastguard Worker 671*8617a60dSAndroid Build Coastguard Worker 672*8617a60dSAndroid Build Coastguard Worker# Signing scripts that are also useful on DUTs. 673*8617a60dSAndroid Build Coastguard WorkerSIGNING_SCRIPTS_BOARD = \ 674*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/make_dev_firmware.sh \ 675*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/make_dev_ssd.sh \ 676*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/resign_firmwarefd.sh \ 677*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/common_minimal.sh 678*8617a60dSAndroid Build Coastguard Worker 679*8617a60dSAndroid Build Coastguard Worker# SDK installations have some extra scripts. 680*8617a60dSAndroid Build Coastguard WorkerSIGNING_SCRIPTS_SDK = \ 681*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/make_dev_firmware.sh \ 682*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/make_dev_ssd.sh \ 683*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/resign_firmwarefd.sh \ 684*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/swap_ec_rw \ 685*8617a60dSAndroid Build Coastguard Worker scripts/image_signing/common_minimal.sh 686*8617a60dSAndroid Build Coastguard Worker 687*8617a60dSAndroid Build Coastguard Worker# Unified firmware utility. 688*8617a60dSAndroid Build Coastguard WorkerFUTIL_BIN = ${BUILD}/futility/futility 689*8617a60dSAndroid Build Coastguard Worker 690*8617a60dSAndroid Build Coastguard Worker# These are the executables that are now built in to futility. We'll create 691*8617a60dSAndroid Build Coastguard Worker# symlinks for these so the old names will still work. 692*8617a60dSAndroid Build Coastguard WorkerFUTIL_SYMLINKS = \ 693*8617a60dSAndroid Build Coastguard Worker dump_fmap \ 694*8617a60dSAndroid Build Coastguard Worker dump_kernel_config \ 695*8617a60dSAndroid Build Coastguard Worker gbb_utility \ 696*8617a60dSAndroid Build Coastguard Worker vbutil_firmware \ 697*8617a60dSAndroid Build Coastguard Worker vbutil_kernel \ 698*8617a60dSAndroid Build Coastguard Worker vbutil_key \ 699*8617a60dSAndroid Build Coastguard Worker vbutil_keyblock 700*8617a60dSAndroid Build Coastguard Worker 701*8617a60dSAndroid Build Coastguard WorkerFUTIL_SRCS = \ 702*8617a60dSAndroid Build Coastguard Worker futility/futility.c \ 703*8617a60dSAndroid Build Coastguard Worker futility/cmd_create.c \ 704*8617a60dSAndroid Build Coastguard Worker futility/cmd_dump_fmap.c \ 705*8617a60dSAndroid Build Coastguard Worker futility/cmd_dump_kernel_config.c \ 706*8617a60dSAndroid Build Coastguard Worker futility/cmd_flash_util.c \ 707*8617a60dSAndroid Build Coastguard Worker futility/cmd_gbb_utility.c \ 708*8617a60dSAndroid Build Coastguard Worker futility/cmd_gscvd.c \ 709*8617a60dSAndroid Build Coastguard Worker futility/cmd_load_fmap.c \ 710*8617a60dSAndroid Build Coastguard Worker futility/cmd_pcr.c \ 711*8617a60dSAndroid Build Coastguard Worker futility/cmd_read.c \ 712*8617a60dSAndroid Build Coastguard Worker futility/cmd_show.c \ 713*8617a60dSAndroid Build Coastguard Worker futility/cmd_sign.c \ 714*8617a60dSAndroid Build Coastguard Worker futility/cmd_update.c \ 715*8617a60dSAndroid Build Coastguard Worker futility/cmd_vbutil_firmware.c \ 716*8617a60dSAndroid Build Coastguard Worker futility/cmd_vbutil_kernel.c \ 717*8617a60dSAndroid Build Coastguard Worker futility/cmd_vbutil_key.c \ 718*8617a60dSAndroid Build Coastguard Worker futility/cmd_vbutil_keyblock.c \ 719*8617a60dSAndroid Build Coastguard Worker futility/file_type_bios.c \ 720*8617a60dSAndroid Build Coastguard Worker futility/file_type.c \ 721*8617a60dSAndroid Build Coastguard Worker futility/file_type_rwsig.c \ 722*8617a60dSAndroid Build Coastguard Worker futility/file_type_usbpd1.c \ 723*8617a60dSAndroid Build Coastguard Worker futility/flash_helpers.c \ 724*8617a60dSAndroid Build Coastguard Worker futility/platform_csme.c \ 725*8617a60dSAndroid Build Coastguard Worker futility/misc.c \ 726*8617a60dSAndroid Build Coastguard Worker futility/vb1_helper.c \ 727*8617a60dSAndroid Build Coastguard Worker futility/vb2_helper.c 728*8617a60dSAndroid Build Coastguard Worker 729*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${USE_FLASHROM}),) 730*8617a60dSAndroid Build Coastguard WorkerFUTIL_SRCS += host/lib/flashrom_drv.c \ 731*8617a60dSAndroid Build Coastguard Worker futility/updater_archive.c \ 732*8617a60dSAndroid Build Coastguard Worker futility/updater_dut.c \ 733*8617a60dSAndroid Build Coastguard Worker futility/updater_manifest.c \ 734*8617a60dSAndroid Build Coastguard Worker futility/updater_quirks.c \ 735*8617a60dSAndroid Build Coastguard Worker futility/updater_utils.c \ 736*8617a60dSAndroid Build Coastguard Worker futility/updater.c 737*8617a60dSAndroid Build Coastguard Workerendif 738*8617a60dSAndroid Build Coastguard Worker 739*8617a60dSAndroid Build Coastguard Worker# List of commands built in futility. 740*8617a60dSAndroid Build Coastguard WorkerFUTIL_CMD_LIST = ${BUILD}/gen/futility_cmds.c 741*8617a60dSAndroid Build Coastguard Worker 742*8617a60dSAndroid Build Coastguard WorkerFUTIL_OBJS = ${FUTIL_SRCS:%.c=${BUILD}/%.o} ${FUTIL_CMD_LIST:%.c=%.o} 743*8617a60dSAndroid Build Coastguard Worker 744*8617a60dSAndroid Build Coastguard Worker${FUTIL_OBJS}: INCLUDES += -Ihost/lib21/include 745*8617a60dSAndroid Build Coastguard Worker 746*8617a60dSAndroid Build Coastguard Worker# Avoid build failures outside the chroot on Ubuntu 2022.04 747*8617a60dSAndroid Build Coastguard Worker# e.g.: 748*8617a60dSAndroid Build Coastguard Worker# futility/cmd_create.c:161:9: warning: ‘RSA_free’ is deprecated: Since OpenSSL 3.0 749*8617a60dSAndroid Build Coastguard Worker# [-Wdeprecated-declarations] 750*8617a60dSAndroid Build Coastguard Workerifeq ($(OPENSSL_VERSION),3) 751*8617a60dSAndroid Build Coastguard Worker${FUTIL_OBJS}: CFLAGS += -Wno-error=deprecated-declarations 752*8617a60dSAndroid Build Coastguard Workerendif 753*8617a60dSAndroid Build Coastguard Worker 754*8617a60dSAndroid Build Coastguard WorkerALL_OBJS += ${FUTIL_OBJS} 755*8617a60dSAndroid Build Coastguard Worker 756*8617a60dSAndroid Build Coastguard Worker 757*8617a60dSAndroid Build Coastguard Worker# Library of handy test functions. 758*8617a60dSAndroid Build Coastguard WorkerTESTLIB = ${BUILD}/tests/test.a 759*8617a60dSAndroid Build Coastguard Worker 760*8617a60dSAndroid Build Coastguard WorkerTEST_COMMON_DIR = tests/common 761*8617a60dSAndroid Build Coastguard Worker 762*8617a60dSAndroid Build Coastguard WorkerTESTLIB_SRCS += $(wildcard $(TEST_COMMON_DIR)/*.c) 763*8617a60dSAndroid Build Coastguard WorkerTESTLIB_SRCS += tests/crc32_test.c 764*8617a60dSAndroid Build Coastguard Worker 765*8617a60dSAndroid Build Coastguard WorkerTESTLIB_OBJS = ${TESTLIB_SRCS:%.c=${BUILD}/%.o} 766*8617a60dSAndroid Build Coastguard WorkerTEST_OBJS += ${TESTLIB_OBJS} 767*8617a60dSAndroid Build Coastguard Worker 768*8617a60dSAndroid Build Coastguard Worker 769*8617a60dSAndroid Build Coastguard Worker# And some compiled tests. 770*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES = \ 771*8617a60dSAndroid Build Coastguard Worker tests/cbfstool_tests \ 772*8617a60dSAndroid Build Coastguard Worker tests/cgptlib_test \ 773*8617a60dSAndroid Build Coastguard Worker tests/chromeos_config_tests \ 774*8617a60dSAndroid Build Coastguard Worker tests/gpt_misc_tests \ 775*8617a60dSAndroid Build Coastguard Worker tests/sha_benchmark \ 776*8617a60dSAndroid Build Coastguard Worker tests/subprocess_tests \ 777*8617a60dSAndroid Build Coastguard Worker tests/verify_kernel 778*8617a60dSAndroid Build Coastguard Worker 779*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${MOCK_TPM})$(filter-out 0,${TPM2_MODE}),) 780*8617a60dSAndroid Build Coastguard Worker# tlcl_tests only works when MOCK_TPM is disabled 781*8617a60dSAndroid Build Coastguard Worker# TODO(apronin): tests for TPM2 case? 782*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES += \ 783*8617a60dSAndroid Build Coastguard Worker tests/tlcl_tests 784*8617a60dSAndroid Build Coastguard Workerendif 785*8617a60dSAndroid Build Coastguard Worker 786*8617a60dSAndroid Build Coastguard WorkerTEST_FUTIL_NAMES = \ 787*8617a60dSAndroid Build Coastguard Worker tests/futility/binary_editor \ 788*8617a60dSAndroid Build Coastguard Worker tests/futility/test_file_types \ 789*8617a60dSAndroid Build Coastguard Worker tests/futility/test_not_really 790*8617a60dSAndroid Build Coastguard Worker 791*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES += ${TEST_FUTIL_NAMES} 792*8617a60dSAndroid Build Coastguard Worker 793*8617a60dSAndroid Build Coastguard WorkerTEST2X_NAMES = \ 794*8617a60dSAndroid Build Coastguard Worker tests/vb2_api_tests \ 795*8617a60dSAndroid Build Coastguard Worker tests/vb2_auxfw_sync_tests \ 796*8617a60dSAndroid Build Coastguard Worker tests/vb2_common_tests \ 797*8617a60dSAndroid Build Coastguard Worker tests/vb2_common2_tests \ 798*8617a60dSAndroid Build Coastguard Worker tests/vb2_common3_tests \ 799*8617a60dSAndroid Build Coastguard Worker tests/vb2_crypto_tests \ 800*8617a60dSAndroid Build Coastguard Worker tests/vb2_ec_sync_tests \ 801*8617a60dSAndroid Build Coastguard Worker tests/vb2_firmware_tests \ 802*8617a60dSAndroid Build Coastguard Worker tests/vb2_gbb_init_tests \ 803*8617a60dSAndroid Build Coastguard Worker tests/vb2_gbb_tests \ 804*8617a60dSAndroid Build Coastguard Worker tests/vb2_host_flashrom_tests \ 805*8617a60dSAndroid Build Coastguard Worker tests/vb2_host_key_tests \ 806*8617a60dSAndroid Build Coastguard Worker tests/vb2_host_nvdata_flashrom_tests \ 807*8617a60dSAndroid Build Coastguard Worker tests/vb2_inject_kernel_subkey_tests \ 808*8617a60dSAndroid Build Coastguard Worker tests/vb2_kernel_tests \ 809*8617a60dSAndroid Build Coastguard Worker tests/vb2_load_kernel_tests \ 810*8617a60dSAndroid Build Coastguard Worker tests/vb2_load_kernel2_tests \ 811*8617a60dSAndroid Build Coastguard Worker tests/vb2_misc_tests \ 812*8617a60dSAndroid Build Coastguard Worker tests/vb2_misc2_tests \ 813*8617a60dSAndroid Build Coastguard Worker tests/vb2_nvstorage_tests \ 814*8617a60dSAndroid Build Coastguard Worker tests/vb2_rsa_utility_tests \ 815*8617a60dSAndroid Build Coastguard Worker tests/vb2_recovery_reasons_tests \ 816*8617a60dSAndroid Build Coastguard Worker tests/vb2_secdata_firmware_tests \ 817*8617a60dSAndroid Build Coastguard Worker tests/vb2_secdata_fwmp_tests \ 818*8617a60dSAndroid Build Coastguard Worker tests/vb2_secdata_kernel_tests \ 819*8617a60dSAndroid Build Coastguard Worker tests/vb2_sha_api_tests \ 820*8617a60dSAndroid Build Coastguard Worker tests/vb2_sha_tests \ 821*8617a60dSAndroid Build Coastguard Worker tests/hmac_test 822*8617a60dSAndroid Build Coastguard Worker 823*8617a60dSAndroid Build Coastguard WorkerTEST20_NAMES = \ 824*8617a60dSAndroid Build Coastguard Worker tests/vb20_api_kernel_tests \ 825*8617a60dSAndroid Build Coastguard Worker tests/vb20_kernel_tests \ 826*8617a60dSAndroid Build Coastguard Worker tests/vb20_rsa_padding_tests \ 827*8617a60dSAndroid Build Coastguard Worker tests/vb20_verify_fw 828*8617a60dSAndroid Build Coastguard Worker 829*8617a60dSAndroid Build Coastguard WorkerTEST21_NAMES = \ 830*8617a60dSAndroid Build Coastguard Worker tests/vb21_host_common2_tests \ 831*8617a60dSAndroid Build Coastguard Worker tests/vb21_host_common_tests \ 832*8617a60dSAndroid Build Coastguard Worker tests/vb21_host_key_tests \ 833*8617a60dSAndroid Build Coastguard Worker tests/vb21_host_misc_tests \ 834*8617a60dSAndroid Build Coastguard Worker tests/vb21_host_sig_tests 835*8617a60dSAndroid Build Coastguard Worker 836*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES += ${TEST2X_NAMES} ${TEST20_NAMES} ${TEST21_NAMES} 837*8617a60dSAndroid Build Coastguard Worker 838*8617a60dSAndroid Build Coastguard Worker# Tests which should be run on dut 839*8617a60dSAndroid Build Coastguard Workerifeq (${ARCH}, x86_64) 840*8617a60dSAndroid Build Coastguard WorkerDUT_TEST_NAMES += tests/vb2_sha256_x86_tests 841*8617a60dSAndroid Build Coastguard Workerendif 842*8617a60dSAndroid Build Coastguard Worker 843*8617a60dSAndroid Build Coastguard WorkerHWCRYPTO_RSA_TESTS = \ 844*8617a60dSAndroid Build Coastguard Worker tests/vb20_hwcrypto_rsa_padding_tests \ 845*8617a60dSAndroid Build Coastguard Worker tests/vb20_hwcrypto_verify_fw 846*8617a60dSAndroid Build Coastguard Worker 847*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES += ${DUT_TEST_NAMES} 848*8617a60dSAndroid Build Coastguard Worker 849*8617a60dSAndroid Build Coastguard Workerifeq (${ENABLE_HWCRYPTO_RSA_TESTS},1) 850*8617a60dSAndroid Build Coastguard WorkerTEST20_NAMES += ${HWCRYPTO_RSA_TESTS} 851*8617a60dSAndroid Build Coastguard Workerendif 852*8617a60dSAndroid Build Coastguard Worker 853*8617a60dSAndroid Build Coastguard Worker# And a few more... 854*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${TPM2_MODE}),) 855*8617a60dSAndroid Build Coastguard WorkerTLCL_TEST_NAMES = \ 856*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_earlyextend \ 857*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_earlynvram \ 858*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_earlynvram2 \ 859*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_enable \ 860*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_fastenable \ 861*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_globallock \ 862*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_redefine_unowned \ 863*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_spaceperm \ 864*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_testsetup \ 865*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_timing \ 866*8617a60dSAndroid Build Coastguard Worker tests/tpm_lite/tpmtest_writelimit 867*8617a60dSAndroid Build Coastguard Workerelse 868*8617a60dSAndroid Build Coastguard Worker# TODO(apronin): tests for TPM2 case? 869*8617a60dSAndroid Build Coastguard WorkerTLCL_TEST_NAMES = 870*8617a60dSAndroid Build Coastguard Workerendif 871*8617a60dSAndroid Build Coastguard Worker 872*8617a60dSAndroid Build Coastguard WorkerTEST_NAMES += ${TLCL_TEST_NAMES} 873*8617a60dSAndroid Build Coastguard Worker 874*8617a60dSAndroid Build Coastguard Worker# Finally 875*8617a60dSAndroid Build Coastguard WorkerTEST_BINS = $(addprefix ${BUILD}/,${TEST_NAMES}) 876*8617a60dSAndroid Build Coastguard WorkerTEST_OBJS += $(addsuffix .o,${TEST_BINS}) 877*8617a60dSAndroid Build Coastguard Worker 878*8617a60dSAndroid Build Coastguard WorkerTEST_FUTIL_BINS = $(addprefix ${BUILD}/,${TEST_FUTIL_NAMES}) 879*8617a60dSAndroid Build Coastguard WorkerTEST2X_BINS = $(addprefix ${BUILD}/,${TEST2X_NAMES}) 880*8617a60dSAndroid Build Coastguard WorkerTEST20_BINS = $(addprefix ${BUILD}/,${TEST20_NAMES}) 881*8617a60dSAndroid Build Coastguard WorkerTEST21_BINS = $(addprefix ${BUILD}/,${TEST21_NAMES}) 882*8617a60dSAndroid Build Coastguard Worker 883*8617a60dSAndroid Build Coastguard Worker# Directory containing test keys 884*8617a60dSAndroid Build Coastguard WorkerTEST_KEYS = ${SRC_RUN}/tests/testkeys 885*8617a60dSAndroid Build Coastguard Worker 886*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 887*8617a60dSAndroid Build Coastguard Worker# Fuzzing binaries 888*8617a60dSAndroid Build Coastguard Worker 889*8617a60dSAndroid Build Coastguard WorkerFUZZ_TEST_NAMES = \ 890*8617a60dSAndroid Build Coastguard Worker tests/cgpt_fuzzer \ 891*8617a60dSAndroid Build Coastguard Worker tests/vb2_keyblock_fuzzer \ 892*8617a60dSAndroid Build Coastguard Worker tests/vb2_preamble_fuzzer 893*8617a60dSAndroid Build Coastguard Worker 894*8617a60dSAndroid Build Coastguard WorkerFUZZ_TEST_BINS = $(addprefix ${BUILD}/,${FUZZ_TEST_NAMES}) 895*8617a60dSAndroid Build Coastguard Worker 896*8617a60dSAndroid Build Coastguard Worker############################################################################## 897*8617a60dSAndroid Build Coastguard Worker# Finally, some targets. High-level ones first. 898*8617a60dSAndroid Build Coastguard Worker 899*8617a60dSAndroid Build Coastguard Worker# Create output directories if necessary. Do this via explicit shell commands 900*8617a60dSAndroid Build Coastguard Worker# so it happens before trying to generate/include dependencies. 901*8617a60dSAndroid Build Coastguard WorkerSUBDIRS := firmware host cgpt utility futility tests tests/tpm_lite 902*8617a60dSAndroid Build Coastguard Worker_dir_create := $(foreach d, \ 903*8617a60dSAndroid Build Coastguard Worker $(shell find ${SUBDIRS} -name '*.c' -exec dirname {} \; | sort -u), \ 904*8617a60dSAndroid Build Coastguard Worker $(shell [ -d ${BUILD}/${d} ] || mkdir -p ${BUILD}/${d})) 905*8617a60dSAndroid Build Coastguard Worker 906*8617a60dSAndroid Build Coastguard Worker.PHONY: clean 907*8617a60dSAndroid Build Coastguard Workerclean: 908*8617a60dSAndroid Build Coastguard Worker ${Q}/bin/rm -rf ${BUILD} 909*8617a60dSAndroid Build Coastguard Worker 910*8617a60dSAndroid Build Coastguard Worker.PHONY: install 911*8617a60dSAndroid Build Coastguard Workerinstall: cgpt_install signing_install futil_install pc_files_install \ 912*8617a60dSAndroid Build Coastguard Worker lib_install $(if ${SDK_BUILD},,util_install_defaults) \ 913*8617a60dSAndroid Build Coastguard Worker $(foreach f,$(if ${SDK_BUILD},${UTIL_FILES_SDK},${UTIL_FILES_BOARD}), \ 914*8617a60dSAndroid Build Coastguard Worker util_install-$(patsubst ${BUILD}/%,%,${f})) 915*8617a60dSAndroid Build Coastguard Worker 916*8617a60dSAndroid Build Coastguard Worker.PHONY: install_dev 917*8617a60dSAndroid Build Coastguard Workerinstall_dev: devkeys_install headers_install 918*8617a60dSAndroid Build Coastguard Worker 919*8617a60dSAndroid Build Coastguard Worker.PHONY: install_mtd 920*8617a60dSAndroid Build Coastguard Workerinstall_mtd: install cgpt_wrapper_install 921*8617a60dSAndroid Build Coastguard Worker 922*8617a60dSAndroid Build Coastguard Worker.PHONY: install_for_test 923*8617a60dSAndroid Build Coastguard Workerinstall_for_test: override DESTDIR = ${TEST_INSTALL_DIR} 924*8617a60dSAndroid Build Coastguard Workerinstall_for_test: test_setup install \ 925*8617a60dSAndroid Build Coastguard Worker $(foreach f,${UTIL_FILES_SDK} ${UTIL_FILES_BOARD}, \ 926*8617a60dSAndroid Build Coastguard Worker util_install-$(patsubst ${BUILD}/%,%,${f})) 927*8617a60dSAndroid Build Coastguard Worker 928*8617a60dSAndroid Build Coastguard Worker# Don't delete intermediate object files 929*8617a60dSAndroid Build Coastguard Worker.SECONDARY: 930*8617a60dSAndroid Build Coastguard Worker 931*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 932*8617a60dSAndroid Build Coastguard Worker# Firmware library 933*8617a60dSAndroid Build Coastguard Worker 934*8617a60dSAndroid Build Coastguard Worker# TPM-specific flags. These depend on the particular TPM we're targeting for. 935*8617a60dSAndroid Build Coastguard Worker# They are needed here only for compiling parts of the firmware code into 936*8617a60dSAndroid Build Coastguard Worker# user-level tests. 937*8617a60dSAndroid Build Coastguard Worker 938*8617a60dSAndroid Build Coastguard Worker# TPM_BLOCKING_CONTINUESELFTEST is defined if TPM_ContinueSelfTest blocks until 939*8617a60dSAndroid Build Coastguard Worker# the self test has completed. 940*8617a60dSAndroid Build Coastguard Worker 941*8617a60dSAndroid Build Coastguard Worker${TLCL_OBJS}: CFLAGS += -DTPM_BLOCKING_CONTINUESELFTEST 942*8617a60dSAndroid Build Coastguard Worker 943*8617a60dSAndroid Build Coastguard Worker# TPM_MANUAL_SELFTEST is defined if the self test must be started manually 944*8617a60dSAndroid Build Coastguard Worker# (with a call to TPM_ContinueSelfTest) instead of starting automatically at 945*8617a60dSAndroid Build Coastguard Worker# power on. 946*8617a60dSAndroid Build Coastguard Worker# 947*8617a60dSAndroid Build Coastguard Worker# We sincerely hope that TPM_BLOCKING_CONTINUESELFTEST and TPM_MANUAL_SELFTEST 948*8617a60dSAndroid Build Coastguard Worker# are not both defined at the same time. (See comment in code.) 949*8617a60dSAndroid Build Coastguard Worker 950*8617a60dSAndroid Build Coastguard Worker# CFLAGS += -DTPM_MANUAL_SELFTEST 951*8617a60dSAndroid Build Coastguard Worker 952*8617a60dSAndroid Build Coastguard Worker# NOTE: UNROLL_LOOPS *only* affects SHA256, *not* SHA512. This seems to have 953*8617a60dSAndroid Build Coastguard Worker# been a conscious decision at some point (see b/35501356) but whether it still 954*8617a60dSAndroid Build Coastguard Worker# holds up in all situations on all architectures today might need to be 955*8617a60dSAndroid Build Coastguard Worker# reevaluated. For now, since we currently always use SHA256 for (non-recovery) 956*8617a60dSAndroid Build Coastguard Worker# kernel bodies and don't unroll loops for firmware verification, it's not very 957*8617a60dSAndroid Build Coastguard Worker# relevant in practice. To unroll SHA512, UNROLL_LOOPS_SHA512 would need to be 958*8617a60dSAndroid Build Coastguard Worker# defined. 959*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,$(UNROLL_LOOPS)),) 960*8617a60dSAndroid Build Coastguard Worker$(info vboot SHA256 built with unrolled loops (faster, larger code size)) 961*8617a60dSAndroid Build Coastguard WorkerCFLAGS += -DUNROLL_LOOPS 962*8617a60dSAndroid Build Coastguard Workerelse 963*8617a60dSAndroid Build Coastguard Worker$(info vboot SHA256 built with tight loops (slower, smaller code size)) 964*8617a60dSAndroid Build Coastguard Workerendif 965*8617a60dSAndroid Build Coastguard Worker 966*8617a60dSAndroid Build Coastguard Worker.PHONY: fwlib 967*8617a60dSAndroid Build Coastguard Workerfwlib: $(if ${FIRMWARE_ARCH},${FWLIB},) 968*8617a60dSAndroid Build Coastguard Worker 969*8617a60dSAndroid Build Coastguard Worker${FWLIB}: ${FWLIB_OBJS} 970*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 971*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 972*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " AR $(subst ${BUILD}/,,$@)\n" 973*8617a60dSAndroid Build Coastguard Worker ${Q}ar qcT $@ $^ 974*8617a60dSAndroid Build Coastguard Worker 975*8617a60dSAndroid Build Coastguard Worker.PHONY: tlcl 976*8617a60dSAndroid Build Coastguard Workertlcl: ${TLCL} 977*8617a60dSAndroid Build Coastguard Worker 978*8617a60dSAndroid Build Coastguard Worker${TLCL}: ${TLCL_OBJS} 979*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 980*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 981*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " AR $(subst ${BUILD}/,,$@)\n" 982*8617a60dSAndroid Build Coastguard Worker ${Q}ar qcT $@ $^ 983*8617a60dSAndroid Build Coastguard Worker 984*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 985*8617a60dSAndroid Build Coastguard Worker# Host library(s) 986*8617a60dSAndroid Build Coastguard Worker 987*8617a60dSAndroid Build Coastguard Worker# Some UTILLIB files need dlopen(), doesn't hurt to just link it everywhere. 988*8617a60dSAndroid Build Coastguard WorkerLDLIBS += -ldl 989*8617a60dSAndroid Build Coastguard Workerifneq ($(filter-out 0,${USE_FLASHROM}),) 990*8617a60dSAndroid Build Coastguard Worker${HOSTLIB}: LDLIBS += ${FLASHROM_LIBS} 991*8617a60dSAndroid Build Coastguard Workerendif 992*8617a60dSAndroid Build Coastguard Worker 993*8617a60dSAndroid Build Coastguard Worker.PHONY: utillib 994*8617a60dSAndroid Build Coastguard Workerutillib: ${UTILLIB} 995*8617a60dSAndroid Build Coastguard Worker 996*8617a60dSAndroid Build Coastguard Worker# TODO: better way to make .a than duplicating this recipe each time? 997*8617a60dSAndroid Build Coastguard Worker${UTILLIB}: ${UTILLIB_OBJS} ${FWLIB_OBJS} ${TLCL_OBJS} 998*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 999*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1000*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " AR $(subst ${BUILD}/,,$@)\n" 1001*8617a60dSAndroid Build Coastguard Worker ${Q}ar qcT $@ $^ 1002*8617a60dSAndroid Build Coastguard Worker 1003*8617a60dSAndroid Build Coastguard Worker.PHONY: hostlib 1004*8617a60dSAndroid Build Coastguard Workerhostlib: ${HOSTLIB} ${HOSTLIB_STATIC} 1005*8617a60dSAndroid Build Coastguard Worker 1006*8617a60dSAndroid Build Coastguard Worker# TODO: better way to make .a than duplicating this recipe each time? 1007*8617a60dSAndroid Build Coastguard Worker${HOSTLIB_STATIC}: ${HOSTLIB_OBJS} 1008*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 1009*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1010*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " AR $(subst ${BUILD}/,,$@)\n" 1011*8617a60dSAndroid Build Coastguard Worker ${Q}ar qcT $@ $^ 1012*8617a60dSAndroid Build Coastguard Worker 1013*8617a60dSAndroid Build Coastguard Worker${HOSTLIB}: ${HOSTLIB_OBJS} 1014*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 1015*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1016*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" 1017*8617a60dSAndroid Build Coastguard Worker ${Q}${LD} ${LDFLAGS} ${LDLIBS} -shared -Wl,-soname,$(subst ${BUILD}/,,$@) $^ -o $@ 1018*8617a60dSAndroid Build Coastguard Worker 1019*8617a60dSAndroid Build Coastguard Worker${HOSTLIB_DEF}: ${HOSTLIB_STATIC} 1020*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " NMd $(subst ${BUILD}/,,$@)\n" 1021*8617a60dSAndroid Build Coastguard Worker ${Q}nm --defined-only --format=just-symbols $^ > $@ 1022*8617a60dSAndroid Build Coastguard Worker 1023*8617a60dSAndroid Build Coastguard Worker${HOSTLIB_UNDEF}: ${HOSTLIB_STATIC} 1024*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " NMu $(subst ${BUILD}/,,$@)\n" 1025*8617a60dSAndroid Build Coastguard Worker ${Q}nm --undefined-only --format=just-symbols $^ > $@ 1026*8617a60dSAndroid Build Coastguard Worker 1027*8617a60dSAndroid Build Coastguard Worker 1028*8617a60dSAndroid Build Coastguard Worker.PHONY: headers_install 1029*8617a60dSAndroid Build Coastguard Workerheaders_install: 1030*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL HEADERS\n" 1031*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${UI_DIR} 1032*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${UI_DIR} -m644 \ 1033*8617a60dSAndroid Build Coastguard Worker host/include/* \ 1034*8617a60dSAndroid Build Coastguard Worker firmware/2lib/include/2crypto.h \ 1035*8617a60dSAndroid Build Coastguard Worker firmware/2lib/include/2recovery_reasons.h \ 1036*8617a60dSAndroid Build Coastguard Worker firmware/2lib/include/2sysincludes.h \ 1037*8617a60dSAndroid Build Coastguard Worker firmware/include/gpt.h \ 1038*8617a60dSAndroid Build Coastguard Worker firmware/include/tlcl.h \ 1039*8617a60dSAndroid Build Coastguard Worker firmware/include/tss_constants.h \ 1040*8617a60dSAndroid Build Coastguard Worker firmware/include/tpm1_tss_constants.h \ 1041*8617a60dSAndroid Build Coastguard Worker firmware/include/tpm2_tss_constants.h 1042*8617a60dSAndroid Build Coastguard Worker 1043*8617a60dSAndroid Build Coastguard Worker.PHONY: lib_install 1044*8617a60dSAndroid Build Coastguard Workerlib_install: ${HOSTLIB} ${HOSTLIB_STATIC} 1045*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL HOSTLIB\n" 1046*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${UL_DIR} 1047*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${UL_DIR} -m644 $^ 1048*8617a60dSAndroid Build Coastguard Worker 1049*8617a60dSAndroid Build Coastguard Worker.PHONY: devkeys_install 1050*8617a60dSAndroid Build Coastguard Workerdevkeys_install: 1051*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL DEVKEYS\n" 1052*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${US_DIR}/devkeys 1053*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${US_DIR}/devkeys -m644 \ 1054*8617a60dSAndroid Build Coastguard Worker `find tests/devkeys -type f -maxdepth 1` 1055*8617a60dSAndroid Build Coastguard Worker 1056*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1057*8617a60dSAndroid Build Coastguard Worker# CGPT library and utility 1058*8617a60dSAndroid Build Coastguard Worker 1059*8617a60dSAndroid Build Coastguard Worker.PHONY: cgpt_wrapper 1060*8617a60dSAndroid Build Coastguard Workercgpt_wrapper: ${CGPT_WRAPPER} 1061*8617a60dSAndroid Build Coastguard Worker 1062*8617a60dSAndroid Build Coastguard Worker${CGPT_WRAPPER}: ${CGPT_WRAPPER_OBJS} ${UTILLIB} 1063*8617a60dSAndroid Build Coastguard Worker @$(PRINTF) " LD $(subst ${BUILD}/,,$@)\n" 1064*8617a60dSAndroid Build Coastguard Worker ${Q}${LD} -o ${CGPT_WRAPPER} ${LDFLAGS} $^ ${LDLIBS} 1065*8617a60dSAndroid Build Coastguard Worker 1066*8617a60dSAndroid Build Coastguard Worker.PHONY: cgpt 1067*8617a60dSAndroid Build Coastguard Workercgpt: ${CGPT} $(if $(filter-out 0,${GPT_SPI_NOR}),cgpt_wrapper) 1068*8617a60dSAndroid Build Coastguard Worker 1069*8617a60dSAndroid Build Coastguard Worker# on FreeBSD: install misc/e2fsprogs-libuuid from ports, 1070*8617a60dSAndroid Build Coastguard Worker# or e2fsprogs-libuuid from its binary package system. 1071*8617a60dSAndroid Build Coastguard Worker# on OpenBSD: install sysutils/e2fsprogs from ports, 1072*8617a60dSAndroid Build Coastguard Worker# or e2fsprogs from its binary package system, to install uuid/uid.h 1073*8617a60dSAndroid Build Coastguard Worker${CGPT}: LDLIBS += -luuid 1074*8617a60dSAndroid Build Coastguard Worker 1075*8617a60dSAndroid Build Coastguard Worker${CGPT}: ${CGPT_OBJS} ${UTILLIB} 1076*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " LDcgpt $(subst ${BUILD}/,,$@)\n" 1077*8617a60dSAndroid Build Coastguard Worker ${Q}${LD} -o ${CGPT} ${LDFLAGS} $^ ${LDLIBS} 1078*8617a60dSAndroid Build Coastguard Worker 1079*8617a60dSAndroid Build Coastguard Worker.PHONY: cgpt_install 1080*8617a60dSAndroid Build Coastguard Workercgpt_install: ${CGPT} 1081*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL CGPT\n" 1082*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${UB_DIR} 1083*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${UB_DIR} $^ 1084*8617a60dSAndroid Build Coastguard Worker 1085*8617a60dSAndroid Build Coastguard Worker.PHONY: cgpt_wrapper_install 1086*8617a60dSAndroid Build Coastguard Workercgpt_wrapper_install: cgpt_install ${CGPT_WRAPPER} 1087*8617a60dSAndroid Build Coastguard Worker @$(PRINTF) " INSTALL cgpt_wrapper\n" 1088*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${UB_DIR} ${CGPT_WRAPPER} 1089*8617a60dSAndroid Build Coastguard Worker ${Q}mv ${UB_DIR}/$(notdir ${CGPT}) \ 1090*8617a60dSAndroid Build Coastguard Worker ${UB_DIR}/$(notdir ${CGPT}).bin 1091*8617a60dSAndroid Build Coastguard Worker ${Q}mv ${UB_DIR}/$(notdir ${CGPT_WRAPPER}) \ 1092*8617a60dSAndroid Build Coastguard Worker ${UB_DIR}/$(notdir ${CGPT}) 1093*8617a60dSAndroid Build Coastguard Worker 1094*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1095*8617a60dSAndroid Build Coastguard Worker# Utilities 1096*8617a60dSAndroid Build Coastguard Worker 1097*8617a60dSAndroid Build Coastguard Worker.PHONY: util_files 1098*8617a60dSAndroid Build Coastguard Workerutil_files: $(if ${SDK_BUILD},${UTIL_FILES_SDK},${UTIL_FILES_BOARD}) 1099*8617a60dSAndroid Build Coastguard Worker 1100*8617a60dSAndroid Build Coastguard Worker# These have their own headers too. 1101*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/%: INCLUDES += -Iutility/include 1102*8617a60dSAndroid Build Coastguard Worker 1103*8617a60dSAndroid Build Coastguard Worker# Avoid build failures outside the chroot on Ubuntu 2022.04 1104*8617a60dSAndroid Build Coastguard Workerifeq ($(OPENSSL_VERSION),3) 1105*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/%: CFLAGS += -Wno-error=deprecated-declarations 1106*8617a60dSAndroid Build Coastguard Workerendif 1107*8617a60dSAndroid Build Coastguard Worker 1108*8617a60dSAndroid Build Coastguard Worker${UTIL_BINS_SDK}: ${UTILLIB} 1109*8617a60dSAndroid Build Coastguard Worker${UTIL_BINS_SDK}: LIBS = ${UTILLIB} 1110*8617a60dSAndroid Build Coastguard Worker${UTIL_BINS_BOARD}: ${UTILLIB} 1111*8617a60dSAndroid Build Coastguard Worker${UTIL_BINS_BOARD}: LIBS = ${UTILLIB} 1112*8617a60dSAndroid Build Coastguard Worker 1113*8617a60dSAndroid Build Coastguard Worker${UTIL_SCRIPTS_SDK} ${UTIL_SCRIPTS_BOARD}: ${BUILD}/%: % 1114*8617a60dSAndroid Build Coastguard Worker ${Q}cp -f $< $@ 1115*8617a60dSAndroid Build Coastguard Worker ${Q}chmod a+rx $@ 1116*8617a60dSAndroid Build Coastguard Worker 1117*8617a60dSAndroid Build Coastguard Workerdefine UTIL_INSTALL_template 1118*8617a60dSAndroid Build Coastguard Worker.PHONY: util_install-$(1) 1119*8617a60dSAndroid Build Coastguard Workerutil_install-$(1): $$(addprefix $${BUILD}/,$(1)) 1120*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL $(1)\n" 1121*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p $${UB_DIR} 1122*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t $${UB_DIR} $$< 1123*8617a60dSAndroid Build Coastguard Workerendef 1124*8617a60dSAndroid Build Coastguard Worker 1125*8617a60dSAndroid Build Coastguard Worker$(foreach f, $(sort ${UTIL_FILES_SDK} ${UTIL_FILES_BOARD}), \ 1126*8617a60dSAndroid Build Coastguard Worker $(eval $(call UTIL_INSTALL_template,$(patsubst ${BUILD}/%,%,${f})))) 1127*8617a60dSAndroid Build Coastguard Worker 1128*8617a60dSAndroid Build Coastguard Worker.PHONY: util_install_defaults 1129*8617a60dSAndroid Build Coastguard Workerutil_install_defaults: ${UTIL_DEFAULTS} 1130*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${DF_DIR} 1131*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${DF_DIR} -m 'u=rw,go=r,a-s' ${UTIL_DEFAULTS} 1132*8617a60dSAndroid Build Coastguard Worker 1133*8617a60dSAndroid Build Coastguard Worker# And some signing stuff for the target 1134*8617a60dSAndroid Build Coastguard Worker.PHONY: signing_install 1135*8617a60dSAndroid Build Coastguard Workersigning_install: $(if ${SDK_BUILD},\ 1136*8617a60dSAndroid Build Coastguard Worker ${SIGNING_SCRIPTS_SDK},${SIGNING_SCRIPTS_BOARD}) 1137*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL SIGNING\n" 1138*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${VB_DIR} 1139*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${VB_DIR} $^ 1140*8617a60dSAndroid Build Coastguard Worker 1141*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1142*8617a60dSAndroid Build Coastguard Worker# Firmware Utility 1143*8617a60dSAndroid Build Coastguard Worker 1144*8617a60dSAndroid Build Coastguard Worker.PHONY: futil 1145*8617a60dSAndroid Build Coastguard Workerfutil: ${FUTIL_BIN} 1146*8617a60dSAndroid Build Coastguard Worker 1147*8617a60dSAndroid Build Coastguard Worker# FUTIL_LIBS is shared by FUTIL_BIN and TEST_FUTIL_BINS. 1148*8617a60dSAndroid Build Coastguard WorkerFUTIL_LIBS = ${CROSID_LIBS} ${CRYPTO_LIBS} ${LIBZIP_LIBS} ${LIBARCHIVE_LIBS} \ 1149*8617a60dSAndroid Build Coastguard Worker ${FLASHROM_LIBS} 1150*8617a60dSAndroid Build Coastguard Worker 1151*8617a60dSAndroid Build Coastguard Worker${FUTIL_BIN}: LDLIBS += ${FUTIL_LIBS} 1152*8617a60dSAndroid Build Coastguard Worker${FUTIL_BIN}: ${FUTIL_OBJS} ${UTILLIB} ${FWLIB} 1153*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" 1154*8617a60dSAndroid Build Coastguard Worker ${Q}${LD} -o $@ ${LDFLAGS} $^ ${LDLIBS} 1155*8617a60dSAndroid Build Coastguard Worker 1156*8617a60dSAndroid Build Coastguard Worker.PHONY: futil_install 1157*8617a60dSAndroid Build Coastguard Workerfutil_install: ${FUTIL_BIN} 1158*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL futility\n" 1159*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${UB_DIR} 1160*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} 1161*8617a60dSAndroid Build Coastguard Worker ${Q}for prog in ${FUTIL_SYMLINKS}; do \ 1162*8617a60dSAndroid Build Coastguard Worker ln -sf futility "${UB_DIR}/$$prog"; done 1163*8617a60dSAndroid Build Coastguard Worker 1164*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1165*8617a60dSAndroid Build Coastguard Worker# Utility to generate TLCL structure definition header file. 1166*8617a60dSAndroid Build Coastguard Worker 1167*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/tlcl_generator: CFLAGS += -fpack-struct 1168*8617a60dSAndroid Build Coastguard Worker 1169*8617a60dSAndroid Build Coastguard WorkerSTRUCTURES_TMP=${BUILD}/tlcl_structures.tmp 1170*8617a60dSAndroid Build Coastguard WorkerSTRUCTURES_SRC=firmware/lib/tpm_lite/include/tlcl_structures.h 1171*8617a60dSAndroid Build Coastguard Worker 1172*8617a60dSAndroid Build Coastguard Worker.PHONY: update_tlcl_structures 1173*8617a60dSAndroid Build Coastguard Workerupdate_tlcl_structures: ${BUILD}/utility/tlcl_generator 1174*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " Rebuilding TLCL structures\n" 1175*8617a60dSAndroid Build Coastguard Worker ${Q}${BUILD}/utility/tlcl_generator > ${STRUCTURES_TMP} 1176*8617a60dSAndroid Build Coastguard Worker ${Q}cmp -s ${STRUCTURES_TMP} ${STRUCTURES_SRC} || \ 1177*8617a60dSAndroid Build Coastguard Worker ( echo "%% Updating structures.h %%" && \ 1178*8617a60dSAndroid Build Coastguard Worker cp ${STRUCTURES_TMP} ${STRUCTURES_SRC} ) 1179*8617a60dSAndroid Build Coastguard Worker 1180*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1181*8617a60dSAndroid Build Coastguard Worker# Tests 1182*8617a60dSAndroid Build Coastguard Worker 1183*8617a60dSAndroid Build Coastguard Worker.PHONY: tests 1184*8617a60dSAndroid Build Coastguard Workertests: ${TEST_BINS} 1185*8617a60dSAndroid Build Coastguard Worker 1186*8617a60dSAndroid Build Coastguard Worker${TEST_BINS}: ${UTILLIB} ${TESTLIB} 1187*8617a60dSAndroid Build Coastguard Worker${TEST_BINS}: INCLUDES += -Itests 1188*8617a60dSAndroid Build Coastguard Worker${TEST_BINS}: LIBS = ${TESTLIB} ${UTILLIB} 1189*8617a60dSAndroid Build Coastguard Worker 1190*8617a60dSAndroid Build Coastguard Worker# Futility tests need almost everything that futility needs. 1191*8617a60dSAndroid Build Coastguard Worker${TEST_FUTIL_BINS}: ${FUTIL_OBJS} ${UTILLIB} 1192*8617a60dSAndroid Build Coastguard Worker${TEST_FUTIL_BINS}: INCLUDES += -Ifutility 1193*8617a60dSAndroid Build Coastguard Worker${TEST_FUTIL_BINS}: OBJS += ${FUTIL_OBJS} ${UTILLIB} 1194*8617a60dSAndroid Build Coastguard Worker${TEST_FUTIL_BINS}: LDLIBS += ${FUTIL_LIBS} 1195*8617a60dSAndroid Build Coastguard Worker 1196*8617a60dSAndroid Build Coastguard Worker${TEST2X_BINS}: ${FWLIB} 1197*8617a60dSAndroid Build Coastguard Worker${TEST2X_BINS}: LIBS += ${FWLIB} 1198*8617a60dSAndroid Build Coastguard Worker 1199*8617a60dSAndroid Build Coastguard Worker${TEST20_BINS}: ${FWLIB} 1200*8617a60dSAndroid Build Coastguard Worker${TEST20_BINS}: LIBS += ${FWLIB} 1201*8617a60dSAndroid Build Coastguard Worker${TEST20_BINS}: LDLIBS += ${CRYPTO_LIBS} 1202*8617a60dSAndroid Build Coastguard Worker 1203*8617a60dSAndroid Build Coastguard Worker${TESTLIB}: ${TESTLIB_OBJS} 1204*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " RM $(subst ${BUILD}/,,$@)\n" 1205*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1206*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " AR $(subst ${BUILD}/,,$@)\n" 1207*8617a60dSAndroid Build Coastguard Worker ${Q}ar qcT $@ $^ 1208*8617a60dSAndroid Build Coastguard Worker 1209*8617a60dSAndroid Build Coastguard WorkerDUT_TEST_BINS = $(addprefix ${BUILD}/,${DUT_TEST_NAMES}) 1210*8617a60dSAndroid Build Coastguard Worker 1211*8617a60dSAndroid Build Coastguard Worker# Special build for sha256_x86 test 1212*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/vb2_sha256_x86_tests: \ 1213*8617a60dSAndroid Build Coastguard Worker ${BUILD}/firmware/2lib/2sha256_x86.o ${BUILD}/firmware/2lib/2hwcrypto.o 1214*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/vb2_sha256_x86_tests: \ 1215*8617a60dSAndroid Build Coastguard Worker LIBS += ${BUILD}/firmware/2lib/2sha256_x86.o ${BUILD}/firmware/2lib/2hwcrypto.o 1216*8617a60dSAndroid Build Coastguard Worker 1217*8617a60dSAndroid Build Coastguard Workerifeq (${ENABLE_HWCRYPTO_RSA_TESTS},1) 1218*8617a60dSAndroid Build Coastguard Workerdefine enable_hwcrypto_rsa_tests 1219*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): CFLAGS += -DENABLE_HWCRYPTO_RSA_TESTS 1220*8617a60dSAndroid Build Coastguard Workerifeq (${ARCH},arm64) 1221*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): CFLAGS += -DARM64_RSA_ACCELERATION 1222*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): ${BUILD}/firmware/2lib/2modpow_neon.o 1223*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): LIBS += ${BUILD}/firmware/2lib/2modpow_neon.o 1224*8617a60dSAndroid Build Coastguard Workerelse 1225*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): CFLAGS += -DVB2_X86_RSA_ACCELERATION 1226*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): ${BUILD}/firmware/2lib/2modpow_sse2.o 1227*8617a60dSAndroid Build Coastguard Worker${BUILD}/$(1): LIBS += ${BUILD}/firmware/2lib/2modpow_sse2.o 1228*8617a60dSAndroid Build Coastguard Workerendif 1229*8617a60dSAndroid Build Coastguard Workerendef 1230*8617a60dSAndroid Build Coastguard Worker 1231*8617a60dSAndroid Build Coastguard Worker$(foreach test, ${HWCRYPTO_RSA_TESTS}, \ 1232*8617a60dSAndroid Build Coastguard Worker $(eval $(call enable_hwcrypto_rsa_tests,${test}))) 1233*8617a60dSAndroid Build Coastguard Workerendif 1234*8617a60dSAndroid Build Coastguard Worker 1235*8617a60dSAndroid Build Coastguard Worker.PHONY: install_dut_test 1236*8617a60dSAndroid Build Coastguard Workerinstall_dut_test: ${DUT_TEST_BINS} 1237*8617a60dSAndroid Build Coastguard Workerifneq ($(strip ${DUT_TEST_BINS}),) 1238*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " INSTALL DUT TESTS\n" 1239*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${DUT_TEST_DIR} 1240*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -t ${DUT_TEST_DIR} $^ 1241*8617a60dSAndroid Build Coastguard Workerendif 1242*8617a60dSAndroid Build Coastguard Worker 1243*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1244*8617a60dSAndroid Build Coastguard Worker# Fuzzers 1245*8617a60dSAndroid Build Coastguard Worker 1246*8617a60dSAndroid Build Coastguard Worker.PHONY: fuzzers 1247*8617a60dSAndroid Build Coastguard Workerfuzzers: ${FUZZ_TEST_BINS} 1248*8617a60dSAndroid Build Coastguard Worker 1249*8617a60dSAndroid Build Coastguard Worker${FUZZ_TEST_BINS}: ${FWLIB} 1250*8617a60dSAndroid Build Coastguard Worker${FUZZ_TEST_BINS}: LIBS = ${FWLIB} 1251*8617a60dSAndroid Build Coastguard Worker${FUZZ_TEST_BINS}: LDFLAGS += -fsanitize=fuzzer 1252*8617a60dSAndroid Build Coastguard Worker 1253*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1254*8617a60dSAndroid Build Coastguard Worker# Generic build rules. LIBS and OBJS can be overridden to tweak the generic 1255*8617a60dSAndroid Build Coastguard Worker# rules for specific targets. 1256*8617a60dSAndroid Build Coastguard Worker 1257*8617a60dSAndroid Build Coastguard Worker${BUILD}/%: ${BUILD}/%.o ${OBJS} ${LIBS} 1258*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" 1259*8617a60dSAndroid Build Coastguard Worker ${Q}${LD} -o $@ ${LDFLAGS} $< ${OBJS} ${LIBS} ${LDLIBS} 1260*8617a60dSAndroid Build Coastguard Worker 1261*8617a60dSAndroid Build Coastguard Worker${BUILD}/%.o: %.c 1262*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " CC $(subst ${BUILD}/,,$@)\n" 1263*8617a60dSAndroid Build Coastguard Worker ${Q}${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $< 1264*8617a60dSAndroid Build Coastguard Worker 1265*8617a60dSAndroid Build Coastguard Worker${BUILD}/%.o: ${BUILD}/%.c 1266*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " CC $(subst ${BUILD}/,,$@)\n" 1267*8617a60dSAndroid Build Coastguard Worker ${Q}${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $< 1268*8617a60dSAndroid Build Coastguard Worker 1269*8617a60dSAndroid Build Coastguard Worker${BUILD}/%.o: %.S 1270*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " CC $(subst ${BUILD}/,,$@)\n" 1271*8617a60dSAndroid Build Coastguard Worker ${Q}${CC} ${CFLAGS} ${INCLUDES} -c -o $@ $< 1272*8617a60dSAndroid Build Coastguard Worker 1273*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1274*8617a60dSAndroid Build Coastguard Worker# Here are the special tweaks to the generic rules. 1275*8617a60dSAndroid Build Coastguard Worker 1276*8617a60dSAndroid Build Coastguard Worker# Always create the defaults file, since it depends on input variables 1277*8617a60dSAndroid Build Coastguard Worker.PHONY: ${UTIL_DEFAULTS} 1278*8617a60dSAndroid Build Coastguard Worker${UTIL_DEFAULTS}: 1279*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " CREATE $(subst ${BUILD}/,,$@)\n" 1280*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1281*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p $(dir $@) 1282*8617a60dSAndroid Build Coastguard Worker ${Q}echo '# Generated file. Do not edit.' > $@.tmp 1283*8617a60dSAndroid Build Coastguard Worker ${Q}echo "DEV_DEBUG_FORCE=${DEV_DEBUG_FORCE}" >> $@.tmp 1284*8617a60dSAndroid Build Coastguard Worker ${Q}mv -f $@.tmp $@ 1285*8617a60dSAndroid Build Coastguard Worker 1286*8617a60dSAndroid Build Coastguard Worker# Some utilities need external crypto functions 1287*8617a60dSAndroid Build Coastguard WorkerCRYPTO_LIBS := $(shell ${PKG_CONFIG} --libs libcrypto) 1288*8617a60dSAndroid Build Coastguard Workerifeq ($(shell uname -s), FreeBSD) 1289*8617a60dSAndroid Build Coastguard WorkerCRYPTO_LIBS += -lcrypto 1290*8617a60dSAndroid Build Coastguard Workerendif 1291*8617a60dSAndroid Build Coastguard Workerifeq ($(shell uname -s), OpenBSD) 1292*8617a60dSAndroid Build Coastguard WorkerLDFLAGS += -Wl,-z,notext 1293*8617a60dSAndroid Build Coastguard Workerendif 1294*8617a60dSAndroid Build Coastguard Worker 1295*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/dumpRSAPublicKey: LDLIBS += ${CRYPTO_LIBS} 1296*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/pad_digest_utility: LDLIBS += ${CRYPTO_LIBS} 1297*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/signature_digest_utility: LDLIBS += ${CRYPTO_LIBS} 1298*8617a60dSAndroid Build Coastguard Worker${BUILD}/utility/verify_data: LDLIBS += ${CRYPTO_LIBS} 1299*8617a60dSAndroid Build Coastguard Worker 1300*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/vb2_host_key_tests: LDLIBS += ${CRYPTO_LIBS} 1301*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/vb2_common2_tests: LDLIBS += ${CRYPTO_LIBS} 1302*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/vb2_common3_tests: LDLIBS += ${CRYPTO_LIBS} 1303*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/verify_kernel: LDLIBS += ${CRYPTO_LIBS} 1304*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/hmac_test: LDLIBS += ${CRYPTO_LIBS} 1305*8617a60dSAndroid Build Coastguard Worker 1306*8617a60dSAndroid Build Coastguard Worker${TEST21_BINS}: LDLIBS += ${CRYPTO_LIBS} 1307*8617a60dSAndroid Build Coastguard Worker 1308*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/%: LDLIBS += -lrt -luuid 1309*8617a60dSAndroid Build Coastguard Worker${BUILD}/tests/%: LIBS += ${TESTLIB} 1310*8617a60dSAndroid Build Coastguard Worker 1311*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${TPM2_MODE}),) 1312*8617a60dSAndroid Build Coastguard Worker# TODO(apronin): tests for TPM2 case? 1313*8617a60dSAndroid Build Coastguard WorkerTLCL_TEST_BINS = $(addprefix ${BUILD}/,${TLCL_TEST_NAMES}) 1314*8617a60dSAndroid Build Coastguard Worker${TLCL_TEST_BINS}: OBJS += ${BUILD}/tests/tpm_lite/tlcl_tests.o 1315*8617a60dSAndroid Build Coastguard Worker${TLCL_TEST_BINS}: ${BUILD}/tests/tpm_lite/tlcl_tests.o 1316*8617a60dSAndroid Build Coastguard WorkerTEST_OBJS += ${BUILD}/tests/tpm_lite/tlcl_tests.o 1317*8617a60dSAndroid Build Coastguard Workerendif 1318*8617a60dSAndroid Build Coastguard Worker 1319*8617a60dSAndroid Build Coastguard Worker# ---------------------------------------------------------------------------- 1320*8617a60dSAndroid Build Coastguard Worker# Here are the special rules that don't fit in the generic rules. 1321*8617a60dSAndroid Build Coastguard Worker 1322*8617a60dSAndroid Build Coastguard Worker# Generates the list of commands defined in futility by running grep in the 1323*8617a60dSAndroid Build Coastguard Worker# source files looking for the DECLARE_FUTIL_COMMAND() macro usage. 1324*8617a60dSAndroid Build Coastguard Worker${FUTIL_CMD_LIST}: ${FUTIL_SRCS} 1325*8617a60dSAndroid Build Coastguard Worker @${PRINTF} " GEN $(subst ${BUILD}/,,$@)\n" 1326*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ $@_t $@_commands 1327*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${BUILD}/gen 1328*8617a60dSAndroid Build Coastguard Worker ${Q}grep -hoRE '^DECLARE_FUTIL_COMMAND\([^,]+' $^ \ 1329*8617a60dSAndroid Build Coastguard Worker | sed 's/DECLARE_FUTIL_COMMAND(\(.*\)/_CMD(\1)/' \ 1330*8617a60dSAndroid Build Coastguard Worker | sort >>$@_commands 1331*8617a60dSAndroid Build Coastguard Worker ${Q}./scripts/getversion.sh >> $@_t 1332*8617a60dSAndroid Build Coastguard Worker ${Q}echo '#define _CMD(NAME) extern const struct' \ 1333*8617a60dSAndroid Build Coastguard Worker 'futil_cmd_t __cmd_##NAME;' >> $@_t 1334*8617a60dSAndroid Build Coastguard Worker ${Q}cat $@_commands >> $@_t 1335*8617a60dSAndroid Build Coastguard Worker ${Q}echo '#undef _CMD' >> $@_t 1336*8617a60dSAndroid Build Coastguard Worker ${Q}echo '#define _CMD(NAME) &__cmd_##NAME,' >> $@_t 1337*8617a60dSAndroid Build Coastguard Worker ${Q}echo 'const struct futil_cmd_t *const futil_cmds[] = {' >> $@_t 1338*8617a60dSAndroid Build Coastguard Worker ${Q}cat $@_commands >> $@_t 1339*8617a60dSAndroid Build Coastguard Worker ${Q}echo '0}; /* null-terminated */' >> $@_t 1340*8617a60dSAndroid Build Coastguard Worker ${Q}echo '#undef _CMD' >> $@_t 1341*8617a60dSAndroid Build Coastguard Worker ${Q}mv $@_t $@ 1342*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@_commands 1343*8617a60dSAndroid Build Coastguard Worker 1344*8617a60dSAndroid Build Coastguard Worker############################################################################## 1345*8617a60dSAndroid Build Coastguard Worker# Targets that exist just to run tests 1346*8617a60dSAndroid Build Coastguard Worker 1347*8617a60dSAndroid Build Coastguard Worker.PHONY: test_setup 1348*8617a60dSAndroid Build Coastguard Workertest_setup:: cgpt ${UTIL_FILES_SDK} ${UTIL_FILES_BOARD} futil tests 1349*8617a60dSAndroid Build Coastguard Worker 1350*8617a60dSAndroid Build Coastguard Worker# Generate test keys 1351*8617a60dSAndroid Build Coastguard Worker.PHONY: genkeys 1352*8617a60dSAndroid Build Coastguard Workergenkeys: install_for_test 1353*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/gen_test_keys.sh 1354*8617a60dSAndroid Build Coastguard Worker 1355*8617a60dSAndroid Build Coastguard Worker# Generate test cases 1356*8617a60dSAndroid Build Coastguard Worker.PHONY: gentestcases 1357*8617a60dSAndroid Build Coastguard Workergentestcases: install_for_test 1358*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/gen_test_cases.sh 1359*8617a60dSAndroid Build Coastguard Worker 1360*8617a60dSAndroid Build Coastguard Worker# Generate test cases for fuzzing 1361*8617a60dSAndroid Build Coastguard Worker.PHONY: genfuzztestcases 1362*8617a60dSAndroid Build Coastguard Workergenfuzztestcases: install_for_test 1363*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/gen_fuzz_test_cases.sh 1364*8617a60dSAndroid Build Coastguard Worker 1365*8617a60dSAndroid Build Coastguard Worker.PHONY: runcgpttests 1366*8617a60dSAndroid Build Coastguard Workerruncgpttests: install_for_test 1367*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/cgptlib_test 1368*8617a60dSAndroid Build Coastguard Worker 1369*8617a60dSAndroid Build Coastguard Worker.PHONY: runtestscripts 1370*8617a60dSAndroid Build Coastguard Workerruntestscripts: install_for_test ${HOSTLIB_DEF} ${HOSTLIB_UNDEF} 1371*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/scripts/image_signing/sign_android_unittests.sh 1372*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/scripts/image_signing/sign_uefi_unittest.py 1373*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} $(SRC_RUN)/scripts/image_signing/lib/generate_android_cloud_config_unittest.py 1374*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/load_kernel_tests.sh 1375*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_cgpt_tests.sh ${BUILD_RUN}/cgpt/cgpt 1376*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_cgpt_tests.sh ${BUILD_RUN}/cgpt/cgpt -D 358400 1377*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_preamble_tests.sh 1378*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_vbutil_kernel_arg_tests.sh 1379*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_vbutil_tests.sh 1380*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/swap_ec_rw_tests.sh 1381*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/vb2_rsa_tests.sh 1382*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/vb2_firmware_tests.sh 1383*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/vhost_reference.sh ${HOSTLIB_DEF} ${HOSTLIB_UNDEF} 1384*8617a60dSAndroid Build Coastguard Worker 1385*8617a60dSAndroid Build Coastguard Worker.PHONY: runmisctests 1386*8617a60dSAndroid Build Coastguard Workerrunmisctests: install_for_test 1387*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/cbfstool_tests 1388*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/gpt_misc_tests 1389*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/subprocess_tests 1390*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${MOCK_TPM})$(filter-out 0,${TPM2_MODE}),) 1391*8617a60dSAndroid Build Coastguard Worker# tlcl_tests only works when MOCK_TPM is disabled 1392*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/tlcl_tests 1393*8617a60dSAndroid Build Coastguard Workerendif 1394*8617a60dSAndroid Build Coastguard Worker 1395*8617a60dSAndroid Build Coastguard Worker.PHONY: run2tests 1396*8617a60dSAndroid Build Coastguard Workerrun2tests: install_for_test 1397*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_api_tests 1398*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_auxfw_sync_tests 1399*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_common_tests 1400*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_common2_tests ${TEST_KEYS} 1401*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_common3_tests ${TEST_KEYS} 1402*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_crypto_tests 1403*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_ec_sync_tests 1404*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_firmware_tests 1405*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_gbb_init_tests 1406*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_gbb_tests 1407*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_host_key_tests 1408*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_inject_kernel_subkey_tests 1409*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_load_kernel_tests 1410*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_load_kernel2_tests 1411*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_kernel_tests 1412*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_misc_tests 1413*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_misc2_tests 1414*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_nvstorage_tests 1415*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_rsa_utility_tests 1416*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_secdata_firmware_tests 1417*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_secdata_fwmp_tests 1418*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_secdata_kernel_tests 1419*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_sha_api_tests 1420*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_sha_tests 1421*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb20_api_kernel_tests 1422*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb20_kernel_tests 1423*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_common_tests 1424*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_common2_tests ${TEST_KEYS} 1425*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_key_tests ${TEST_KEYS} ${BUILD_RUN} 1426*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_misc_tests ${BUILD_RUN} 1427*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_sig_tests ${TEST_KEYS} 1428*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/hmac_test 1429*8617a60dSAndroid Build Coastguard Worker 1430*8617a60dSAndroid Build Coastguard Worker.PHONY: runfutiltests 1431*8617a60dSAndroid Build Coastguard Workerrunfutiltests: install_for_test 1432*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/futility/run_test_scripts.sh 1433*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/futility/test_file_types 1434*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/futility/test_not_really 1435*8617a60dSAndroid Build Coastguard Worker 1436*8617a60dSAndroid Build Coastguard Worker# Test all permutations of encryption keys, instead of just the ones we use. 1437*8617a60dSAndroid Build Coastguard Worker# Not run by automated build. 1438*8617a60dSAndroid Build Coastguard Worker.PHONY: runlongtests 1439*8617a60dSAndroid Build Coastguard Workerrunlongtests: install_for_test genkeys genfuzztestcases 1440*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_common2_tests ${TEST_KEYS} --all 1441*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb2_common3_tests ${TEST_KEYS} --all 1442*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${BUILD_RUN}/tests/vb21_host_common2_tests ${TEST_KEYS} --all 1443*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_preamble_tests.sh --all 1444*8617a60dSAndroid Build Coastguard Worker ${RUNTEST} ${SRC_RUN}/tests/run_vbutil_tests.sh --all 1445*8617a60dSAndroid Build Coastguard Worker 1446*8617a60dSAndroid Build Coastguard Worker.PHONY: rununittests 1447*8617a60dSAndroid Build Coastguard Workerrununittests: runcgpttests runmisctests run2tests 1448*8617a60dSAndroid Build Coastguard Worker 1449*8617a60dSAndroid Build Coastguard Worker# Print a big green success message at the end of all tests. If you don't see 1450*8617a60dSAndroid Build Coastguard Worker# that, you know there was an error somewhere further up. 1451*8617a60dSAndroid Build Coastguard Worker.PHONY: runtests 1452*8617a60dSAndroid Build Coastguard Workerruntests: rununittests runtestscripts runfutiltests 1453*8617a60dSAndroid Build Coastguard Worker ${Q}echo -e "\nruntests: \E[32;1mALL TESTS PASSED SUCCESSFULLY!\E[0;m\n" 1454*8617a60dSAndroid Build Coastguard Worker 1455*8617a60dSAndroid Build Coastguard Worker# Code coverage 1456*8617a60dSAndroid Build Coastguard Worker.PHONY: coverage 1457*8617a60dSAndroid Build Coastguard Workerifeq ($(filter-out 0,${COV}),) 1458*8617a60dSAndroid Build Coastguard Workercoverage: 1459*8617a60dSAndroid Build Coastguard Worker $(error Build coverage like this: make clean && COV=1 make coverage) 1460*8617a60dSAndroid Build Coastguard Workerelse 1461*8617a60dSAndroid Build Coastguard Worker.PHONY: coverage_init 1462*8617a60dSAndroid Build Coastguard Workercoverage_init: install_for_test 1463*8617a60dSAndroid Build Coastguard Worker rm -f ${COV_INFO}* 1464*8617a60dSAndroid Build Coastguard Worker lcov -c -i -d . -b . -o ${COV_INFO}.initial 1465*8617a60dSAndroid Build Coastguard Worker 1466*8617a60dSAndroid Build Coastguard Worker.PHONY: coverage_html 1467*8617a60dSAndroid Build Coastguard Workercoverage_html: coverage_init runtests 1468*8617a60dSAndroid Build Coastguard Worker lcov -c -d . -b . -o ${COV_INFO}.tests 1469*8617a60dSAndroid Build Coastguard Worker lcov -a ${COV_INFO}.initial -a ${COV_INFO}.tests -o ${COV_INFO}.total 1470*8617a60dSAndroid Build Coastguard Worker lcov -r ${COV_INFO}.total '/usr/*' -o ${COV_INFO}.local 1471*8617a60dSAndroid Build Coastguard Worker genhtml ${COV_INFO}.local -o ${BUILD}/coverage 1472*8617a60dSAndroid Build Coastguard Worker# Generate addtional coverage stats just for firmware subdir, because the stats 1473*8617a60dSAndroid Build Coastguard Worker# for the whole project don't include subdirectory summaries. This will print 1474*8617a60dSAndroid Build Coastguard Worker# the summary for just the firmware sources. 1475*8617a60dSAndroid Build Coastguard Worker lcov -r ${COV_INFO}.local '*/stub/*' -o ${COV_INFO}.nostub 1476*8617a60dSAndroid Build Coastguard Worker lcov -e ${COV_INFO}.nostub '${SRCDIR}/firmware/*' \ 1477*8617a60dSAndroid Build Coastguard Worker -o ${COV_INFO}.firmware 1478*8617a60dSAndroid Build Coastguard Worker 1479*8617a60dSAndroid Build Coastguard Workercoverage: coverage_init runtests coverage_html 1480*8617a60dSAndroid Build Coastguard Workerendif 1481*8617a60dSAndroid Build Coastguard Worker 1482*8617a60dSAndroid Build Coastguard Worker# Include generated dependencies 1483*8617a60dSAndroid Build Coastguard WorkerALL_DEPS += ${ALL_OBJS:%.o=%.o.d} 1484*8617a60dSAndroid Build Coastguard WorkerTEST_DEPS += ${TEST_OBJS:%.o=%.o.d} 1485*8617a60dSAndroid Build Coastguard Worker-include ${ALL_DEPS} 1486*8617a60dSAndroid Build Coastguard Worker-include ${TEST_DEPS} 1487*8617a60dSAndroid Build Coastguard Worker 1488*8617a60dSAndroid Build Coastguard Worker# We want to use only relative paths in cscope.files, especially since the 1489*8617a60dSAndroid Build Coastguard Worker# paths inside and outside the chroot are different. 1490*8617a60dSAndroid Build Coastguard WorkerSRCDIRPAT=$(subst /,\/,${SRCDIR}/) 1491*8617a60dSAndroid Build Coastguard Worker 1492*8617a60dSAndroid Build Coastguard Worker# Note: vboot 2.0 is deprecated, so don't index those files 1493*8617a60dSAndroid Build Coastguard Worker${BUILD}/cscope.files: all install_for_test 1494*8617a60dSAndroid Build Coastguard Worker ${Q}rm -f $@ 1495*8617a60dSAndroid Build Coastguard Worker ${Q}cat ${ALL_DEPS} | tr -d ':\\' | tr ' ' '\012' | \ 1496*8617a60dSAndroid Build Coastguard Worker grep -v /lib20/ | \ 1497*8617a60dSAndroid Build Coastguard Worker sed -e "s/${SRCDIRPAT}//" | \ 1498*8617a60dSAndroid Build Coastguard Worker egrep '\.[chS]$$' | sort | uniq > $@ 1499*8617a60dSAndroid Build Coastguard Worker 1500*8617a60dSAndroid Build Coastguard Workercmd_etags = etags -o ${BUILD}/TAGS $(shell cat ${BUILD}/cscope.files) 1501*8617a60dSAndroid Build Coastguard Workercmd_ctags = ctags -o ${BUILD}/tags $(shell cat ${BUILD}/cscope.files) 1502*8617a60dSAndroid Build Coastguard Workerrun_if_prog = $(if $(shell which $(1) 2>/dev/null),$(2),) 1503*8617a60dSAndroid Build Coastguard Worker 1504*8617a60dSAndroid Build Coastguard Worker.PHONY: tags TAGS xrefs 1505*8617a60dSAndroid Build Coastguard Workertags TAGS xrefs: ${BUILD}/cscope.files 1506*8617a60dSAndroid Build Coastguard Worker ${Q}\rm -f ${BUILD}/tags ${BUILD}/TAGS 1507*8617a60dSAndroid Build Coastguard Worker ${Q}$(call run_if_prog,etags,${cmd_etags}) 1508*8617a60dSAndroid Build Coastguard Worker ${Q}$(call run_if_prog,ctags,${cmd_ctags}) 1509*8617a60dSAndroid Build Coastguard Worker 1510*8617a60dSAndroid Build Coastguard WorkerPC_FILES = ${PC_IN_FILES:%.pc.in=${BUILD}/%.pc} 1511*8617a60dSAndroid Build Coastguard Worker${PC_FILES}: ${PC_IN_FILES} 1512*8617a60dSAndroid Build Coastguard Worker ${Q}sed \ 1513*8617a60dSAndroid Build Coastguard Worker -e 's:@LDLIBS@:${LDLIBS}:' \ 1514*8617a60dSAndroid Build Coastguard Worker -e 's:@LIBDIR@:${LIBDIR}:' \ 1515*8617a60dSAndroid Build Coastguard Worker $< > $@ 1516*8617a60dSAndroid Build Coastguard Worker 1517*8617a60dSAndroid Build Coastguard Worker.PHONY: pc_files_install 1518*8617a60dSAndroid Build Coastguard Workerpc_files_install: ${PC_FILES} 1519*8617a60dSAndroid Build Coastguard Worker ${Q}mkdir -p ${ULP_DIR} 1520*8617a60dSAndroid Build Coastguard Worker ${Q}${INSTALL} -D -m 0644 $< ${ULP_DIR}/$(notdir $<) 1521