Skip to content

Commit 3ec1dab

Browse files
committed
Finishing up the CMake options to sync with configure
1 parent 266d86c commit 3ec1dab

File tree

3 files changed

+180
-13
lines changed

3 files changed

+180
-13
lines changed

.github/workflows/cmake-build.yml

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,68 @@ jobs:
1010
build:
1111

1212
runs-on: ubuntu-latest
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
config:
17+
# Default configuration
18+
- name: "Default"
19+
options: "-DWOLFTPM_INTERFACE=SWTPM"
20+
# Test different TPM modules
21+
- name: "Module Auto"
22+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=auto"
23+
- name: "Module ST33"
24+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=st33"
25+
- name: "Module Microchip"
26+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=microchip"
27+
- name: "Module Nuvoton"
28+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=nuvoton"
29+
- name: "Module SLB9670"
30+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=slb9670"
31+
- name: "Module SLB9672"
32+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=slb9672"
33+
- name: "Module SLB9673"
34+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=slb9673"
35+
# Test wrapper disabled
36+
- name: "No Wrapper"
37+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_WRAPPER=no"
38+
# Test I2C support (enables ADV_IO automatically)
39+
- name: "I2C Enabled"
40+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_I2C=yes"
41+
# Test Advanced IO
42+
- name: "Advanced IO"
43+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_ADVIO=yes"
44+
# Test MMIO (enables ADV_IO automatically)
45+
- name: "MMIO Enabled"
46+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MMIO=yes"
47+
# Test Check Wait State
48+
- name: "Check Wait State Enabled"
49+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_CHECK_WAIT_STATE=yes"
50+
- name: "Check Wait State Disabled"
51+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_CHECK_WAIT_STATE=no"
52+
# Test TIS Lock
53+
- name: "TIS Lock Enabled"
54+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_TIS_LOCK=yes"
55+
# Test Small Stack
56+
- name: "Small Stack"
57+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_SMALL_STACK=yes"
58+
# Test HAL disabled
59+
- name: "No HAL"
60+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_HAL=no"
61+
# Test Firmware disabled
62+
- name: "No Firmware"
63+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_FIRMWARE=no"
64+
# Test Debug modes
65+
- name: "Debug Verbose"
66+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_DEBUG=verbose"
67+
- name: "Debug IO"
68+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_DEBUG=io"
69+
# Test Examples disabled
70+
- name: "No Examples"
71+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_EXAMPLES=no"
72+
# Test combination of options
73+
- name: "Combined Options"
74+
options: "-DWOLFTPM_INTERFACE=SWTPM -DWOLFTPM_MODULE=st33 -DWOLFTPM_I2C=yes -DWOLFTPM_ADVIO=yes -DWOLFTPM_CHECK_WAIT_STATE=yes"
1375

1476
steps:
1577
#pull wolfTPM
@@ -38,10 +100,10 @@ jobs:
38100
cmake --install .
39101
40102
#build wolftpm
41-
- name: Build wolfTPM
103+
- name: Build wolfTPM (${{ matrix.config.name }})
42104
run: |
43105
mkdir build
44106
cd build
45-
cmake -DWOLFTPM_INTERFACE=SWTPM -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" -DWITH_WOLFSSL="$GITHUB_WORKSPACE/install" ..
107+
cmake ${{ matrix.config.options }} -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" -DWITH_WOLFSSL="$GITHUB_WORKSPACE/install" ..
46108
cmake --build .
47109
cmake --install .

CMakeLists.txt

Lines changed: 113 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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
8478
set(WOLFTPM_SINGLE_THREADED "no" CACHE STRING
@@ -129,14 +123,17 @@ endif()
129123
set(WOLFTPM_DEBUG "no" CACHE STRING
130124
"Enables option for debug (default: disabled)")
131125
set_property(CACHE WOLFTPM_DEBUG
132-
PROPERTY STRINGS "yes;no;verbose")
126+
PROPERTY STRINGS "yes;no;verbose;io")
133127
if(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()
140137
endif()
141138

142139
# Device Interface
@@ -215,6 +212,112 @@ else()
215212
" ${MODULE_OPTS}")
216213
endif()
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
219322
set(WOLFTPM_EXAMPLES "yes" CACHE BOOL
220323
"Build examples")

examples/firmware/ifx_fw_update.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <wolftpm/tpm2_wrap.h>
3030

3131
#ifdef WOLFTPM_FIRMWARE_UPGRADE
32+
#if defined(WOLFTPM_SLB9672) || defined(WOLFTPM_SLB9673)
3233

3334
#include <examples/firmware/ifx_fw_update.h>
3435
#include <examples/tpm_test_keys.h>
@@ -240,4 +241,5 @@ int main(int argc, char *argv[])
240241

241242
return rc;
242243
}
243-
#endif
244+
#endif /* WOLFTPM_SLB9672 || WOLFTPM_SLB9673 */
245+
#endif /* WOLFTPM_FIRMWARE_UPGRADE */

0 commit comments

Comments
 (0)