xref: /aosp_15_r20/external/tpm2-tss/Makefile.am (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1# SPDX-License-Identifier: BSD-2-Clause
2# Copyright (c) 2015 - 2018 Intel Corporation
3# Copyright (c) 2018 Fraunhofer SIT sponsored by Infineon Technologies AG
4# All rights reserved.
5
6-include $(top_srcdir)/git.mk
7
8### Initialize global variables used throughout the file ###
9INCLUDE_DIRS    = -I$(srcdir)/src -I$(srcdir)/include/tss2
10ACLOCAL_AMFLAGS = -I m4 --install
11AM_CFLAGS       = $(INCLUDE_DIRS) $(EXTRA_CFLAGS) $(CODE_COVERAGE_CFLAGS) \
12				  $(SANITIZER_CFLAGS)
13AM_LDFLAGS      = $(EXTRA_LDFLAGS) $(CODE_COVERAGE_LIBS) $(SANITIZER_LDFLAGS)
14
15# Initialize empty variables to be extended throughout
16lib_LTLIBRARIES =
17noinst_LTLIBRARIES =
18EXTRA_DIST =
19DISTCLEANFILES =
20CLEANFILES =
21MOSTLYCLEANFILES =
22noinst_PROGRAMS =
23MAINTAINERCLEANFILES = \
24    $(DIST_ARCHIVES) \
25    AUTHORS
26
27TSS_GITIGNOREFILES = \
28    $(GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL) \
29    $(GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN) \
30    $(GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL) \
31    src_vars.mk \
32    Makefile-fuzz-generated.am \
33    aminclude_static.am \
34    m4/ax_ac_append_to_file.m4 \
35    m4/ax_ac_print_to_file.m4 \
36    m4/ax_add_am_macro_static.m4 \
37    m4/ax_add_fortify_source.m4 \
38    m4/ax_am_macros_static.m4 \
39    m4/ax_check_compile_flag.m4 \
40    m4/ax_check_enable_debug.m4 \
41    m4/ax_check_gnu_make.m4 \
42    m4/ax_check_link_flag.m4 \
43    m4/ax_check_preproc_flag.m4 \
44    m4/ax_code_coverage.m4 \
45    m4/ax_file_escapes.m4 \
46    m4/ax_is_release.m4 \
47    m4/ax_normalize_path.m4 \
48    m4/ax_prog_doxygen.m4 \
49    m4/ax_valgrind_check.m4 \
50    m4/pkg.m4
51
52GITIGNOREFILES = ""
53### Add ax_* rules ###
54# ax_code_coverage
55if AUTOCONF_CODE_COVERAGE_2019_01_06
56include $(top_srcdir)/aminclude_static.am
57clean-local: code-coverage-clean
58distclean-local: code-coverage-dist-clean
59else
60@CODE_COVERAGE_RULES@
61endif
62GITIGNOREFILES += $(TSS_GITIGNOREFILES)
63CODE_COVERAGE_DIRECTORY = $(top_builddir)/src $(top_builddir)/test
64
65# ax_valgrind_check
66@VALGRIND_CHECK_RULES@
67
68# ax_doxygen
69@DX_RULES@
70MOSTLYCLEANFILES += $(DX_CLEANFILES)
71
72if DOXYMAN
73DOXYMAN3 = \
74    doxygen-doc/man/ESYS_CONTEXT.3 \
75    doxygen-doc/man/ESYS_TR.3 \
76    doxygen-doc/man/ESYS_TR_defines.3 \
77    doxygen-doc/man/Esys_ActivateCredential.3 \
78    doxygen-doc/man/Esys_Certify.3 \
79    doxygen-doc/man/Esys_CertifyCreation.3 \
80    doxygen-doc/man/Esys_ChangeEPS.3 \
81    doxygen-doc/man/Esys_ChangePPS.3 \
82    doxygen-doc/man/Esys_Clear.3 \
83    doxygen-doc/man/Esys_ClearControl.3 \
84    doxygen-doc/man/Esys_ClockRateAdjust.3 \
85    doxygen-doc/man/Esys_ClockSet.3 \
86    doxygen-doc/man/Esys_Commit.3 \
87    doxygen-doc/man/Esys_ContextLoad.3 \
88    doxygen-doc/man/Esys_ContextSave.3 \
89    doxygen-doc/man/Esys_Create.3 \
90    doxygen-doc/man/Esys_CreatePrimary.3 \
91    doxygen-doc/man/Esys_DictionaryAttackLockReset.3 \
92    doxygen-doc/man/Esys_DictionaryAttackParameters.3 \
93    doxygen-doc/man/Esys_Duplicate.3 \
94    doxygen-doc/man/Esys_ECC_Parameters.3 \
95    doxygen-doc/man/Esys_ECDH_KeyGen.3 \
96    doxygen-doc/man/Esys_ECDH_ZGen.3 \
97    doxygen-doc/man/Esys_EC_Ephemeral.3 \
98    doxygen-doc/man/Esys_EncryptDecrypt.3 \
99    doxygen-doc/man/Esys_EventSequenceComplete.3 \
100    doxygen-doc/man/Esys_EvictControl.3 \
101    doxygen-doc/man/Esys_FlushContext.3 \
102    doxygen-doc/man/Esys_GetCapability.3 \
103    doxygen-doc/man/Esys_GetCommandAuditDigest.3 \
104    doxygen-doc/man/Esys_GetRandom.3 \
105    doxygen-doc/man/Esys_GetSessionAuditDigest.3 \
106    doxygen-doc/man/Esys_GetTestResult.3 \
107    doxygen-doc/man/Esys_GetTime.3 \
108    doxygen-doc/man/Esys_Hash.3 \
109    doxygen-doc/man/Esys_HashSequenceStart.3 \
110    doxygen-doc/man/Esys_HierarchyChangeAuth.3 \
111    doxygen-doc/man/Esys_HierarchyControl.3 \
112    doxygen-doc/man/Esys_HMAC.3 \
113    doxygen-doc/man/Esys_HMAC_Start.3 \
114    doxygen-doc/man/Esys_Import.3 \
115    doxygen-doc/man/Esys_IncrementalSelfTest.3 \
116    doxygen-doc/man/Esys_Load.3 \
117    doxygen-doc/man/Esys_LoadExternal.3 \
118    doxygen-doc/man/Esys_MakeCredential.3 \
119    doxygen-doc/man/Esys_NV_Certify.3 \
120    doxygen-doc/man/Esys_NV_ChangeAuth.3 \
121    doxygen-doc/man/Esys_NV_DefineSpace.3 \
122    doxygen-doc/man/Esys_NV_Extend.3 \
123    doxygen-doc/man/Esys_NV_GlobalWriteLock.3 \
124    doxygen-doc/man/Esys_NV_Increment.3 \
125    doxygen-doc/man/Esys_NV_Read.3 \
126    doxygen-doc/man/Esys_NV_ReadLock.3 \
127    doxygen-doc/man/Esys_NV_ReadPublic.3 \
128    doxygen-doc/man/Esys_NV_SetBits.3 \
129    doxygen-doc/man/Esys_NV_UndefineSpace.3 \
130    doxygen-doc/man/Esys_NV_UndefineSpaceSpecial.3 \
131    doxygen-doc/man/Esys_NV_Write.3 \
132    doxygen-doc/man/Esys_NV_WriteLock.3 \
133    doxygen-doc/man/Esys_ObjectChangeAuth.3 \
134    doxygen-doc/man/Esys_PCR_Allocate.3 \
135    doxygen-doc/man/Esys_PCR_Event.3 \
136    doxygen-doc/man/Esys_PCR_Extend.3 \
137    doxygen-doc/man/Esys_PCR_Read.3 \
138    doxygen-doc/man/Esys_PCR_Reset.3 \
139    doxygen-doc/man/Esys_PCR_SetAuthPolicy.3 \
140    doxygen-doc/man/Esys_PCR_SetAuthValue.3 \
141    doxygen-doc/man/Esys_PolicyAuthorize.3 \
142    doxygen-doc/man/Esys_PolicyAuthValue.3 \
143    doxygen-doc/man/Esys_PolicyCommandCode.3 \
144    doxygen-doc/man/Esys_PolicyCounterTimer.3 \
145    doxygen-doc/man/Esys_PolicyCpHash.3 \
146    doxygen-doc/man/Esys_PolicyDuplicationSelect.3 \
147    doxygen-doc/man/Esys_PolicyGetDigest.3 \
148    doxygen-doc/man/Esys_PolicyLocality.3 \
149    doxygen-doc/man/Esys_PolicyNameHash.3 \
150    doxygen-doc/man/Esys_PolicyNV.3 \
151    doxygen-doc/man/Esys_PolicyNvWritten.3 \
152    doxygen-doc/man/Esys_PolicyOR.3 \
153    doxygen-doc/man/Esys_PolicyPassword.3 \
154    doxygen-doc/man/Esys_PolicyPCR.3 \
155    doxygen-doc/man/Esys_PolicyPhysicalPresence.3 \
156    doxygen-doc/man/Esys_PolicyRestart.3 \
157    doxygen-doc/man/Esys_PolicySecret.3 \
158    doxygen-doc/man/Esys_PolicySigned.3 \
159    doxygen-doc/man/Esys_PolicyTicket.3 \
160    doxygen-doc/man/Esys_PP_Commands.3 \
161    doxygen-doc/man/Esys_Quote.3 \
162    doxygen-doc/man/Esys_ReadClock.3 \
163    doxygen-doc/man/Esys_ReadPublic.3 \
164    doxygen-doc/man/Esys_Rewrap.3 \
165    doxygen-doc/man/Esys_RSA_Decrypt.3 \
166    doxygen-doc/man/Esys_RSA_Encrypt.3 \
167    doxygen-doc/man/Esys_SelfTest.3 \
168    doxygen-doc/man/Esys_SequenceComplete.3 \
169    doxygen-doc/man/Esys_SequenceUpdate.3 \
170    doxygen-doc/man/Esys_SetAlgorithmSet.3 \
171    doxygen-doc/man/Esys_SetCommandCodeAuditStatus.3 \
172    doxygen-doc/man/Esys_SetPrimaryPolicy.3 \
173    doxygen-doc/man/Esys_Shutdown.3 \
174    doxygen-doc/man/Esys_Sign.3 \
175    doxygen-doc/man/Esys_StartAuthSession.3 \
176    doxygen-doc/man/Esys_Startup.3 \
177    doxygen-doc/man/Esys_StirRandom.3 \
178    doxygen-doc/man/Esys_TestParms.3 \
179    doxygen-doc/man/Esys_Unseal.3 \
180    doxygen-doc/man/Esys_Vendor_TCG_Test.3 \
181    doxygen-doc/man/Esys_VerifySignature.3 \
182    doxygen-doc/man/Esys_ZGen_2Phase.3
183$(DOXYMAN3): doxygen-doc
184else #DOXYMAN
185DOXYMAN3 =
186endif #DOXYMAN
187
188### Include make files ###
189# Add source code files from bootstrap
190include src_vars.mk
191
192# Add test definitions
193include Makefile-test.am
194
195# Add fuzz definitions
196include Makefile-fuzz.am
197
198### Distribution files ###
199# Add udev rule
200udevrules_DATA   = dist/tpm-udev.rules
201
202# Adding user and developer information
203EXTRA_DIST += \
204    CHANGELOG.md \
205    CONTRIBUTING.md \
206    INSTALL.md \
207    LICENSE \
208    MAINTAINERS \
209    README.md \
210    RELEASE.md
211
212# Windows code / core build files
213EXTRA_DIST += \
214    include/tss2/tss2_tcti_tbs.h \
215    lib/tss2-tcti-tbs.def \
216    src/tss2-tcti/tcti-tbs.c \
217    src/tss2-tcti/tcti-tbs.h \
218    src/tss2-tcti/tss2-tcti-tbs.vcxproj \
219    src/tss2-tcti/tss2-tcti-tbs.vcxproj.filters \
220    tpm2-tss.sln
221
222# Generate the AUTHORS file from git log
223AUTHORS :
224	$(AM_V_GEN)git log --format='%aN <%aE>' | grep -v 'users.noreply.github.com' | sort | \
225	    uniq -c | sort -nr | sed 's/^\s*//' | cut -d" " -f2- > $@
226EXTRA_DIST += AUTHORS
227
228# pkg-config setup. pc-file declarations happen in the corresponding modules
229pkgconfig_DATA =
230DISTCLEANFILES += $(pkgconfig_DATA)
231
232# Base TSS2 headers
233tss2dir = $(includedir)/tss2
234tss2_HEADERS = \
235    $(srcdir)/include/tss2/tss2_common.h \
236    $(srcdir)/include/tss2/tss2_tcti.h \
237    $(srcdir)/include/tss2/tss2_tpm2_types.h
238
239### Internal utility library
240libutil = libutil.la
241noinst_LTLIBRARIES += $(libutil)
242libutil_la_SOURCES = $(UTIL_SRC)
243
244### TCG TSS Marshaling/Unmarshaling spec library ###
245libtss2_mu = src/tss2-mu/libtss2-mu.la
246tss2_HEADERS += $(srcdir)/include/tss2/tss2_mu.h
247lib_LTLIBRARIES += $(libtss2_mu)
248pkgconfig_DATA += lib/tss2-mu.pc
249EXTRA_DIST += lib/tss2-mu.map lib/tss2-mu.def src/tss2-mu/tss2-mu.vcxproj
250
251if HAVE_LD_VERSION_SCRIPT
252src_tss2_mu_libtss2_mu_la_LDFLAGS = -Wl,--version-script=$(srcdir)/lib/tss2-mu.map
253endif # HAVE_LD_VERSION_SCRIPT
254src_tss2_mu_libtss2_mu_la_LIBADD = $(libutil)
255src_tss2_mu_libtss2_mu_la_SOURCES = $(TSS2_MU_SRC)
256
257### TCG TSS TCTI spec libraries ###
258# tcti loader library
259libtss2_tctildr = src/tss2-tcti/libtss2-tctildr.la
260tss2_HEADERS += $(srcdir)/include/tss2/tss2_tctildr.h
261lib_LTLIBRARIES += $(libtss2_tctildr)
262pkgconfig_DATA += lib/tss2-tctildr.pc
263EXTRA_DIST += lib/tss2-tctildr.map
264
265src_tss2_tcti_libtss2_tctildr_la_CFLAGS = $(AM_CFLAGS)
266if HAVE_LD_VERSION_SCRIPT
267src_tss2_tcti_libtss2_tctildr_la_LDFLAGS = \
268    -Wl,--version-script=$(srcdir)/lib/tss2-tctildr.map
269endif # HAVE_LD_VERSION_SCRIPT
270src_tss2_tcti_libtss2_tctildr_la_LIBADD = $(libutil)
271src_tss2_tcti_libtss2_tctildr_la_SOURCES = \
272    src/tss2-tcti/tctildr.c src/tss2-tcti/tctildr.h \
273    src/tss2-tcti/tctildr-interface.h
274if NO_DL
275src_tss2_tcti_libtss2_tctildr_la_LIBADD += $(libtss2_tcti_device) $(libtss2_tcti_mssim)
276src_tss2_tcti_libtss2_tctildr_la_SOURCES += src/tss2-tcti/tctildr-nodl.c src/tss2-tcti/tctildr-nodl.h
277else
278src_tss2_tcti_libtss2_tctildr_la_LIBADD += $(LIBADD_DL)
279src_tss2_tcti_libtss2_tctildr_la_SOURCES += src/tss2-tcti/tctildr-dl.c src/tss2-tcti/tctildr-dl.h
280endif
281
282# tcti device library
283if ENABLE_TCTI_DEVICE
284libtss2_tcti_device = src/tss2-tcti/libtss2-tcti-device.la
285tss2_HEADERS += $(srcdir)/include/tss2/tss2_tcti_device.h
286lib_LTLIBRARIES += $(libtss2_tcti_device)
287pkgconfig_DATA += lib/tss2-tcti-device.pc
288EXTRA_DIST += lib/tss2-tcti-device.map
289
290if HAVE_LD_VERSION_SCRIPT
291src_tss2_tcti_libtss2_tcti_device_la_LDFLAGS  = -Wl,--version-script=$(srcdir)/lib/tss2-tcti-device.map
292endif # HAVE_LD_VERSION_SCRIPT
293src_tss2_tcti_libtss2_tcti_device_la_LIBADD   = $(libtss2_mu) $(libutil)
294src_tss2_tcti_libtss2_tcti_device_la_SOURCES  = \
295    src/tss2-tcti/tcti-common.c \
296    src/tss2-tcti/tcti-device.c
297endif # ENABLE_TCTI_DEVICE
298
299# tcti library for Microsoft TPM2 simulator
300if ENABLE_TCTI_MSSIM
301libtss2_tcti_mssim = src/tss2-tcti/libtss2-tcti-mssim.la
302tss2_HEADERS += $(srcdir)/include/tss2/tss2_tcti_mssim.h
303lib_LTLIBRARIES += $(libtss2_tcti_mssim)
304pkgconfig_DATA += lib/tss2-tcti-mssim.pc
305EXTRA_DIST += lib/tss2-tcti-mssim.map \
306              lib/tss2-tcti-mssim.def \
307              src/tss2-tcti/tss2-tcti-mssim.vcxproj \
308              src/tss2-tcti/tss2-tcti-mssim.vcxproj.filters
309
310if HAVE_LD_VERSION_SCRIPT
311src_tss2_tcti_libtss2_tcti_mssim_la_LDFLAGS  = -Wl,--version-script=$(srcdir)/lib/tss2-tcti-mssim.map
312endif # HAVE_LD_VERSION_SCRIPT
313src_tss2_tcti_libtss2_tcti_mssim_la_LIBADD   = $(libtss2_mu) $(libutil)
314src_tss2_tcti_libtss2_tcti_mssim_la_SOURCES  = \
315    src/tss2-tcti/tcti-common.c \
316    src/tss2-tcti/tcti-mssim.c
317endif # ENABLE_TCTI_MSSIM
318
319### TCG TSS SAPI spec library ###
320libtss2_sys = src/tss2-sys/libtss2-sys.la
321tss2_HEADERS += $(srcdir)/include/tss2/tss2_sys.h
322lib_LTLIBRARIES += $(libtss2_sys)
323pkgconfig_DATA += lib/tss2-sys.pc
324
325src_tss2_sys_libtss2_sys_la_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/src/tss2-sys
326src_tss2_sys_libtss2_sys_la_LDFLAGS = $(AM_LDFLAGS) $(LIBSOCKET_LDFLAGS)
327
328if HAVE_LD_VERSION_SCRIPT
329src_tss2_sys_libtss2_sys_la_LDFLAGS += -Wl,--version-script=$(srcdir)/lib/tss2-sys.map
330endif # HAVE_LD_VERSION_SCRIPT
331src_tss2_sys_libtss2_sys_la_LIBADD = $(libtss2_mu) $(libutil)
332src_tss2_sys_libtss2_sys_la_SOURCES = $(TSS2_SYS_SRC)
333EXTRA_DIST += lib/tss2-sys.map lib/tss2-sys.def src/tss2-sys/tss2-sys.vcxproj
334
335### TCG TSS ESAPI spec library ###
336if ESAPI
337libtss2_esys = src/tss2-esys/libtss2-esys.la
338tss2_HEADERS += $(srcdir)/include/tss2/tss2_esys.h
339lib_LTLIBRARIES += $(libtss2_esys)
340pkgconfig_DATA += lib/tss2-esys.pc
341
342if ESYS_OSSL
343TSS2_ESYS_SRC_CRYPTO = src/tss2-esys/esys_crypto_ossl.h src/tss2-esys/esys_crypto_ossl.c
344else
345if ESYS_GCRYPT
346TSS2_ESYS_SRC_CRYPTO = src/tss2-esys/esys_crypto_gcrypt.h src/tss2-esys/esys_crypto_gcrypt.c
347endif
348endif
349
350src_tss2_esys_libtss2_esys_la_CFLAGS  = $(AM_CFLAGS) -I$(srcdir)/src/tss2-esys \
351    $(TSS2_ESYS_CFLAGS_CRYPTO)
352src_tss2_esys_libtss2_esys_la_LIBADD  = $(libtss2_sys) $(libtss2_mu) $(libutil)
353
354src_tss2_esys_libtss2_esys_la_LDFLAGS = $(AM_LDFLAGS) $(LIBSOCKET_LDFLAGS) \
355                                        $(TSS2_ESYS_LDFLAGS_CRYPTO)
356if HAVE_LD_VERSION_SCRIPT
357src_tss2_esys_libtss2_esys_la_LDFLAGS += -Wl,--version-script=$(srcdir)/lib/tss2-esys.map
358endif # HAVE_LD_VERSION_SCRIPT
359src_tss2_esys_libtss2_esys_la_SOURCES = $(TSS2_ESYS_SRC) $(TSS2_ESYS_SRC_CRYPTO) \
360    src/tss2-tcti/tctildr.c src/tss2-tcti/tctildr.h \
361    src/tss2-tcti/tctildr-interface.h
362if NO_DL
363src_tss2_esys_libtss2_esys_la_LIBADD += $(libtss2_tcti_device) $(libtss2_tcti_mssim)
364src_tss2_esys_libtss2_esys_la_SOURCES += src/tss2-tcti/tctildr-nodl.c src/tss2-tcti/tctildr-nodl.h
365else
366src_tss2_esys_libtss2_esys_la_LIBADD += $(LIBADD_DL)
367src_tss2_esys_libtss2_esys_la_SOURCES += src/tss2-tcti/tctildr-dl.c src/tss2-tcti/tctildr-dl.h
368endif
369EXTRA_DIST += lib/tss2-esys.map \
370              lib/tss2-esys.def \
371              src/tss2-esys/tss2-esys.vcxproj \
372              src/tss2-esys/tss2-esys.vcxproj.filters
373endif #ESAPI
374
375### TCG TSS error decoding spec library ###
376libtss2_rc = src/tss2-rc/libtss2-rc.la
377tss2_HEADERS += $(srcdir)/include/tss2/tss2_rc.h
378lib_LTLIBRARIES += $(libtss2_rc)
379pkgconfig_DATA += lib/tss2-rc.pc
380EXTRA_DIST += lib/tss2-rc.map lib/tss2-rc.def
381
382if HAVE_LD_VERSION_SCRIPT
383src_tss2_rc_libtss2_rc_la_LDFLAGS = -Wl,--version-script=$(srcdir)/lib/tss2-rc.map
384endif # HAVE_LD_VERSION_SCRIPT
385src_tss2_rc_libtss2_rc_la_SOURCES = $(TSS2_RC_SRC)
386
387
388### TCG TSS FAPI spec library ###
389if FAPI
390fapiconfdir = @sysconfdir@/tpm2-tss
391fapiconf_DATA = fapi-config.json
392
393EXTRA_DIST += dist/fapi-config.json.in
394CLEANFILES += fapi-config.json
395
396# We have to do this ourselves, in order to get absolute paths
397fapi-config.json: dist/fapi-config.json.in
398	$(AM_V_GEN) $(SED) \
399		-e 's|[@]prefix@|$(prefix)|g' \
400		-e 's|[@]datarootdir@|$(datarootdir)|g' \
401		-e 's|[@]datadir@|$(datadir)|g' \
402		-e 's|[@]sysconfdir@|$(sysconfdir)|g' \
403		-e 's|[@]sharedstatedir@|$(sharedstatedir)|g' \
404		-e 's|[@]localstatedir@|$(localstatedir)|g' \
405		-e 's|[@]runstatedir@|$(runstatedir)|g' \
406		-e 's|[@]userstatedir@|$(userstatedir)|g' \
407		< "$<" > "$@"
408
409sysusers_DATA = dist/sysusers.d/tpm2-tss.conf
410tmpfiles_DATA = tpm2-tss-fapi.conf
411
412EXTRA_DIST += dist/sysusers.d/tpm2-tss.conf dist/tmpfiles.d/tpm2-tss-fapi.conf.in
413CLEANFILES += tpm2-tss-fapi.conf
414
415# We have to do this ourselves, in order to get absolute paths
416tpm2-tss-fapi.conf: dist/tmpfiles.d/tpm2-tss-fapi.conf.in
417	$(AM_V_GEN) $(SED) \
418		-e 's|[@]localstatedir@|$(localstatedir)|g' \
419		-e 's|[@]runstatedir@|$(runstatedir)|g' \
420		< "$<" > "$@"
421
422EXTRA_DIST += dist/fapi-profiles/P_RSA2048SHA256.json \
423              dist/fapi-profiles/P_ECCP256SHA256.json
424
425fapiprofilesdir = @sysconfdir@/tpm2-tss/fapi-profiles
426fapiprofiles_DATA = dist/fapi-profiles/P_RSA2048SHA256.json \
427                    dist/fapi-profiles/P_ECCP256SHA256.json
428
429libtss2_fapi = src/tss2-fapi/libtss2-fapi.la
430tss2_HEADERS += $(srcdir)/include/tss2/tss2_fapi.h
431lib_LTLIBRARIES += $(libtss2_fapi)
432pkgconfig_DATA += lib/tss2-fapi.pc
433EXTRA_DIST +=  \
434    lib/tss2-fapi.map \
435    lib/tss2-fapi.def \
436    test/data/fapi/P_RSA_EK_persistent.json \
437    test/data/fapi/P_RSA.json \
438    test/data/fapi/P_RSA_sh_policy.json \
439    test/data/fapi/P_RSA256.json \
440    test/data/fapi/P_ECC.json \
441    test/data/fapi/policy/pol_pcr16_0.json \
442    test/data/fapi/policy/pol_pcr16_0_fail.json \
443    test/data/fapi/policy/pol_pcr16_0_or.json \
444    test/data/fapi/policy/pol_nv.json \
445    test/data/fapi/policy/pol_nv_written.json \
446    test/data/fapi/policy/pol_signed.json \
447    test/data/fapi/policy/pol_signed_ecc.json \
448    test/data/fapi/policy/pol_authorize.json \
449    test/data/fapi/policy/pol_authorize_outer.json \
450    test/data/fapi/policy/pol_authorize_nv.json \
451    test/data/fapi/policy/pol_secret.json \
452    test/data/fapi/policy/pol_password.json \
453    test/data/fapi/policy/pol_auth_value.json \
454    test/data/fapi/policy/pol_command_code.json \
455    test/data/fapi/policy/pol_locality.json \
456    test/data/fapi/policy/pol_physical_presence.json \
457    test/data/fapi/policy/pol_duplicate.json \
458    test/data/fapi/policy/pol_nv_change_auth.json \
459    test/data/fapi/policy/pol_countertimer.json \
460    test/data/fapi/policy/pol_name_hash.json \
461    test/data/fapi/policy/pol_pcr16_read.json \
462    test/data/fapi/policy/pol_action.json \
463    test/data/fapi/policy/pol_cphash.json
464
465src_tss2_fapi_libtss2_fapi_la_LIBADD  = $(libtss2_sys) $(libtss2_mu) $(libtss2_esys) \
466    $(libutil) $(libtss2_tctildr)
467
468src_tss2_fapi_libtss2_fapi_la_SOURCES = $(TSS2_FAPI_SRC)
469src_tss2_fapi_libtss2_fapi_la_CFLAGS  = $(AM_CFLAGS) -I$(srcdir)/src/tss2-fapi
470src_tss2_fapi_libtss2_fapi_la_LDFLAGS = $(AM_LDFLAGS) $(LIBCRYPTO_LIBS) $(JSON_C_LIBS) $(CURL_LIBS)
471if HAVE_LD_VERSION_SCRIPT
472src_tss2_fapi_libtss2_fapi_la_LDFLAGS += -Wl,--version-script=$(srcdir)/lib/tss2-fapi.map
473endif # HAVE_LD_VERSION_SCRIPT
474
475
476if DOXYMAN
477DOXYMAN3 += \
478    doxygen-doc/man/Fapi_AuthorizePolicy.3 \
479    doxygen-doc/man/Fapi_ChangeAuth.3 \
480    doxygen-doc/man/Fapi_CreateKey.3 \
481    doxygen-doc/man/Fapi_CreateNv.3 \
482    doxygen-doc/man/Fapi_CreateSeal.3 \
483    doxygen-doc/man/Fapi_Decrypt.3 \
484    doxygen-doc/man/Fapi_Delete.3 \
485    doxygen-doc/man/Fapi_Encrypt.3 \
486    doxygen-doc/man/Fapi_ExportKey.3 \
487    doxygen-doc/man/Fapi_ExportPolicy.3 \
488    doxygen-doc/man/Fapi_Finalize.3 \
489    doxygen-doc/man/Fapi_Free.3 \
490    doxygen-doc/man/Fapi_GetAppData.3 \
491    doxygen-doc/man/Fapi_GetCertificate.3 \
492    doxygen-doc/man/Fapi_GetDescription.3 \
493    doxygen-doc/man/Fapi_GetInfo.3 \
494    doxygen-doc/man/Fapi_GetPlatformCertificates.3 \
495    doxygen-doc/man/Fapi_GetPollHandles.3 \
496    doxygen-doc/man/Fapi_GetRandom.3 \
497    doxygen-doc/man/Fapi_GetTcti.3 \
498    doxygen-doc/man/Fapi_GetTpmBlobs.3 \
499    doxygen-doc/man/Fapi_Import.3 \
500    doxygen-doc/man/Fapi_Initialize.3 \
501    doxygen-doc/man/Fapi_List.3 \
502    doxygen-doc/man/Fapi_NvExtend.3 \
503    doxygen-doc/man/Fapi_NvIncrement.3 \
504    doxygen-doc/man/Fapi_NvRead.3 \
505    doxygen-doc/man/Fapi_NvSetBits.3 \
506    doxygen-doc/man/Fapi_NvWrite.3 \
507    doxygen-doc/man/Fapi_PcrExtend.3 \
508    doxygen-doc/man/Fapi_PcrRead.3 \
509    doxygen-doc/man/Fapi_Provision.3 \
510    doxygen-doc/man/Fapi_Quote.3 \
511    doxygen-doc/man/Fapi_SetAppData.3 \
512    doxygen-doc/man/Fapi_SetAuthCB.3 \
513    doxygen-doc/man/Fapi_SetBranchCB.3 \
514    doxygen-doc/man/Fapi_SetCertificate.3 \
515    doxygen-doc/man/Fapi_SetDescription.3 \
516    doxygen-doc/man/Fapi_SetSignCB.3 \
517    doxygen-doc/man/Fapi_Sign.3 \
518    doxygen-doc/man/FapiTestgroup.3 \
519    doxygen-doc/man/Fapi_Unseal.3 \
520    doxygen-doc/man/Fapi_VerifyQuote.3 \
521    doxygen-doc/man/Fapi_VerifySignature.3 \
522    doxygen-doc/man/Fapi_WriteAuthorizeNv.3
523endif #DOXYMAN
524
525endif #FAPI
526
527### Man Pages
528man3_MANS = \
529    man/man3/Tss2_Tcti_Device_Init.3 \
530    man/man3/Tss2_Tcti_Mssim_Init.3 \
531    man/man3/Tss2_TctiLdr_Finalize.3 \
532    man/man3/Tss2_TctiLdr_FreeInfo.3 \
533    man/man3/Tss2_TctiLdr_GetInfo.3 \
534    man/man3/Tss2_TctiLdr_Initialize.3 \
535    $(DOXYMAN3)
536
537man7_MANS = \
538    man/man7/tss2-tcti-device.7 \
539    man/man7/tss2-tcti-mssim.7 \
540    man/man7/tss2-tctildr.7
541
542man/man3/%.3 : man/%.3.in $(srcdir)/man/man-postlude.troff
543	$(AM_V_GEN)$(call make_man,$@,$<,$(srcdir)/man/man-postlude.troff)
544
545man/man7/%.7 : man/%.7.in $(srcdir)/man/man-postlude.troff
546	$(AM_V_GEN)$(call make_man,$@,$<,$(srcdir)/man/man-postlude.troff)
547
548install-man: install-man3 install-man7
549	$(LN_S) -f Tss2_TctiLdr_Initialize.3 $(DESTDIR)$(man3dir)/Tss2_TctiLdr_Initialize_Ex.3
550
551EXTRA_DIST += dist/tpm-udev.rules
552
553if WITH_UDEVRULESPREFIX
554install-data-hook:
555	mv $(DESTDIR)$(udevrulesdir)/tpm-udev.rules $(DESTDIR)$(udevrulesdir)/$(udevrulesprefix)tpm-udev.rules
556
557uninstall-local:
558	-rm $(DESTDIR)$(udevrulesdir)/$(udevrulesprefix)tpm-udev.rules
559endif
560
561# Create tss user and FAPI directories directly after installation (vs. after a reboot)
562install-exec-hook:
563	systemd-sysusers && systemd-tmpfiles --create || true
564
565uninstall-hook:
566	cd $(DESTDIR)$(man3dir) && \
567		[ -L Tss2_TctiLdr_Initialize_Ex.3 ] && \
568			rm -f Tss2_TctiLdr_Initialize_Ex.3 || true
569
570EXTRA_DIST += \
571    doc/doxygen.dox \
572    doc/coding_standard_c.md \
573    doc/logging.md \
574    doc/fuzzing.md \
575    doc/TSS_block_diagram.png \
576    man/man-postlude.troff \
577    man/Tss2_Tcti_Device_Init.3.in \
578    man/Tss2_Tcti_Mssim_Init.3.in \
579    man/Tss2_TctiLdr_Finalize.3.in \
580    man/Tss2_TctiLdr_FreeInfo.3.in \
581    man/Tss2_TctiLdr_GetInfo.3.in \
582    man/Tss2_TctiLdr_Initialize.3.in \
583    man/tss2-tcti-device.7.in \
584    man/tss2-tcti-mssim.7.in \
585    man/tss2-tctildr.7.in
586
587CLEANFILES += \
588    $(man3_MANS) \
589    $(man7_MANS)
590
591### Helper Functions ###
592define make_parent_dir
593    if [ ! -d $(dir $1) ]; then mkdir -p $(dir $1); fi
594endef
595
596# function to transform man .in files to man pages
597# $1: target
598# $2: .in file
599# $3: man postlude file
600define make_man
601    $(call make_parent_dir,$1) && \
602    cat $2 $3 > $1 && \
603    sed -i -e "s,[@]VERSION[@],$(PACKAGE_VERSION),g;" $1
604endef
605