Makefile.am 28 KB

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