@@ -13,13 +13,14 @@ concurrency:
1313# END OF COMMON SECTION
1414
1515jobs :
16- # Ubuntu config matrix. macOS is covered separately by make_check_macos
17- # below with a curated subset; configs here either have equivalent macOS
18- # coverage there or exercise no Darwin-specific code .
19- make_check_linux :
16+ # Configs that interact with platform-specific features (sys-ca-certs,
17+ # Apple Security.framework, OpenSSL compat layer, networking).
18+ # Run on both Ubuntu and macOS .
19+ make_check :
2020 strategy :
2121 fail-fast : false
2222 matrix :
23+ os : [ ubuntu-24.04, macos-latest ]
2324 config : [
2425 # Add new configs here
2526 ' ' ,
8889 ' --enable-ocsp --enable-ocsp-responder --enable-ocspstapling CPPFLAGS="-DWOLFSSL_NONBLOCK_OCSP" --enable-maxfragment' ,
8990 ' --enable-all CPPFLAGS=-DWOLFSSL_HASH_KEEP' ,
9091 ' --enable-all --enable-writedup' ,
92+ ]
93+ name : make check
94+ if : github.repository_owner == 'wolfssl'
95+ runs-on : ${{ matrix.os }}
96+ # This should be a safe limit for the tests to run.
97+ timeout-minutes : 14
98+ steps :
99+ - name : Build and test wolfSSL
100+ uses : wolfSSL/actions-build-autotools-project@v1
101+ with :
102+ configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
103+ check : true
104+
105+ # Platform-agnostic configs: pure crypto algorithms, preprocessor guards,
106+ # or features with no macOS-specific code paths. Linux only.
107+ make_check_linux :
108+ strategy :
109+ fail-fast : false
110+ matrix :
111+ config : [
91112 ' --enable-ascon --enable-experimental' ,
92113 ' --enable-ascon CPPFLAGS=-DWOLFSSL_ASCON_UNROLL --enable-experimental' ,
93114 # PKCS#7 with RSA-PSS (CMS RSASSA-PSS signers)
@@ -109,7 +130,7 @@ jobs:
109130 ' --enable-curve25519=nonblock --enable-ecc=nonblock --enable-sp=yes,nonblock CPPFLAGS="-DWOLFSSL_PUBLIC_MP -DWOLFSSL_DEBUG_NONBLOCK"' ,
110131 ' --enable-certreq --enable-certext --enable-certgen --disable-secure-renegotiation-info CPPFLAGS="-DNO_TLS"' ,
111132 ]
112- name : make check linux
133+ name : make check (Linux only)
113134 if : github.repository_owner == 'wolfssl'
114135 runs-on : ubuntu-24.04
115136 # This should be a safe limit for the tests to run.
@@ -121,55 +142,6 @@ jobs:
121142 configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
122143 check : true
123144
124- # Curated macOS subset. Each config exists for a Darwin-specific reason;
125- # do not add entries that only re-test platform-agnostic crypto already
126- # covered by the corresponding Linux run.
127- make_check_macos :
128- strategy :
129- fail-fast : false
130- matrix :
131- config : [
132- # Default build: --enable-sys-ca-certs is auto-on on macOS, so
133- # this exercises Apple keychain / system trust loading in
134- # src/ssl_load.c that has no Linux equivalent.
135- ' ' ,
136- # Broad key-crypto + Security.framework + opensslextra in one run
137- # (RSA, ECC, AES, SHA-2/3, ChaCha20-Poly1305, Curve25519/448, HMAC,
138- # sniffer, DTLS, OCSP, ...). Note: --enable-all does NOT enable
139- # cryptocb or SHE, so those have their own entries below.
140- ' --enable-all --enable-asn=template' ,
141- # Validates the configure-time auto-enable override and that the
142- # build compiles out the Security.framework code path cleanly --
143- # macOS is the only OS where sys-ca-certs is auto-on by default.
144- ' --disable-sys-ca-certs' ,
145- # DTLS over BSD sockets on Darwin: connection-ID, fragmented
146- # ClientHello, secure renegotiation, PSK, AES-CCM, null cipher --
147- # exercises recvmsg/MTU/datagram handling that differs from Linux.
148- ' --enable-dtls --enable-dtlscid --enable-dtls13 --enable-secure-renegotiation
149- --enable-psk --enable-aesccm --enable-nullcipher
150- CPPFLAGS=-DWOLFSSL_STATIC_RSA' ,
151- # Crypto-callback dispatcher under Apple clang. Not covered by
152- # --enable-all; verifies the cryptocb find/setkey/keygen path
153- # compiles and runs on the macOS toolchain.
154- ' --enable-cryptocb --enable-keygen --enable-cryptocbutils=setkey' ,
155- ]
156- name : make check macos
157- if : github.repository_owner == 'wolfssl'
158- runs-on : macos-latest
159- # This should be a safe limit for the tests to run.
160- timeout-minutes : 14
161- steps :
162- - name : Build and test wolfSSL
163- uses : wolfSSL/actions-build-autotools-project@v1
164- with :
165- configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
166- check : true
167-
168- # Run on both OSes: the user_settings.h header-driven build path is
169- # distinct from the autotools-driven --enable-all path in
170- # make_check_linux / make_check_macos, and macOS-specific guard ordering
171- # (e.g. WOLFSSL_SYS_CA_CERTS pulling in Security.framework) needs to be
172- # exercised under Apple clang here.
173145 make_user_settings :
174146 strategy :
175147 fail-fast : false
@@ -193,11 +165,12 @@ jobs:
193165 user-settings : ${{ matrix.user-settings }}
194166
195167 make_user_settings_testwolfcrypt :
196- # testwolfcrypt runs pure crypto tests with no platform-specific
197- # features, so Linux-only is sufficient for these user_settings.
198168 strategy :
199169 fail-fast : false
200170 matrix :
171+ # testwolfcrypt runs pure crypto tests with no platform-specific
172+ # features, so Linux-only is sufficient for these user_settings.
173+ os : [ ubuntu-24.04 ]
201174 user-settings : [
202175 # Add new user_settings.h here (alphabetical order)
203176 ' examples/configs/user_settings_ca.h' ,
@@ -221,7 +194,7 @@ jobs:
221194 ]
222195 name : make user_setting.h (testwolfcrypt only)
223196 if : github.repository_owner == 'wolfssl'
224- runs-on : ubuntu-24.04
197+ runs-on : ${{ matrix.os }}
225198 # This should be a safe limit for the tests to run.
226199 timeout-minutes : 14
227200 steps :
@@ -235,18 +208,21 @@ jobs:
235208 - name : Run wolfcrypt/test/testwolfcrypt
236209 run : ./wolfcrypt/test/testwolfcrypt
237210
238- # Has to be dedicated function due to the sed call.
239- # Platform-agnostic; --enable-all macOS coverage in make_check_macos and
240- # the macOS user_settings_all.h run in make_user_settings already cover
241- # the equivalent code paths on Darwin.
211+ # Has to be dedicated function due to the sed call
242212 make_user_all :
213+ strategy :
214+ fail-fast : false
215+ matrix :
216+ os : [ ubuntu-24.04, macos-latest ]
243217 name : make user_setting.h (with sed)
244218 if : github.repository_owner == 'wolfssl'
245- runs-on : ubuntu-24.04
219+ runs-on : ${{ matrix.os }}
246220 # This should be a safe limit for the tests to run.
247221 timeout-minutes : 14
248222 steps :
249223 - uses : actions/checkout@v4
224+ - if : ${{ matrix.os == 'macos-latest' }}
225+ run : brew install automake libtool
250226 - run : ./autogen.sh
251227 - name : user_settings_all.h with compatibility layer
252228 run : |
0 commit comments