@@ -72,13 +72,7 @@ check_function_exists("getpid" HAVE_GETPID)
7272
7373
7474# TODO
75- # * wrapper
76- # * wolfcrypt
77- # * I2C
78- # * Advanced IO
79- # * Device specific (ST33, ATTPM20, NPCT, SLB, automatic)
80- # * wait state
81- # * small stack
75+ # * (All major options have been implemented)
8276
8377# Single threaded
8478set (WOLFTPM_SINGLE_THREADED "no" CACHE STRING
@@ -129,14 +123,17 @@ endif()
129123set (WOLFTPM_DEBUG "no" CACHE STRING
130124 "Enables option for debug (default: disabled)" )
131125set_property (CACHE WOLFTPM_DEBUG
132- PROPERTY STRINGS "yes;no;verbose" )
126+ PROPERTY STRINGS "yes;no;verbose;io " )
133127if (WOLFTPM_DEBUG)
134128 list (APPEND WOLFTPM_DEFINITIONS
135129 "-DDEBUG_WOLFTPM"
136130 "-DDEBUG" )
137- if ("${WOLFTPM_DEBUG} " STREQUAL "verbose" )
131+ if ("${WOLFTPM_DEBUG} " STREQUAL "verbose" OR " ${WOLFTPM_DEBUG} " STREQUAL "io" )
138132 list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_DEBUG_VERBOSE" )
139- endif ("${WOLFTPM_DEBUG} " STREQUAL "verbose" )
133+ endif ()
134+ if ("${WOLFTPM_DEBUG} " STREQUAL "io" )
135+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_DEBUG_IO" )
136+ endif ()
140137endif ()
141138
142139# Device Interface
@@ -215,6 +212,112 @@ else()
215212 " ${MODULE_OPTS} " )
216213endif ()
217214
215+ # Wrapper
216+ set (WOLFTPM_WRAPPER "yes" CACHE STRING
217+ "Enable wrapper code (default: enabled)" )
218+ set_property (CACHE WOLFTPM_WRAPPER
219+ PROPERTY STRINGS "yes;no" )
220+ if (NOT WOLFTPM_WRAPPER)
221+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM2_NO_WRAPPER" )
222+ endif ()
223+
224+ # I2C Support
225+ set (WOLFTPM_I2C "no" CACHE STRING
226+ "Enable I2C TPM Support (default: disabled)" )
227+ set_property (CACHE WOLFTPM_I2C
228+ PROPERTY STRINGS "yes;no" )
229+ if (WOLFTPM_I2C)
230+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_I2C" )
231+ endif ()
232+
233+ # MMIO Support
234+ set (WOLFTPM_MMIO "no" CACHE STRING
235+ "Enable built-in MMIO callbacks (default: disabled)" )
236+ set_property (CACHE WOLFTPM_MMIO
237+ PROPERTY STRINGS "yes;no" )
238+ if (WOLFTPM_MMIO)
239+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_MMIO" )
240+ endif ()
241+
242+ # Advanced IO
243+ set (WOLFTPM_ADVIO "no" CACHE STRING
244+ "Enable Advanced IO (default: disabled)" )
245+ set_property (CACHE WOLFTPM_ADVIO
246+ PROPERTY STRINGS "yes;no" )
247+ if (WOLFTPM_ADVIO OR WOLFTPM_I2C OR WOLFTPM_MMIO)
248+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_ADV_IO" )
249+ endif ()
250+
251+ # TIS / SPI Check Wait State support
252+ set (WOLFTPM_CHECK_WAIT_STATE "auto" CACHE STRING
253+ "Enable TIS / SPI Check Wait State support (default: auto - depends on chip)" )
254+ set_property (CACHE WOLFTPM_CHECK_WAIT_STATE
255+ PROPERTY STRINGS "yes;no;auto" )
256+ # Auto-enable for certain modules
257+ if ("${WOLFTPM_CHECK_WAIT_STATE} " STREQUAL "auto" )
258+ if ("${WOLFTPM_MODULE} " STREQUAL "auto" OR
259+ "${WOLFTPM_MODULE} " STREQUAL "microchip" OR
260+ "${WOLFTPM_MODULE} " STREQUAL "attpm20" OR
261+ "${WOLFTPM_MODULE} " STREQUAL "mchp" OR
262+ "${WOLFTPM_MODULE} " STREQUAL "st33" OR
263+ "${WOLFTPM_MODULE} " STREQUAL "nuvoton" OR
264+ "${WOLFTPM_MODULE} " STREQUAL "npct75x" )
265+ set (WOLFTPM_CHECK_WAIT_STATE_ENABLED ON )
266+ else ()
267+ set (WOLFTPM_CHECK_WAIT_STATE_ENABLED OFF )
268+ endif ()
269+ elseif (WOLFTPM_CHECK_WAIT_STATE)
270+ set (WOLFTPM_CHECK_WAIT_STATE_ENABLED ON )
271+ else ()
272+ set (WOLFTPM_CHECK_WAIT_STATE_ENABLED OFF )
273+ endif ()
274+ if (WOLFTPM_CHECK_WAIT_STATE_ENABLED)
275+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_CHECK_WAIT_STATE" )
276+ endif ()
277+
278+ # TIS Layer Named Semaphore locking
279+ set (WOLFTPM_TIS_LOCK "no" CACHE STRING
280+ "TIS Layer Named Semaphore locking for concurrent access between processes (default: disabled)" )
281+ set_property (CACHE WOLFTPM_TIS_LOCK
282+ PROPERTY STRINGS "yes;no" )
283+ if (WOLFTPM_TIS_LOCK)
284+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_TIS_LOCK" )
285+ endif ()
286+
287+ # Small Stack
288+ set (WOLFTPM_SMALL_STACK "no" CACHE STRING
289+ "Enable Small Stack Usage (default: disabled)" )
290+ set_property (CACHE WOLFTPM_SMALL_STACK
291+ PROPERTY STRINGS "yes;no" )
292+ if (WOLFTPM_SMALL_STACK)
293+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_SMALL_STACK" )
294+ list (APPEND WOLFTPM_DEFINITIONS "-DMAX_COMMAND_SIZE=1024" )
295+ list (APPEND WOLFTPM_DEFINITIONS "-DMAX_RESPONSE_SIZE=1350" )
296+ list (APPEND WOLFTPM_DEFINITIONS "-DMAX_DIGEST_BUFFER=896" )
297+ # If wolfCrypt is disabled, set MAX_SESSION_NUM=1
298+ if (NOT WITH_WOLFSSL AND NOT WITH_WOLFSSL_TREE AND NOT WOLFSSL_FOUND AND NOT wolfssl_FOUND)
299+ list (APPEND WOLFTPM_DEFINITIONS "-DMAX_SESSION_NUM=1" )
300+ endif ()
301+ endif ()
302+
303+ # Example HAL
304+ set (WOLFTPM_HAL "yes" CACHE STRING
305+ "Enable example HAL interfaces (default: enabled)" )
306+ set_property (CACHE WOLFTPM_HAL
307+ PROPERTY STRINGS "yes;no" )
308+ if (WOLFTPM_HAL OR WOLFTPM_MMIO)
309+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_EXAMPLE_HAL" )
310+ endif ()
311+
312+ # Firmware Upgrade
313+ set (WOLFTPM_FIRMWARE "yes" CACHE STRING
314+ "Enable support for TPM firmware upgrades (default: enabled)" )
315+ set_property (CACHE WOLFTPM_FIRMWARE
316+ PROPERTY STRINGS "yes;no" )
317+ if (WOLFTPM_FIRMWARE)
318+ list (APPEND WOLFTPM_DEFINITIONS "-DWOLFTPM_FIRMWARE_UPGRADE" )
319+ endif ()
320+
218321# Examples
219322set (WOLFTPM_EXAMPLES "yes" CACHE BOOL
220323 "Build examples" )
0 commit comments