#################################################################################
#										#
#		Linux TPM2 Utilities Makefile for minimal TSS			#
#			     Written by Ken Goldman				#
#		       IBM Thomas J. Watson Research Center			#
#										#
# (c) Copyright IBM Corporation 2016 - 2019					#
# 										#
# All rights reserved.								#
# 										#
# Redistribution and use in source and binary forms, with or without		#
# modification, are permitted provided that the following conditions are	#
# met:										#
# 										#
# Redistributions of source code must retain the above copyright notice,	#
# this list of conditions and the following disclaimer.				#
# 										#
# Redistributions in binary form must reproduce the above copyright		#
# notice, this list of conditions and the following disclaimer in the		#
# documentation and/or other materials provided with the distribution.		#
# 										#
# Neither the names of the IBM Corporation nor the names of its			#
# contributors may be used to endorse or promote products derived from		#
# this software without specific prior written permission.			#
# 										#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS		#
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT		#
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR		#
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT		#
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,	#
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT		#
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,		#
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY		#
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT		#
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE		#
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.		#
#										#
#################################################################################

# makefile to build a TSS library that does not require file read/write or crypto
# within the library
#
# See the documentation for limitations.

# C compiler

CC = /usr/bin/gcc

# compile - common flags for TSS library and applications

CCFLAGS  += \
	-DTPM_POSIX		\
	-DTPM_TSS_NOFILE	\
	-DTPM_TSS_NOCRYPTO	\
	-DTPM_TSS_NORSA

# -DTPM_NOSOCKET

# compile - for TSS library

CCLFLAGS += 	-I.			\
		-fPIC			\
		-DTPM_TPM20

# compile - for applications

CCAFLAGS += 	-I.		\
		-DTPM_TPM20	\
		-fPIE

# link - common flags flags TSS library and applications

LNFLAGS += 	-DTPM_POSIX		\
		-L.

# link - for TSS library

# link - for applications, TSS path, TSS and OpenSSl libraries

LNAFLAGS += -Wl,-rpath,.

LNALIBS +=  -libmtssmin

# shared library

LIBTSS=libibmtssmin.so

# 

ALL = $(LIBTSS)
#TSS_HEADERS = ibmtss/tssfile.h

# default TSS library

TSS_OBJS =	tssprintcmd.o


# common to all builds

include makefile-common
include makefile-common20

# default build target

all:	writeapp

# TSS shared library source

tss.o: 			$(TSS_HEADERS) tss.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tss.c
tssproperties.o: 	$(TSS_HEADERS) tssproperties.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssproperties.c
tssauth.o: 		$(TSS_HEADERS) tssauth.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssauth.c
tssmarshal.o: 		$(TSS_HEADERS) tssmarshal.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssmarshal.c
tsscryptoh.o: 		$(TSS_HEADERS) tsscryptoh.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tsscryptoh.c
tsscrypto.o: 		$(TSS_HEADERS) tsscrypto.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tsscrypto.c
tssutils.o: 		$(TSS_HEADERS) tssutils.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssutils.c
tsssocket.o: 		$(TSS_HEADERS) tsssocket.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tsssocket.c
tssdev.o: 		$(TSS_HEADERS) tssdev.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssdev.c
tsstransmit.o: 		$(TSS_HEADERS) tsstransmit.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tsstransmit.c
tssresponsecode.o: 	$(TSS_HEADERS) tssresponsecode.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssresponsecode.c
tssccattributes.o: 	$(TSS_HEADERS) tssccattributes.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssccattributes.c
tssprint.o: 		$(TSS_HEADERS) tssprint.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssprint.c
tssprintcmd.o: 		$(TSS_HEADERS) tssprintcmd.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssprintcmd.c
Unmarshal.o: 		$(TSS_HEADERS) Unmarshal.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC Unmarshal.c
Commands.o: 		$(TSS_HEADERS) Commands.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC Commands.c
CommandAttributeData.o: $(TSS_HEADERS) CommandAttributeData.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC CommandAttributeData.c
ntc2lib.o:		$(TSS_HEADERS) ntc2lib.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC ntc2lib.c
tssntc.o:		$(TSS_HEADERS) tssntc.c
			$(CC) $(CCFLAGS) $(CCLFLAGS) -fPIC tssntc.c

# TPM 2.0

tss20.o: 	$(TSS_HEADERS) tss20.c
		$(CC) $(CCFLAGS) $(CCLFLAGS) tss20.c
tssauth20.o: 	$(TSS_HEADERS) tssauth20.c
		$(CC) $(CCFLAGS) $(CCLFLAGS) tssauth20.c

# TSS shared library build

$(LIBTSS): 	$(TSS_OBJS)
		$(CC) $(LNFLAGS) $(LNLFLAGS) -shared -o $(LIBTSS) $(TSS_OBJS)

.PHONY:		clean
.PRECIOUS:	%.o

clean:		
		rm -f *.o	\
		$(ALL)

# applications

writeapp:		ibmtss/tss.h writeapp.o tssutilsverbose.o $(LIBTSS) 

			$(CC) $(LNFLAGS) $(LNAFLAGS) writeapp.o tssutilsverbose.o \
			$(LNALIBS) -o writeapp

# for applications, not for TSS library

%.o:		%.c ibmtss/tss.h 
		$(CC) $(CCFLAGS) $(CCAFLAGS) $< -o $@

