# Copyright 2015 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. obj ?= ./build CROSS_COMPILE ?= CC ?= $(CROSS_COMPILE)gcc AR ?= $(CROSS_COMPILE)ar HOST_SOURCES = SOURCES = ActivateCredential.c SOURCES += AlgorithmCap.c SOURCES += Attest_spt.c SOURCES += Bits.c SOURCES += Cancel.c SOURCES += Certify.c SOURCES += CertifyCreation.c SOURCES += ChangeEPS.c SOURCES += ChangePPS.c SOURCES += Clear.c SOURCES += ClearControl.c SOURCES += Clock.c SOURCES += ClockRateAdjust.c SOURCES += ClockSet.c SOURCES += CommandAudit.c SOURCES += CommandCodeAttributes.c SOURCES += CommandDispatcher.c SOURCES += Commit.c SOURCES += ContextLoad.c SOURCES += ContextSave.c SOURCES += Context_spt.c HOST_SOURCES += CpriCryptPri.c HOST_SOURCES += CpriECC.c HOST_SOURCES += CpriHash.c HOST_SOURCES += CpriMisc.c HOST_SOURCES += CpriRNG.c HOST_SOURCES += CpriRSA.c HOST_SOURCES += CpriSym.c SOURCES += Create.c SOURCES += CreatePrimary.c SOURCES += CryptSelfTest.c SOURCES += CryptUtil.c SOURCES += DA.c SOURCES += DRTM.c SOURCES += DictionaryAttackLockReset.c SOURCES += DictionaryAttackParameters.c SOURCES += Duplicate.c SOURCES += ECC_Parameters.c SOURCES += ECDH_KeyGen.c SOURCES += ECDH_ZGen.c SOURCES += EC_Ephemeral.c SOURCES += EncryptDecrypt.c SOURCES += Entity.c HOST_SOURCES += Entropy.c SOURCES += EventSequenceComplete.c SOURCES += EvictControl.c SOURCES += ExecCommand.c SOURCES += FieldUpgradeData.c SOURCES += FieldUpgradeStart.c SOURCES += FirmwareRead.c SOURCES += FlushContext.c SOURCES += GetCapability.c SOURCES += GetCommandAuditDigest.c SOURCES += GetCommandCodeString.c SOURCES += GetRandom.c SOURCES += GetSessionAuditDigest.c SOURCES += GetTestResult.c SOURCES += GetTime.c SOURCES += Global.c SOURCES += HMAC.c SOURCES += HMAC_Start.c SOURCES += Handle.c SOURCES += HandleProcess.c SOURCES += Hash.c SOURCES += HashSequenceStart.c SOURCES += Hierarchy.c SOURCES += HierarchyChangeAuth.c SOURCES += HierarchyControl.c SOURCES += Import.c SOURCES += IncrementalSelfTest.c SOURCES += Load.c SOURCES += LoadExternal.c SOURCES += Locality.c SOURCES += LocalityPlat.c SOURCES += MakeCredential.c SOURCES += Marshal_ActivateCredential.c SOURCES += Marshal_Certify.c SOURCES += Marshal_CertifyCreation.c SOURCES += Marshal_ChangeEPS.c SOURCES += Marshal_ChangePPS.c SOURCES += Marshal_Clear.c SOURCES += Marshal_ClearControl.c SOURCES += Marshal_ClockRateAdjust.c SOURCES += Marshal_ClockSet.c SOURCES += Marshal_Commit.c SOURCES += Marshal_ContextLoad.c SOURCES += Marshal_ContextSave.c SOURCES += Marshal_Create.c SOURCES += Marshal_CreatePrimary.c SOURCES += Marshal_DictionaryAttackLockReset.c SOURCES += Marshal_DictionaryAttackParameters.c SOURCES += Marshal_Duplicate.c SOURCES += Marshal_ECC_Parameters.c SOURCES += Marshal_ECDH_KeyGen.c SOURCES += Marshal_ECDH_ZGen.c SOURCES += Marshal_EC_Ephemeral.c SOURCES += Marshal_EncryptDecrypt.c SOURCES += Marshal_EventSequenceComplete.c SOURCES += Marshal_EvictControl.c SOURCES += Marshal_FieldUpgradeData.c SOURCES += Marshal_FieldUpgradeStart.c SOURCES += Marshal_FirmwareRead.c SOURCES += Marshal_FlushContext.c SOURCES += Marshal_GetCapability.c SOURCES += Marshal_GetCommandAuditDigest.c SOURCES += Marshal_GetRandom.c SOURCES += Marshal_GetSessionAuditDigest.c SOURCES += Marshal_GetTestResult.c SOURCES += Marshal_GetTime.c SOURCES += Marshal_HMAC.c SOURCES += Marshal_HMAC_Start.c SOURCES += Marshal_Hash.c SOURCES += Marshal_HashSequenceStart.c SOURCES += Marshal_HierarchyChangeAuth.c SOURCES += Marshal_HierarchyControl.c SOURCES += Marshal_Import.c SOURCES += Marshal_IncrementalSelfTest.c SOURCES += Marshal_Load.c SOURCES += Marshal_LoadExternal.c SOURCES += Marshal_MakeCredential.c SOURCES += Marshal_NV_Certify.c SOURCES += Marshal_NV_ChangeAuth.c SOURCES += Marshal_NV_DefineSpace.c SOURCES += Marshal_NV_Extend.c SOURCES += Marshal_NV_GlobalWriteLock.c SOURCES += Marshal_NV_Increment.c SOURCES += Marshal_NV_Read.c SOURCES += Marshal_NV_ReadLock.c SOURCES += Marshal_NV_ReadPublic.c SOURCES += Marshal_NV_SetBits.c SOURCES += Marshal_NV_UndefineSpace.c SOURCES += Marshal_NV_UndefineSpaceSpecial.c SOURCES += Marshal_NV_Write.c SOURCES += Marshal_NV_WriteLock.c SOURCES += Marshal_ObjectChangeAuth.c SOURCES += Marshal_PCR_Allocate.c SOURCES += Marshal_PCR_Event.c SOURCES += Marshal_PCR_Extend.c SOURCES += Marshal_PCR_Read.c SOURCES += Marshal_PCR_Reset.c SOURCES += Marshal_PCR_SetAuthPolicy.c SOURCES += Marshal_PCR_SetAuthValue.c SOURCES += Marshal_PP_Commands.c SOURCES += Marshal_PolicyAuthValue.c SOURCES += Marshal_PolicyAuthorize.c SOURCES += Marshal_PolicyCommandCode.c SOURCES += Marshal_PolicyCounterTimer.c SOURCES += Marshal_PolicyCpHash.c SOURCES += Marshal_PolicyDuplicationSelect.c SOURCES += Marshal_PolicyGetDigest.c SOURCES += Marshal_PolicyLocality.c SOURCES += Marshal_PolicyNV.c SOURCES += Marshal_PolicyNameHash.c SOURCES += Marshal_PolicyNvWritten.c SOURCES += Marshal_PolicyOR.c SOURCES += Marshal_PolicyPCR.c SOURCES += Marshal_PolicyPassword.c SOURCES += Marshal_PolicyPhysicalPresence.c SOURCES += Marshal_PolicyRestart.c SOURCES += Marshal_PolicySecret.c SOURCES += Marshal_PolicySigned.c SOURCES += Marshal_PolicyTicket.c SOURCES += Marshal_Quote.c SOURCES += Marshal_RSA_Decrypt.c SOURCES += Marshal_RSA_Encrypt.c SOURCES += Marshal_ReadClock.c SOURCES += Marshal_ReadPublic.c SOURCES += Marshal_Rewrap.c SOURCES += Marshal_SelfTest.c SOURCES += Marshal_SequenceComplete.c SOURCES += Marshal_SequenceUpdate.c SOURCES += Marshal_SetAlgorithmSet.c SOURCES += Marshal_SetCommandCodeAuditStatus.c SOURCES += Marshal_SetPrimaryPolicy.c SOURCES += Marshal_Shutdown.c SOURCES += Marshal_Sign.c SOURCES += Marshal_StartAuthSession.c SOURCES += Marshal_Startup.c SOURCES += Marshal_StirRandom.c SOURCES += Marshal_TestParms.c SOURCES += Marshal_Unseal.c SOURCES += Marshal_VerifySignature.c SOURCES += Marshal_ZGen_2Phase.c SOURCES += Manufacture.c SOURCES += MathFunctions.c SOURCES += MemoryLib.c SOURCES += NV.c HOST_SOURCES += NVMem.c SOURCES += NV_Certify.c SOURCES += NV_ChangeAuth.c SOURCES += NV_DefineSpace.c SOURCES += NV_Extend.c SOURCES += NV_GlobalWriteLock.c SOURCES += NV_Increment.c SOURCES += NV_Read.c SOURCES += NV_ReadLock.c SOURCES += NV_ReadPublic.c SOURCES += NV_SetBits.c SOURCES += NV_UndefineSpace.c SOURCES += NV_UndefineSpaceSpecial.c SOURCES += NV_Write.c SOURCES += NV_WriteLock.c SOURCES += NV_spt.c SOURCES += Object.c SOURCES += ObjectChangeAuth.c SOURCES += Object_spt.c SOURCES += PCR.c SOURCES += PCR_Allocate.c SOURCES += PCR_Event.c SOURCES += PCR_Extend.c SOURCES += PCR_Read.c SOURCES += PCR_Reset.c SOURCES += PCR_SetAuthPolicy.c SOURCES += PCR_SetAuthValue.c SOURCES += PP.c SOURCES += PPPlat.c SOURCES += PP_Commands.c SOURCES += PlatformData.c SOURCES += PolicyAuthValue.c SOURCES += PolicyAuthorize.c SOURCES += PolicyCommandCode.c SOURCES += PolicyCounterTimer.c SOURCES += PolicyCpHash.c SOURCES += PolicyDuplicationSelect.c SOURCES += PolicyGetDigest.c SOURCES += PolicyLocality.c SOURCES += PolicyNV.c SOURCES += PolicyNameHash.c SOURCES += PolicyNvWritten.c SOURCES += PolicyOR.c SOURCES += PolicyPCR.c SOURCES += PolicyPassword.c SOURCES += PolicyPhysicalPresence.c SOURCES += PolicyRestart.c SOURCES += PolicySecret.c SOURCES += PolicySigned.c SOURCES += PolicyTicket.c SOURCES += Policy_spt.c SOURCES += Power.c SOURCES += PowerPlat.c SOURCES += PropertyCap.c SOURCES += Quote.c HOST_SOURCES += RSAData.c HOST_SOURCES += RSAKeySieve.c SOURCES += RSA_Decrypt.c SOURCES += RSA_Encrypt.c SOURCES += ReadClock.c SOURCES += ReadPublic.c SOURCES += Rewrap.c SOURCES += SelfTest.c SOURCES += SequenceComplete.c SOURCES += SequenceUpdate.c SOURCES += Session.c SOURCES += SessionProcess.c SOURCES += SetAlgorithmSet.c SOURCES += SetCommandCodeAuditStatus.c SOURCES += SetPrimaryPolicy.c SOURCES += Shutdown.c SOURCES += Sign.c SOURCES += StartAuthSession.c SOURCES += Startup.c SOURCES += StirRandom.c #SOURCES += TPMCmdp.c #SOURCES += TPMCmds.c #SOURCES += TcpServer.c SOURCES += TestParms.c SOURCES += Ticket.c SOURCES += Time.c SOURCES += TpmFail.c SOURCES += Unique.c SOURCES += Unseal.c SOURCES += VerifySignature.c SOURCES += ZGen_2Phase.c SOURCES += _TPM_Hash_Data.c SOURCES += _TPM_Hash_End.c SOURCES += _TPM_Hash_Start.c SOURCES += _TPM_Init.c SOURCES += tpm_generated.c # Use V=1 for verbose output ifeq ($(V),) Q := @ else Q := endif ifeq ($(EMBEDDED_MODE),) SOURCES += $(HOST_SOURCES) CFLAGS += -Wall -Werror -fPIC else SOURCES += stubs_ecc.c SOURCES += stubs_hash.c SOURCES += stubs_sym.c CFLAGS += -DEMBEDDED_MODE # Configure system headers appropriately. CFLAGS += -DTHIRD_PARTY ifneq ($(ROOTDIR),) CFLAGS += -I$(ROOTDIR) endif endif # Caller may specify OBJ_PREFIX to prefix all object filenames in the # archive with a common string. This allows the caller's linker # script to group the data and bss sections for this library in one # place. For example, if OBJ_PREFIX=Tpm2_, the caller's linker script # can have something like # # __bss_libtpm2_start = .; # Tpm2_*(.bss) # __bss_libtpm2_end = .; # # Using a unique prefix is necessary in this case because files in # archives only have a filename, not a full path. OBJS = $(patsubst %.c,$(obj)/$(OBJ_PREFIX)%.o,$(SOURCES)) DEPS = $(patsubst %.c,$(obj)/$(OBJ_PREFIX)%.d,$(SOURCES)) # This is the default target $(obj)/libtpm2.a: $(OBJS) @echo " AR $(notdir $@)" $(Q)$(AR) scr $@ $^ $(obj): @echo " MKDIR $(obj)" $(Q)mkdir -p $(obj) $(obj)/$(OBJ_PREFIX)%.d $(obj)/$(OBJ_PREFIX)%.o: %.c | $(obj) @echo " CC $(notdir $<)" $(Q)$(CC) $(CFLAGS) -c -MMD -MF $(basename $@).d -o $(basename $@).o $< .PHONY: clean clean: @echo " RM $(obj)" $(Q)rm -rf $(obj) ifneq ($(MAKECMDGOALS),clean) -include $(DEPS) endif