Skip to content

Commit 621c38e

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

File tree

2 files changed

+176
-12
lines changed

2 files changed

+176
-12
lines changed

.github/workflows/cmake-build.yml

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

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

1475
steps:
1576
#pull wolfTPM
@@ -38,10 +99,10 @@ jobs:
3899
cmake --install .
39100
40101
#build wolftpm
41-
- name: Build wolfTPM
102+
- name: Build wolfTPM (${{ matrix.config.name }})
42103
run: |
43104
mkdir build
44105
cd build
45-
cmake -DWOLFTPM_INTERFACE=SWTPM -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" -DWITH_WOLFSSL="$GITHUB_WORKSPACE/install" ..
106+
cmake ${{ matrix.config.options }} -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" -DWITH_WOLFSSL="$GITHUB_WORKSPACE/install" ..
46107
cmake --build .
47108
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")

0 commit comments

Comments
 (0)