blob: 477faaeb1cf2e17a5e7e165d4e1bf6288b8d47b6 [file] [log] [blame]
Kenny Rootb8494592015-09-25 02:29:14 +00001include_directories(../include)
Adam Langleyd9e397b2015-01-22 14:27:53 -08002
Robert Sloan8ff03552017-06-14 12:40:58 -07003if(NOT OPENSSL_NO_ASM)
4 if(UNIX)
Robert Sloand9e572d2018-08-27 12:27:00 -07005 if(${ARCH} STREQUAL "aarch64")
Robert Sloan8ff03552017-06-14 12:40:58 -07006 # The "armx" Perl scripts look for "64" in the style argument
7 # in order to decide whether to generate 32- or 64-bit asm.
Robert Sloand9e572d2018-08-27 12:27:00 -07008 if(APPLE)
Robert Sloan8ff03552017-06-14 12:40:58 -07009 set(PERLASM_STYLE ios64)
10 else()
11 set(PERLASM_STYLE linux64)
12 endif()
Robert Sloand9e572d2018-08-27 12:27:00 -070013 elseif(${ARCH} STREQUAL "arm")
14 if(APPLE)
Robert Sloan8ff03552017-06-14 12:40:58 -070015 set(PERLASM_STYLE ios32)
16 else()
17 set(PERLASM_STYLE linux32)
18 endif()
Robert Sloand9e572d2018-08-27 12:27:00 -070019 elseif(${ARCH} STREQUAL "ppc64le")
Robert Sloan8ff03552017-06-14 12:40:58 -070020 set(PERLASM_STYLE linux64le)
Robert Sloan572a4e22017-04-17 10:52:19 -070021 else()
Robert Sloand9e572d2018-08-27 12:27:00 -070022 if(${ARCH} STREQUAL "x86")
Robert Sloan8ff03552017-06-14 12:40:58 -070023 set(PERLASM_FLAGS "-fPIC -DOPENSSL_IA32_SSE2")
24 endif()
Robert Sloand9e572d2018-08-27 12:27:00 -070025 if(APPLE)
Robert Sloan8ff03552017-06-14 12:40:58 -070026 set(PERLASM_STYLE macosx)
27 else()
28 set(PERLASM_STYLE elf)
29 endif()
Robert Sloan572a4e22017-04-17 10:52:19 -070030 endif()
Robert Sloan8ff03552017-06-14 12:40:58 -070031 set(ASM_EXT S)
32 enable_language(ASM)
33 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
Robert Sloan572a4e22017-04-17 10:52:19 -070034
Robert Sloan8ff03552017-06-14 12:40:58 -070035 # Clang's integerated assembler does not support debug symbols.
36 if(NOT CMAKE_ASM_COMPILER_ID MATCHES "Clang")
37 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,-g")
38 endif()
Adam Langleyd9e397b2015-01-22 14:27:53 -080039
Robert Sloan8ff03552017-06-14 12:40:58 -070040 # CMake does not add -isysroot and -arch flags to assembly.
Robert Sloand9e572d2018-08-27 12:27:00 -070041 if(APPLE)
42 if(CMAKE_OSX_SYSROOT)
Robert Sloanae1abf92017-10-05 12:50:08 -070043 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -isysroot \"${CMAKE_OSX_SYSROOT}\"")
Robert Sloan8ff03552017-06-14 12:40:58 -070044 endif()
45 foreach(arch ${CMAKE_OSX_ARCHITECTURES})
46 set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}")
47 endforeach()
48 endif()
49 else()
Robert Sloand9e572d2018-08-27 12:27:00 -070050 if(${ARCH} STREQUAL "x86_64")
Robert Sloan8ff03552017-06-14 12:40:58 -070051 set(PERLASM_STYLE nasm)
52 else()
53 set(PERLASM_STYLE win32n)
54 set(PERLASM_FLAGS "-DOPENSSL_IA32_SSE2")
55 endif()
Robert Sloan6e8c9592018-12-03 11:20:49 -080056 set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -gcv8")
Robert Sloan8ff03552017-06-14 12:40:58 -070057
58 # On Windows, we use the NASM output, specifically built with Yasm.
59 set(ASM_EXT asm)
60 enable_language(ASM_NASM)
61 endif()
Adam Langleyd9e397b2015-01-22 14:27:53 -080062endif()
63
64function(perlasm dest src)
Robert Sloan726e9d12018-09-11 11:45:04 -070065 get_filename_component(dir ${dest} DIRECTORY)
66 if ("${dir}" STREQUAL "")
67 set(dir ".")
68 endif()
69
Adam Langleyd9e397b2015-01-22 14:27:53 -080070 add_custom_command(
71 OUTPUT ${dest}
Robert Sloan726e9d12018-09-11 11:45:04 -070072 COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
David Benjaminc895d6b2016-08-11 13:26:41 -040073 COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${src} ${PERLASM_STYLE} ${PERLASM_FLAGS} ${ARGN} ${dest}
Adam Langleyd9e397b2015-01-22 14:27:53 -080074 DEPENDS
75 ${src}
Adam Langleye9ada862015-05-11 17:20:37 -070076 ${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl
Steven Valdezbb1ceac2016-10-07 10:34:51 -040077 ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl
Adam Langleyd9e397b2015-01-22 14:27:53 -080078 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
79 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
80 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
81 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86masm.pl
82 ${PROJECT_SOURCE_DIR}/crypto/perlasm/x86nasm.pl
83 WORKING_DIRECTORY .
84 )
85endfunction()
86
Robert Sloan572a4e22017-04-17 10:52:19 -070087add_subdirectory(fipsmodule)
Robert Sloan726e9d12018-09-11 11:45:04 -070088add_subdirectory(test)
Adam Langleyd9e397b2015-01-22 14:27:53 -080089
Pete Bentley0c61efe2019-08-13 09:32:23 +010090if(FIPS_DELOCATE OR FIPS_SHARED)
Robert Sloan572a4e22017-04-17 10:52:19 -070091 SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES EXTERNAL_OBJECT true)
92 SET_SOURCE_FILES_PROPERTIES(fipsmodule/bcm.o PROPERTIES GENERATED true)
93
94 set(
95 CRYPTO_FIPS_OBJECTS
96
97 fipsmodule/bcm.o
98 )
99endif()
100
Robert Sloan726e9d12018-09-11 11:45:04 -0700101if(${ARCH} STREQUAL "arm")
102 set(
103 CRYPTO_ARCH_SOURCES
104
105 chacha/chacha-armv4.${ASM_EXT}
106 curve25519/asm/x25519-asm-arm.S
107 poly1305/poly1305_arm_asm.S
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800108 test/trampoline-armv4.${ASM_EXT}
Robert Sloan726e9d12018-09-11 11:45:04 -0700109 )
110endif()
111
112if(${ARCH} STREQUAL "aarch64")
113 set(
114 CRYPTO_ARCH_SOURCES
115
116 chacha/chacha-armv8.${ASM_EXT}
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800117 test/trampoline-armv8.${ASM_EXT}
Pete Bentley0c61efe2019-08-13 09:32:23 +0100118 third_party/sike/asm/fp-armv8.${ASM_EXT}
Robert Sloan726e9d12018-09-11 11:45:04 -0700119 )
120endif()
121
122if(${ARCH} STREQUAL "x86")
123 set(
124 CRYPTO_ARCH_SOURCES
125
126 chacha/chacha-x86.${ASM_EXT}
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800127 test/trampoline-x86.${ASM_EXT}
Robert Sloan726e9d12018-09-11 11:45:04 -0700128 )
129endif()
130
131if(${ARCH} STREQUAL "x86_64")
132 set(
133 CRYPTO_ARCH_SOURCES
134
135 chacha/chacha-x86_64.${ASM_EXT}
136 cipher_extra/aes128gcmsiv-x86_64.${ASM_EXT}
137 cipher_extra/chacha20_poly1305_x86_64.${ASM_EXT}
Robert Sloan11c28bd2018-12-17 12:09:20 -0800138 hrss/asm/poly_rq_mul.S
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800139 test/trampoline-x86_64.${ASM_EXT}
Pete Bentley0c61efe2019-08-13 09:32:23 +0100140 third_party/sike/asm/fp-x86_64.${ASM_EXT}
Robert Sloan726e9d12018-09-11 11:45:04 -0700141 )
142endif()
143
144perlasm(chacha/chacha-armv4.${ASM_EXT} chacha/asm/chacha-armv4.pl)
145perlasm(chacha/chacha-armv8.${ASM_EXT} chacha/asm/chacha-armv8.pl)
146perlasm(chacha/chacha-x86.${ASM_EXT} chacha/asm/chacha-x86.pl)
147perlasm(chacha/chacha-x86_64.${ASM_EXT} chacha/asm/chacha-x86_64.pl)
148perlasm(cipher_extra/aes128gcmsiv-x86_64.${ASM_EXT} cipher_extra/asm/aes128gcmsiv-x86_64.pl)
149perlasm(cipher_extra/chacha20_poly1305_x86_64.${ASM_EXT} cipher_extra/asm/chacha20_poly1305_x86_64.pl)
Pete Bentley0c61efe2019-08-13 09:32:23 +0100150perlasm(third_party/sike/asm/fp-x86_64.${ASM_EXT} ../third_party/sike/asm/fp-x86_64.pl)
151perlasm(third_party/sike/asm/fp-armv8.${ASM_EXT} ../third_party/sike/asm/fp-armv8.pl)
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800152perlasm(test/trampoline-armv4.${ASM_EXT} test/asm/trampoline-armv4.pl)
153perlasm(test/trampoline-armv8.${ASM_EXT} test/asm/trampoline-armv8.pl)
154perlasm(test/trampoline-x86.${ASM_EXT} test/asm/trampoline-x86.pl)
155perlasm(test/trampoline-x86_64.${ASM_EXT} test/asm/trampoline-x86_64.pl)
Robert Sloan726e9d12018-09-11 11:45:04 -0700156
157add_custom_command(
158 OUTPUT err_data.c
159 COMMAND ${GO_EXECUTABLE} run err_data_generate.go > ${CMAKE_CURRENT_BINARY_DIR}/err_data.c
160 DEPENDS
161 err/err_data_generate.go
162 err/asn1.errordata
163 err/bio.errordata
164 err/bn.errordata
165 err/cipher.errordata
166 err/conf.errordata
167 err/dh.errordata
168 err/digest.errordata
169 err/dsa.errordata
170 err/ecdh.errordata
171 err/ecdsa.errordata
172 err/ec.errordata
173 err/engine.errordata
174 err/evp.errordata
175 err/hkdf.errordata
176 err/obj.errordata
177 err/pem.errordata
178 err/pkcs7.errordata
179 err/pkcs8.errordata
180 err/rsa.errordata
181 err/ssl.errordata
182 err/x509.errordata
183 err/x509v3.errordata
184 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/err
185)
186
Robert Sloan572a4e22017-04-17 10:52:19 -0700187add_library(
188 crypto
189
Robert Sloan726e9d12018-09-11 11:45:04 -0700190 asn1/a_bitstr.c
191 asn1/a_bool.c
192 asn1/a_d2i_fp.c
193 asn1/a_dup.c
194 asn1/a_enum.c
195 asn1/a_gentm.c
196 asn1/a_i2d_fp.c
197 asn1/a_int.c
198 asn1/a_mbstr.c
199 asn1/a_object.c
200 asn1/a_octet.c
201 asn1/a_print.c
202 asn1/a_strnid.c
203 asn1/a_time.c
204 asn1/a_type.c
205 asn1/a_utctm.c
206 asn1/a_utf8.c
207 asn1/asn1_lib.c
208 asn1/asn1_par.c
209 asn1/asn_pack.c
210 asn1/f_enum.c
211 asn1/f_int.c
212 asn1/f_string.c
213 asn1/tasn_dec.c
214 asn1/tasn_enc.c
215 asn1/tasn_fre.c
216 asn1/tasn_new.c
217 asn1/tasn_typ.c
218 asn1/tasn_utl.c
219 asn1/time_support.c
220 base64/base64.c
221 bio/bio.c
222 bio/bio_mem.c
223 bio/connect.c
224 bio/fd.c
225 bio/file.c
226 bio/hexdump.c
227 bio/pair.c
228 bio/printf.c
229 bio/socket.c
230 bio/socket_helper.c
231 bn_extra/bn_asn1.c
232 bn_extra/convert.c
233 buf/buf.c
234 bytestring/asn1_compat.c
235 bytestring/ber.c
236 bytestring/cbb.c
237 bytestring/cbs.c
238 bytestring/unicode.c
239 chacha/chacha.c
240 cipher_extra/cipher_extra.c
241 cipher_extra/derive_key.c
242 cipher_extra/e_aesccm.c
243 cipher_extra/e_aesctrhmac.c
244 cipher_extra/e_aesgcmsiv.c
245 cipher_extra/e_chacha20poly1305.c
246 cipher_extra/e_null.c
247 cipher_extra/e_rc2.c
248 cipher_extra/e_rc4.c
249 cipher_extra/e_tls.c
250 cipher_extra/tls_cbc.c
251 cmac/cmac.c
252 conf/conf.c
253 cpu-aarch64-fuchsia.c
254 cpu-aarch64-linux.c
255 cpu-arm-linux.c
256 cpu-arm.c
257 cpu-intel.c
258 cpu-ppc64le.c
259 crypto.c
260 curve25519/spake25519.c
261 dh/dh.c
262 dh/params.c
263 dh/check.c
264 dh/dh_asn1.c
265 digest_extra/digest_extra.c
266 dsa/dsa.c
267 dsa/dsa_asn1.c
268 ecdh_extra/ecdh_extra.c
269 ecdsa_extra/ecdsa_asn1.c
270 ec_extra/ec_asn1.c
271 err/err.c
272 err_data.c
273 engine/engine.c
274 evp/digestsign.c
275 evp/evp.c
276 evp/evp_asn1.c
277 evp/evp_ctx.c
278 evp/p_dsa_asn1.c
279 evp/p_ec.c
280 evp/p_ec_asn1.c
281 evp/p_ed25519.c
282 evp/p_ed25519_asn1.c
283 evp/p_rsa.c
284 evp/p_rsa_asn1.c
Pete Bentley0c61efe2019-08-13 09:32:23 +0100285 evp/p_x25519.c
286 evp/p_x25519_asn1.c
Robert Sloan726e9d12018-09-11 11:45:04 -0700287 evp/pbkdf.c
288 evp/print.c
289 evp/scrypt.c
290 evp/sign.c
291 ex_data.c
292 hkdf/hkdf.c
Robert Sloan11c28bd2018-12-17 12:09:20 -0800293 hrss/hrss.c
Robert Sloan726e9d12018-09-11 11:45:04 -0700294 lhash/lhash.c
295 mem.c
296 obj/obj.c
297 obj/obj_xref.c
298 pem/pem_all.c
299 pem/pem_info.c
300 pem/pem_lib.c
301 pem/pem_oth.c
302 pem/pem_pk8.c
303 pem/pem_pkey.c
304 pem/pem_x509.c
305 pem/pem_xaux.c
306 pkcs7/pkcs7.c
307 pkcs7/pkcs7_x509.c
308 pkcs8/pkcs8.c
309 pkcs8/pkcs8_x509.c
310 pkcs8/p5_pbev2.c
311 poly1305/poly1305.c
312 poly1305/poly1305_arm.c
313 poly1305/poly1305_vec.c
314 pool/pool.c
315 rand_extra/deterministic.c
316 rand_extra/forkunsafe.c
317 rand_extra/fuchsia.c
318 rand_extra/rand_extra.c
319 rand_extra/windows.c
320 rc4/rc4.c
321 refcount_c11.c
322 refcount_lock.c
323 rsa_extra/rsa_asn1.c
324 rsa_extra/rsa_print.c
325 stack/stack.c
Pete Bentley0c61efe2019-08-13 09:32:23 +0100326 siphash/siphash.c
Robert Sloan726e9d12018-09-11 11:45:04 -0700327 thread.c
328 thread_none.c
329 thread_pthread.c
330 thread_win.c
331 x509/a_digest.c
332 x509/a_sign.c
333 x509/a_strex.c
334 x509/a_verify.c
335 x509/algorithm.c
336 x509/asn1_gen.c
337 x509/by_dir.c
338 x509/by_file.c
339 x509/i2d_pr.c
340 x509/rsa_pss.c
341 x509/t_crl.c
342 x509/t_req.c
343 x509/t_x509.c
344 x509/t_x509a.c
345 x509/x509.c
346 x509/x509_att.c
347 x509/x509_cmp.c
348 x509/x509_d2.c
349 x509/x509_def.c
350 x509/x509_ext.c
351 x509/x509_lu.c
352 x509/x509_obj.c
353 x509/x509_r2x.c
354 x509/x509_req.c
355 x509/x509_set.c
356 x509/x509_trs.c
357 x509/x509_txt.c
358 x509/x509_v3.c
359 x509/x509_vfy.c
360 x509/x509_vpm.c
361 x509/x509cset.c
362 x509/x509name.c
363 x509/x509rset.c
364 x509/x509spki.c
365 x509/x_algor.c
366 x509/x_all.c
367 x509/x_attrib.c
368 x509/x_crl.c
369 x509/x_exten.c
370 x509/x_info.c
371 x509/x_name.c
372 x509/x_pkey.c
373 x509/x_pubkey.c
374 x509/x_req.c
375 x509/x_sig.c
376 x509/x_spki.c
377 x509/x_val.c
378 x509/x_x509.c
379 x509/x_x509a.c
380 x509v3/pcy_cache.c
381 x509v3/pcy_data.c
382 x509v3/pcy_lib.c
383 x509v3/pcy_map.c
384 x509v3/pcy_node.c
385 x509v3/pcy_tree.c
386 x509v3/v3_akey.c
387 x509v3/v3_akeya.c
388 x509v3/v3_alt.c
389 x509v3/v3_bcons.c
390 x509v3/v3_bitst.c
391 x509v3/v3_conf.c
392 x509v3/v3_cpols.c
393 x509v3/v3_crld.c
394 x509v3/v3_enum.c
395 x509v3/v3_extku.c
396 x509v3/v3_genn.c
397 x509v3/v3_ia5.c
398 x509v3/v3_info.c
399 x509v3/v3_int.c
400 x509v3/v3_lib.c
401 x509v3/v3_ncons.c
402 x509v3/v3_ocsp.c
403 x509v3/v3_pci.c
404 x509v3/v3_pcia.c
405 x509v3/v3_pcons.c
406 x509v3/v3_pku.c
407 x509v3/v3_pmaps.c
408 x509v3/v3_prn.c
409 x509v3/v3_purp.c
410 x509v3/v3_skey.c
411 x509v3/v3_sxnet.c
412 x509v3/v3_utl.c
413 ../third_party/fiat/curve25519.c
Pete Bentley0c61efe2019-08-13 09:32:23 +0100414 ../third_party/sike/fpx.c
415 ../third_party/sike/isogeny.c
416 ../third_party/sike/curve_params.c
417 ../third_party/sike/sike.c
418 ../third_party/sike/asm/fp_generic.c
Robert Sloan572a4e22017-04-17 10:52:19 -0700419
Robert Sloan726e9d12018-09-11 11:45:04 -0700420 $<TARGET_OBJECTS:fipsmodule>
421
422 ${CRYPTO_ARCH_SOURCES}
Robert Sloan572a4e22017-04-17 10:52:19 -0700423 ${CRYPTO_FIPS_OBJECTS}
Adam Langleyd9e397b2015-01-22 14:27:53 -0800424)
425
Pete Bentley0c61efe2019-08-13 09:32:23 +0100426if(FIPS_SHARED)
427 # Rewrite libcrypto.so to inject the correct module hash value. This assumes
428 # UNIX-style library naming, but we only support FIPS mode on Linux anyway.
429 add_custom_command(
430 TARGET crypto POST_BUILD
431 COMMAND ${GO_EXECUTABLE} run
432 ${CMAKE_CURRENT_SOURCE_DIR}/../util/fipstools/inject_hash/inject_hash.go
433 -o libcrypto.so -in-object libcrypto.so
434 # The DEPENDS argument to a POST_BUILD rule appears to be ignored. Thus
435 # go_executable isn't used (as it doesn't get built), but we list this
436 # dependency anyway in case it starts working in some CMake version.
437 DEPENDS ../util/fipstools/inject_hash/inject_hash.go
438 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
439 )
440endif()
441
Robert Sloan726e9d12018-09-11 11:45:04 -0700442add_dependencies(crypto global_target)
443
Pete Bentley0c61efe2019-08-13 09:32:23 +0100444if(FIPS_DELOCATE OR FIPS_SHARED)
Robert Sloan572a4e22017-04-17 10:52:19 -0700445 add_dependencies(crypto bcm_o_target)
446endif()
447
448SET_TARGET_PROPERTIES(crypto PROPERTIES LINKER_LANGUAGE C)
449
Adam Langleye9ada862015-05-11 17:20:37 -0700450if(NOT MSVC AND NOT ANDROID)
451 target_link_libraries(crypto pthread)
452endif()
453
Adam Vartanianbfcf3a72018-08-10 14:55:24 +0100454# Every target depends on crypto, so we add libcxx as a dependency here to
455# simplify injecting it everywhere.
456if(USE_CUSTOM_LIBCXX)
457 target_link_libraries(crypto libcxx)
458endif()
459
David Benjaminf31229b2017-01-25 14:08:15 -0500460add_executable(
461 crypto_test
462
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800463 abi_self_test.cc
Robert Sloan8ecb7cd2017-03-21 09:39:01 -0700464 asn1/asn1_test.cc
Robert Sloan572a4e22017-04-17 10:52:19 -0700465 base64/base64_test.cc
Robert Sloan921ef2c2017-10-17 09:02:20 -0700466 buf/buf_test.cc
Robert Sloan6d0d00e2017-03-27 07:13:07 -0700467 bio/bio_test.cc
Robert Sloan572a4e22017-04-17 10:52:19 -0700468 bytestring/bytestring_test.cc
Robert Sloana94fe052017-02-21 08:49:28 -0800469 chacha/chacha_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700470 cipher_extra/aead_test.cc
471 cipher_extra/cipher_test.cc
Robert Sloan2424d842017-05-01 07:46:28 -0700472 cmac/cmac_test.cc
Robert Sloan9254e682017-04-24 09:42:06 -0700473 compiler_test.cc
Robert Sloan6d0d00e2017-03-27 07:13:07 -0700474 constant_time_test.cc
Robert Sloan726e9d12018-09-11 11:45:04 -0700475 cpu-arm-linux_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700476 curve25519/ed25519_test.cc
Robert Sloan2424d842017-05-01 07:46:28 -0700477 curve25519/spake25519_test.cc
Robert Sloan7d422bc2017-03-06 10:04:29 -0800478 curve25519/x25519_test.cc
Adam Vartanianbfcf3a72018-08-10 14:55:24 +0100479 ecdh_extra/ecdh_test.cc
David Benjaminf31229b2017-01-25 14:08:15 -0500480 dh/dh_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700481 digest_extra/digest_test.cc
David Benjaminf31229b2017-01-25 14:08:15 -0500482 dsa/dsa_test.cc
Robert Sloan5d625782017-02-13 09:55:39 -0800483 err/err_test.cc
Robert Sloan7d422bc2017-03-06 10:04:29 -0800484 evp/evp_extra_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700485 evp/evp_test.cc
486 evp/pbkdf_test.cc
487 evp/scrypt_test.cc
488 fipsmodule/aes/aes_test.cc
489 fipsmodule/bn/bn_test.cc
490 fipsmodule/ec/ec_test.cc
491 fipsmodule/ec/p256-x86_64_test.cc
492 fipsmodule/ecdsa/ecdsa_test.cc
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800493 fipsmodule/md5/md5_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700494 fipsmodule/modes/gcm_test.cc
Robert Sloan9254e682017-04-24 09:42:06 -0700495 fipsmodule/rand/ctrdrbg_test.cc
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800496 fipsmodule/sha/sha_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700497 hkdf/hkdf_test.cc
498 hmac_extra/hmac_test.cc
Robert Sloan11c28bd2018-12-17 12:09:20 -0800499 hrss/hrss_test.cc
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800500 impl_dispatch_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700501 lhash/lhash_test.cc
502 obj/obj_test.cc
Robert Sloand9e572d2018-08-27 12:27:00 -0700503 pem/pem_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700504 pkcs7/pkcs7_test.cc
505 pkcs8/pkcs8_test.cc
506 pkcs8/pkcs12_test.cc
507 poly1305/poly1305_test.cc
508 pool/pool_test.cc
Robert Sloan726e9d12018-09-11 11:45:04 -0700509 rand_extra/rand_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700510 refcount_test.cc
511 rsa_extra/rsa_test.cc
Robert Sloan978112c2018-01-22 12:53:01 -0800512 self_test.cc
Robert Sloanf068def2018-10-10 18:45:40 -0700513 stack/stack_test.cc
Pete Bentley0c61efe2019-08-13 09:32:23 +0100514 siphash/siphash_test.cc
Robert Sloan8ff03552017-06-14 12:40:58 -0700515 test/file_test_gtest.cc
516 thread_test.cc
517 x509/x509_test.cc
Adam Vartanianbfcf3a72018-08-10 14:55:24 +0100518 x509/x509_time_test.cc
Robert Sloana12bf462017-07-17 07:08:26 -0700519 x509v3/tab_test.cc
520 x509v3/v3name_test.cc
Pete Bentley0c61efe2019-08-13 09:32:23 +0100521 ../third_party/sike/sike_test.cc
David Benjaminf31229b2017-01-25 14:08:15 -0500522
Robert Sloan8ff03552017-06-14 12:40:58 -0700523 $<TARGET_OBJECTS:crypto_test_data>
Robert Sloana450c922018-01-08 10:35:32 -0800524 $<TARGET_OBJECTS:boringssl_gtest_main>
David Benjaminf31229b2017-01-25 14:08:15 -0500525)
526
Robert Sloan726e9d12018-09-11 11:45:04 -0700527add_dependencies(crypto_test global_target)
528
Robert Sloan4c22c5f2019-03-01 15:53:37 -0800529target_link_libraries(crypto_test test_support_lib boringssl_gtest crypto)
Robert Sloand9e572d2018-08-27 12:27:00 -0700530if(WIN32)
Robert Sloan6d0d00e2017-03-27 07:13:07 -0700531 target_link_libraries(crypto_test ws2_32)
532endif()
David Benjaminf31229b2017-01-25 14:08:15 -0500533add_dependencies(all_tests crypto_test)