LIB_NAME = libtc-api

LIB_SONAME = libtc-api.so.0

CC_FLAGS +=  -fno-stack-protector -D_FORTITY_SOURCE=1 \
			 -z noexecstack -pie -fPIC -z lazy \
			 -g -shared -Wl,-soname,$(LIB_SONAME)

CC_LIBS += -ltss2-sys -ltss2-tcti-mssim -ltss2-tcti-device -ldl -lsystemd

CC_INCLUDE += -I lib/ -I src/ -I src/engine/

PREFIX=/usr

all:$(LIB_NAME).so

$(LIB_NAME).so: $(LIB_NAME).so.0
	ln -s $^ $@
	nm -D --defined-only $@ | grep TC_

$(LIB_NAME).so.0: src/engine/tss2/*.c src/tc_api.c
	gcc $(CC_FLAGS) -o $@ $^ $(CC_INCLUDE) $(CC_LIBS) 

install:
	mkdir -pv ${DESTDIR}${PREFIX}/lib/
	mkdir -pv ${DESTDIR}${PREFIX}/include/tc/
	cp -rf lib/* ${DESTDIR}${PREFIX}/include/tc/
	cp -rf $(LIB_NAME).so* ${DESTDIR}${PREFIX}/lib/

clean:
	rm -f -v $(LIB_NAME).*

# 检查环境是否正确
check_env:
	@echo "------------------------------- 检查TPM安装包 ------------------------------------"
	@dpkg -l libtss2-esys0 libtss2-tcti-tabrmd0 tpm2-abrmd tpm2-tools
	@echo
	@echo "------------------------------- 检查TPM硬件设备 ------------------------------------"
	@ls -l /dev/tpm*
	@echo
	@echo "------------------------------- 检查TPM服务状态------------------------------------"
	@systemctl status tpm2-abrmd.service

install_env:
	@sudo apt install libtss2-esys0 libtss2-tcti-tabrmd0 tpm2-abrmd tpm2-tools libsystemd-dev
	@sudo apt install libssl1.1 openssl

install_env_dev:
	@sudo apt install libtss2-dev libtss2-tcti-tabrmd-dev libssl-dev
