xref: /aosp_15_r20/external/boringssl/CMakeLists.txt (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1# Copyright (c) 2015, Google Inc.
2#
3# Permission to use, copy, modify, and/or distribute this software for any
4# purpose with or without fee is hereby granted, provided that the above
5# copyright notice and this permission notice appear in all copies.
6#
7# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
15# This file is created by generate_build_files.py. Do not edit manually.
16
17cmake_minimum_required(VERSION 3.12)
18
19project(BoringSSL LANGUAGES C CXX)
20
21set(CMAKE_CXX_STANDARD 14)
22set(CMAKE_CXX_STANDARD_REQUIRED ON)
23set(CMAKE_C_STANDARD 11)
24set(CMAKE_C_STANDARD_REQUIRED ON)
25if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
26  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fno-common -fno-exceptions -fno-rtti")
27  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fno-common")
28endif()
29
30# pthread_rwlock_t requires a feature flag on glibc.
31if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
32  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE=700")
33endif()
34
35if(WIN32)
36  add_definitions(-D_HAS_EXCEPTIONS=0)
37  add_definitions(-DWIN32_LEAN_AND_MEAN)
38  add_definitions(-DNOMINMAX)
39  # Allow use of fopen.
40  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
41endif()
42
43add_definitions(-DBORINGSSL_IMPLEMENTATION)
44
45if(OPENSSL_NO_ASM)
46  add_definitions(-DOPENSSL_NO_ASM)
47else()
48  # On x86 and x86_64 Windows, we use the NASM output.
49  if(WIN32 AND CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|x86_64|amd64|x86|i[3-6]86")
50    enable_language(ASM_NASM)
51    set(OPENSSL_NASM TRUE)
52    set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -gcv8")
53  else()
54    enable_language(ASM)
55    set(OPENSSL_ASM TRUE)
56    # Work around https://gitlab.kitware.com/cmake/cmake/-/issues/20771 in older
57    # CMake versions.
58    if(APPLE AND CMAKE_VERSION VERSION_LESS 3.19)
59      if(CMAKE_OSX_SYSROOT)
60        set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -isysroot \"${CMAKE_OSX_SYSROOT}\"")
61      endif()
62      foreach(arch ${CMAKE_OSX_ARCHITECTURES})
63        set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -arch ${arch}")
64      endforeach()
65    endif()
66    if(NOT WIN32)
67      set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,--noexecstack")
68    endif()
69    # Clang's integerated assembler does not support debug symbols.
70    if(NOT CMAKE_ASM_COMPILER_ID MATCHES "Clang")
71      set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -Wa,-g")
72    endif()
73  endif()
74endif()
75
76if(BUILD_SHARED_LIBS)
77  add_definitions(-DBORINGSSL_SHARED_LIBRARY)
78  # Enable position-independent code globally. This is needed because
79  # some library targets are OBJECT libraries.
80  set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
81endif()
82
83set(
84  CRYPTO_SOURCES_ASM
85
86  src/crypto/curve25519/asm/x25519-asm-arm.S
87  src/crypto/hrss/asm/poly_rq_mul.S
88  src/crypto/poly1305/poly1305_arm_asm.S
89  src/gen/bcm/aesni-gcm-x86_64-apple.S
90  src/gen/bcm/aesni-gcm-x86_64-linux.S
91  src/gen/bcm/aesni-x86-apple.S
92  src/gen/bcm/aesni-x86-linux.S
93  src/gen/bcm/aesni-x86_64-apple.S
94  src/gen/bcm/aesni-x86_64-linux.S
95  src/gen/bcm/aesv8-armv7-linux.S
96  src/gen/bcm/aesv8-armv8-apple.S
97  src/gen/bcm/aesv8-armv8-linux.S
98  src/gen/bcm/aesv8-armv8-win.S
99  src/gen/bcm/aesv8-gcm-armv8-apple.S
100  src/gen/bcm/aesv8-gcm-armv8-linux.S
101  src/gen/bcm/aesv8-gcm-armv8-win.S
102  src/gen/bcm/armv4-mont-linux.S
103  src/gen/bcm/armv8-mont-apple.S
104  src/gen/bcm/armv8-mont-linux.S
105  src/gen/bcm/armv8-mont-win.S
106  src/gen/bcm/bn-586-apple.S
107  src/gen/bcm/bn-586-linux.S
108  src/gen/bcm/bn-armv8-apple.S
109  src/gen/bcm/bn-armv8-linux.S
110  src/gen/bcm/bn-armv8-win.S
111  src/gen/bcm/bsaes-armv7-linux.S
112  src/gen/bcm/co-586-apple.S
113  src/gen/bcm/co-586-linux.S
114  src/gen/bcm/ghash-armv4-linux.S
115  src/gen/bcm/ghash-neon-armv8-apple.S
116  src/gen/bcm/ghash-neon-armv8-linux.S
117  src/gen/bcm/ghash-neon-armv8-win.S
118  src/gen/bcm/ghash-ssse3-x86-apple.S
119  src/gen/bcm/ghash-ssse3-x86-linux.S
120  src/gen/bcm/ghash-ssse3-x86_64-apple.S
121  src/gen/bcm/ghash-ssse3-x86_64-linux.S
122  src/gen/bcm/ghash-x86-apple.S
123  src/gen/bcm/ghash-x86-linux.S
124  src/gen/bcm/ghash-x86_64-apple.S
125  src/gen/bcm/ghash-x86_64-linux.S
126  src/gen/bcm/ghashv8-armv7-linux.S
127  src/gen/bcm/ghashv8-armv8-apple.S
128  src/gen/bcm/ghashv8-armv8-linux.S
129  src/gen/bcm/ghashv8-armv8-win.S
130  src/gen/bcm/md5-586-apple.S
131  src/gen/bcm/md5-586-linux.S
132  src/gen/bcm/md5-x86_64-apple.S
133  src/gen/bcm/md5-x86_64-linux.S
134  src/gen/bcm/p256-armv8-asm-apple.S
135  src/gen/bcm/p256-armv8-asm-linux.S
136  src/gen/bcm/p256-armv8-asm-win.S
137  src/gen/bcm/p256-x86_64-asm-apple.S
138  src/gen/bcm/p256-x86_64-asm-linux.S
139  src/gen/bcm/p256_beeu-armv8-asm-apple.S
140  src/gen/bcm/p256_beeu-armv8-asm-linux.S
141  src/gen/bcm/p256_beeu-armv8-asm-win.S
142  src/gen/bcm/p256_beeu-x86_64-asm-apple.S
143  src/gen/bcm/p256_beeu-x86_64-asm-linux.S
144  src/gen/bcm/rdrand-x86_64-apple.S
145  src/gen/bcm/rdrand-x86_64-linux.S
146  src/gen/bcm/rsaz-avx2-apple.S
147  src/gen/bcm/rsaz-avx2-linux.S
148  src/gen/bcm/sha1-586-apple.S
149  src/gen/bcm/sha1-586-linux.S
150  src/gen/bcm/sha1-armv4-large-linux.S
151  src/gen/bcm/sha1-armv8-apple.S
152  src/gen/bcm/sha1-armv8-linux.S
153  src/gen/bcm/sha1-armv8-win.S
154  src/gen/bcm/sha1-x86_64-apple.S
155  src/gen/bcm/sha1-x86_64-linux.S
156  src/gen/bcm/sha256-586-apple.S
157  src/gen/bcm/sha256-586-linux.S
158  src/gen/bcm/sha256-armv4-linux.S
159  src/gen/bcm/sha256-armv8-apple.S
160  src/gen/bcm/sha256-armv8-linux.S
161  src/gen/bcm/sha256-armv8-win.S
162  src/gen/bcm/sha256-x86_64-apple.S
163  src/gen/bcm/sha256-x86_64-linux.S
164  src/gen/bcm/sha512-586-apple.S
165  src/gen/bcm/sha512-586-linux.S
166  src/gen/bcm/sha512-armv4-linux.S
167  src/gen/bcm/sha512-armv8-apple.S
168  src/gen/bcm/sha512-armv8-linux.S
169  src/gen/bcm/sha512-armv8-win.S
170  src/gen/bcm/sha512-x86_64-apple.S
171  src/gen/bcm/sha512-x86_64-linux.S
172  src/gen/bcm/vpaes-armv7-linux.S
173  src/gen/bcm/vpaes-armv8-apple.S
174  src/gen/bcm/vpaes-armv8-linux.S
175  src/gen/bcm/vpaes-armv8-win.S
176  src/gen/bcm/vpaes-x86-apple.S
177  src/gen/bcm/vpaes-x86-linux.S
178  src/gen/bcm/vpaes-x86_64-apple.S
179  src/gen/bcm/vpaes-x86_64-linux.S
180  src/gen/bcm/x86-mont-apple.S
181  src/gen/bcm/x86-mont-linux.S
182  src/gen/bcm/x86_64-mont-apple.S
183  src/gen/bcm/x86_64-mont-linux.S
184  src/gen/bcm/x86_64-mont5-apple.S
185  src/gen/bcm/x86_64-mont5-linux.S
186  src/gen/crypto/aes128gcmsiv-x86_64-apple.S
187  src/gen/crypto/aes128gcmsiv-x86_64-linux.S
188  src/gen/crypto/chacha-armv4-linux.S
189  src/gen/crypto/chacha-armv8-apple.S
190  src/gen/crypto/chacha-armv8-linux.S
191  src/gen/crypto/chacha-armv8-win.S
192  src/gen/crypto/chacha-x86-apple.S
193  src/gen/crypto/chacha-x86-linux.S
194  src/gen/crypto/chacha-x86_64-apple.S
195  src/gen/crypto/chacha-x86_64-linux.S
196  src/gen/crypto/chacha20_poly1305_armv8-apple.S
197  src/gen/crypto/chacha20_poly1305_armv8-linux.S
198  src/gen/crypto/chacha20_poly1305_armv8-win.S
199  src/gen/crypto/chacha20_poly1305_x86_64-apple.S
200  src/gen/crypto/chacha20_poly1305_x86_64-linux.S
201  src/gen/test_support/trampoline-armv4-linux.S
202  src/gen/test_support/trampoline-armv8-apple.S
203  src/gen/test_support/trampoline-armv8-linux.S
204  src/gen/test_support/trampoline-armv8-win.S
205  src/gen/test_support/trampoline-x86-apple.S
206  src/gen/test_support/trampoline-x86-linux.S
207  src/gen/test_support/trampoline-x86_64-apple.S
208  src/gen/test_support/trampoline-x86_64-linux.S
209  src/third_party/fiat/asm/fiat_curve25519_adx_mul.S
210  src/third_party/fiat/asm/fiat_curve25519_adx_square.S
211  src/third_party/fiat/asm/fiat_p256_adx_mul.S
212  src/third_party/fiat/asm/fiat_p256_adx_sqr.S
213)
214
215set(
216  CRYPTO_SOURCES_NASM
217
218  src/gen/bcm/aesni-gcm-x86_64-win.asm
219  src/gen/bcm/aesni-x86-win.asm
220  src/gen/bcm/aesni-x86_64-win.asm
221  src/gen/bcm/bn-586-win.asm
222  src/gen/bcm/co-586-win.asm
223  src/gen/bcm/ghash-ssse3-x86-win.asm
224  src/gen/bcm/ghash-ssse3-x86_64-win.asm
225  src/gen/bcm/ghash-x86-win.asm
226  src/gen/bcm/ghash-x86_64-win.asm
227  src/gen/bcm/md5-586-win.asm
228  src/gen/bcm/md5-x86_64-win.asm
229  src/gen/bcm/p256-x86_64-asm-win.asm
230  src/gen/bcm/p256_beeu-x86_64-asm-win.asm
231  src/gen/bcm/rdrand-x86_64-win.asm
232  src/gen/bcm/rsaz-avx2-win.asm
233  src/gen/bcm/sha1-586-win.asm
234  src/gen/bcm/sha1-x86_64-win.asm
235  src/gen/bcm/sha256-586-win.asm
236  src/gen/bcm/sha256-x86_64-win.asm
237  src/gen/bcm/sha512-586-win.asm
238  src/gen/bcm/sha512-x86_64-win.asm
239  src/gen/bcm/vpaes-x86-win.asm
240  src/gen/bcm/vpaes-x86_64-win.asm
241  src/gen/bcm/x86-mont-win.asm
242  src/gen/bcm/x86_64-mont-win.asm
243  src/gen/bcm/x86_64-mont5-win.asm
244  src/gen/crypto/aes128gcmsiv-x86_64-win.asm
245  src/gen/crypto/chacha-x86-win.asm
246  src/gen/crypto/chacha-x86_64-win.asm
247  src/gen/crypto/chacha20_poly1305_x86_64-win.asm
248  src/gen/test_support/trampoline-x86-win.asm
249  src/gen/test_support/trampoline-x86_64-win.asm
250)
251
252if(OPENSSL_ASM)
253  list(APPEND CRYPTO_SOURCES_ASM_USED ${CRYPTO_SOURCES_ASM})
254endif()
255if(OPENSSL_NASM)
256  list(APPEND CRYPTO_SOURCES_ASM_USED ${CRYPTO_SOURCES_NASM})
257endif()
258
259add_library(
260  crypto
261
262  ${CRYPTO_SOURCES_ASM_USED}
263  src/crypto/asn1/a_bitstr.c
264  src/crypto/asn1/a_bool.c
265  src/crypto/asn1/a_d2i_fp.c
266  src/crypto/asn1/a_dup.c
267  src/crypto/asn1/a_gentm.c
268  src/crypto/asn1/a_i2d_fp.c
269  src/crypto/asn1/a_int.c
270  src/crypto/asn1/a_mbstr.c
271  src/crypto/asn1/a_object.c
272  src/crypto/asn1/a_octet.c
273  src/crypto/asn1/a_strex.c
274  src/crypto/asn1/a_strnid.c
275  src/crypto/asn1/a_time.c
276  src/crypto/asn1/a_type.c
277  src/crypto/asn1/a_utctm.c
278  src/crypto/asn1/asn1_lib.c
279  src/crypto/asn1/asn1_par.c
280  src/crypto/asn1/asn_pack.c
281  src/crypto/asn1/f_int.c
282  src/crypto/asn1/f_string.c
283  src/crypto/asn1/posix_time.c
284  src/crypto/asn1/tasn_dec.c
285  src/crypto/asn1/tasn_enc.c
286  src/crypto/asn1/tasn_fre.c
287  src/crypto/asn1/tasn_new.c
288  src/crypto/asn1/tasn_typ.c
289  src/crypto/asn1/tasn_utl.c
290  src/crypto/base64/base64.c
291  src/crypto/bio/bio.c
292  src/crypto/bio/bio_mem.c
293  src/crypto/bio/connect.c
294  src/crypto/bio/errno.c
295  src/crypto/bio/fd.c
296  src/crypto/bio/file.c
297  src/crypto/bio/hexdump.c
298  src/crypto/bio/pair.c
299  src/crypto/bio/printf.c
300  src/crypto/bio/socket.c
301  src/crypto/bio/socket_helper.c
302  src/crypto/blake2/blake2.c
303  src/crypto/bn_extra/bn_asn1.c
304  src/crypto/bn_extra/convert.c
305  src/crypto/buf/buf.c
306  src/crypto/bytestring/asn1_compat.c
307  src/crypto/bytestring/ber.c
308  src/crypto/bytestring/cbb.c
309  src/crypto/bytestring/cbs.c
310  src/crypto/bytestring/unicode.c
311  src/crypto/chacha/chacha.c
312  src/crypto/cipher_extra/cipher_extra.c
313  src/crypto/cipher_extra/derive_key.c
314  src/crypto/cipher_extra/e_aesctrhmac.c
315  src/crypto/cipher_extra/e_aesgcmsiv.c
316  src/crypto/cipher_extra/e_chacha20poly1305.c
317  src/crypto/cipher_extra/e_des.c
318  src/crypto/cipher_extra/e_null.c
319  src/crypto/cipher_extra/e_rc2.c
320  src/crypto/cipher_extra/e_rc4.c
321  src/crypto/cipher_extra/e_tls.c
322  src/crypto/cipher_extra/tls_cbc.c
323  src/crypto/conf/conf.c
324  src/crypto/cpu_aarch64_apple.c
325  src/crypto/cpu_aarch64_fuchsia.c
326  src/crypto/cpu_aarch64_linux.c
327  src/crypto/cpu_aarch64_openbsd.c
328  src/crypto/cpu_aarch64_sysreg.c
329  src/crypto/cpu_aarch64_win.c
330  src/crypto/cpu_arm_freebsd.c
331  src/crypto/cpu_arm_linux.c
332  src/crypto/cpu_intel.c
333  src/crypto/crypto.c
334  src/crypto/curve25519/curve25519.c
335  src/crypto/curve25519/curve25519_64_adx.c
336  src/crypto/curve25519/spake25519.c
337  src/crypto/des/des.c
338  src/crypto/dh_extra/dh_asn1.c
339  src/crypto/dh_extra/params.c
340  src/crypto/digest_extra/digest_extra.c
341  src/crypto/dilithium/dilithium.c
342  src/crypto/dsa/dsa.c
343  src/crypto/dsa/dsa_asn1.c
344  src/crypto/ec_extra/ec_asn1.c
345  src/crypto/ec_extra/ec_derive.c
346  src/crypto/ec_extra/hash_to_curve.c
347  src/crypto/ecdh_extra/ecdh_extra.c
348  src/crypto/ecdsa_extra/ecdsa_asn1.c
349  src/crypto/engine/engine.c
350  src/crypto/err/err.c
351  src/crypto/evp/evp.c
352  src/crypto/evp/evp_asn1.c
353  src/crypto/evp/evp_ctx.c
354  src/crypto/evp/p_dh.c
355  src/crypto/evp/p_dh_asn1.c
356  src/crypto/evp/p_dsa_asn1.c
357  src/crypto/evp/p_ec.c
358  src/crypto/evp/p_ec_asn1.c
359  src/crypto/evp/p_ed25519.c
360  src/crypto/evp/p_ed25519_asn1.c
361  src/crypto/evp/p_hkdf.c
362  src/crypto/evp/p_rsa.c
363  src/crypto/evp/p_rsa_asn1.c
364  src/crypto/evp/p_x25519.c
365  src/crypto/evp/p_x25519_asn1.c
366  src/crypto/evp/pbkdf.c
367  src/crypto/evp/print.c
368  src/crypto/evp/scrypt.c
369  src/crypto/evp/sign.c
370  src/crypto/ex_data.c
371  src/crypto/fipsmodule/bcm.c
372  src/crypto/fipsmodule/fips_shared_support.c
373  src/crypto/hpke/hpke.c
374  src/crypto/hrss/hrss.c
375  src/crypto/keccak/keccak.c
376  src/crypto/kyber/kyber.c
377  src/crypto/lhash/lhash.c
378  src/crypto/mem.c
379  src/crypto/obj/obj.c
380  src/crypto/obj/obj_xref.c
381  src/crypto/pem/pem_all.c
382  src/crypto/pem/pem_info.c
383  src/crypto/pem/pem_lib.c
384  src/crypto/pem/pem_oth.c
385  src/crypto/pem/pem_pk8.c
386  src/crypto/pem/pem_pkey.c
387  src/crypto/pem/pem_x509.c
388  src/crypto/pem/pem_xaux.c
389  src/crypto/pkcs7/pkcs7.c
390  src/crypto/pkcs7/pkcs7_x509.c
391  src/crypto/pkcs8/p5_pbev2.c
392  src/crypto/pkcs8/pkcs8.c
393  src/crypto/pkcs8/pkcs8_x509.c
394  src/crypto/poly1305/poly1305.c
395  src/crypto/poly1305/poly1305_arm.c
396  src/crypto/poly1305/poly1305_vec.c
397  src/crypto/pool/pool.c
398  src/crypto/rand_extra/deterministic.c
399  src/crypto/rand_extra/forkunsafe.c
400  src/crypto/rand_extra/getentropy.c
401  src/crypto/rand_extra/ios.c
402  src/crypto/rand_extra/passive.c
403  src/crypto/rand_extra/rand_extra.c
404  src/crypto/rand_extra/trusty.c
405  src/crypto/rand_extra/windows.c
406  src/crypto/rc4/rc4.c
407  src/crypto/refcount.c
408  src/crypto/rsa_extra/rsa_asn1.c
409  src/crypto/rsa_extra/rsa_crypt.c
410  src/crypto/rsa_extra/rsa_print.c
411  src/crypto/siphash/siphash.c
412  src/crypto/spx/address.c
413  src/crypto/spx/fors.c
414  src/crypto/spx/merkle.c
415  src/crypto/spx/spx.c
416  src/crypto/spx/spx_util.c
417  src/crypto/spx/thash.c
418  src/crypto/spx/wots.c
419  src/crypto/stack/stack.c
420  src/crypto/thread.c
421  src/crypto/thread_none.c
422  src/crypto/thread_pthread.c
423  src/crypto/thread_win.c
424  src/crypto/trust_token/pmbtoken.c
425  src/crypto/trust_token/trust_token.c
426  src/crypto/trust_token/voprf.c
427  src/crypto/x509/a_digest.c
428  src/crypto/x509/a_sign.c
429  src/crypto/x509/a_verify.c
430  src/crypto/x509/algorithm.c
431  src/crypto/x509/asn1_gen.c
432  src/crypto/x509/by_dir.c
433  src/crypto/x509/by_file.c
434  src/crypto/x509/i2d_pr.c
435  src/crypto/x509/name_print.c
436  src/crypto/x509/policy.c
437  src/crypto/x509/rsa_pss.c
438  src/crypto/x509/t_crl.c
439  src/crypto/x509/t_req.c
440  src/crypto/x509/t_x509.c
441  src/crypto/x509/t_x509a.c
442  src/crypto/x509/v3_akey.c
443  src/crypto/x509/v3_akeya.c
444  src/crypto/x509/v3_alt.c
445  src/crypto/x509/v3_bcons.c
446  src/crypto/x509/v3_bitst.c
447  src/crypto/x509/v3_conf.c
448  src/crypto/x509/v3_cpols.c
449  src/crypto/x509/v3_crld.c
450  src/crypto/x509/v3_enum.c
451  src/crypto/x509/v3_extku.c
452  src/crypto/x509/v3_genn.c
453  src/crypto/x509/v3_ia5.c
454  src/crypto/x509/v3_info.c
455  src/crypto/x509/v3_int.c
456  src/crypto/x509/v3_lib.c
457  src/crypto/x509/v3_ncons.c
458  src/crypto/x509/v3_ocsp.c
459  src/crypto/x509/v3_pcons.c
460  src/crypto/x509/v3_pmaps.c
461  src/crypto/x509/v3_prn.c
462  src/crypto/x509/v3_purp.c
463  src/crypto/x509/v3_skey.c
464  src/crypto/x509/v3_utl.c
465  src/crypto/x509/x509.c
466  src/crypto/x509/x509_att.c
467  src/crypto/x509/x509_cmp.c
468  src/crypto/x509/x509_d2.c
469  src/crypto/x509/x509_def.c
470  src/crypto/x509/x509_ext.c
471  src/crypto/x509/x509_lu.c
472  src/crypto/x509/x509_obj.c
473  src/crypto/x509/x509_req.c
474  src/crypto/x509/x509_set.c
475  src/crypto/x509/x509_trs.c
476  src/crypto/x509/x509_txt.c
477  src/crypto/x509/x509_v3.c
478  src/crypto/x509/x509_vfy.c
479  src/crypto/x509/x509_vpm.c
480  src/crypto/x509/x509cset.c
481  src/crypto/x509/x509name.c
482  src/crypto/x509/x509rset.c
483  src/crypto/x509/x509spki.c
484  src/crypto/x509/x_algor.c
485  src/crypto/x509/x_all.c
486  src/crypto/x509/x_attrib.c
487  src/crypto/x509/x_crl.c
488  src/crypto/x509/x_exten.c
489  src/crypto/x509/x_name.c
490  src/crypto/x509/x_pubkey.c
491  src/crypto/x509/x_req.c
492  src/crypto/x509/x_sig.c
493  src/crypto/x509/x_spki.c
494  src/crypto/x509/x_val.c
495  src/crypto/x509/x_x509.c
496  src/crypto/x509/x_x509a.c
497  src/gen/crypto/err_data.c
498)
499
500target_include_directories(crypto PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/include>)
501
502add_library(
503  ssl
504
505  src/ssl/bio_ssl.cc
506  src/ssl/d1_both.cc
507  src/ssl/d1_lib.cc
508  src/ssl/d1_pkt.cc
509  src/ssl/d1_srtp.cc
510  src/ssl/dtls_method.cc
511  src/ssl/dtls_record.cc
512  src/ssl/encrypted_client_hello.cc
513  src/ssl/extensions.cc
514  src/ssl/handoff.cc
515  src/ssl/handshake.cc
516  src/ssl/handshake_client.cc
517  src/ssl/handshake_server.cc
518  src/ssl/s3_both.cc
519  src/ssl/s3_lib.cc
520  src/ssl/s3_pkt.cc
521  src/ssl/ssl_aead_ctx.cc
522  src/ssl/ssl_asn1.cc
523  src/ssl/ssl_buffer.cc
524  src/ssl/ssl_cert.cc
525  src/ssl/ssl_cipher.cc
526  src/ssl/ssl_credential.cc
527  src/ssl/ssl_file.cc
528  src/ssl/ssl_key_share.cc
529  src/ssl/ssl_lib.cc
530  src/ssl/ssl_privkey.cc
531  src/ssl/ssl_session.cc
532  src/ssl/ssl_stat.cc
533  src/ssl/ssl_transcript.cc
534  src/ssl/ssl_versions.cc
535  src/ssl/ssl_x509.cc
536  src/ssl/t1_enc.cc
537  src/ssl/tls13_both.cc
538  src/ssl/tls13_client.cc
539  src/ssl/tls13_enc.cc
540  src/ssl/tls13_server.cc
541  src/ssl/tls_method.cc
542  src/ssl/tls_record.cc
543)
544
545target_link_libraries(ssl crypto)
546
547add_executable(
548  bssl
549
550  src/tool/args.cc
551  src/tool/ciphers.cc
552  src/tool/client.cc
553  src/tool/const.cc
554  src/tool/digest.cc
555  src/tool/fd.cc
556  src/tool/file.cc
557  src/tool/generate_ech.cc
558  src/tool/generate_ed25519.cc
559  src/tool/genrsa.cc
560  src/tool/pkcs12.cc
561  src/tool/rand.cc
562  src/tool/server.cc
563  src/tool/sign.cc
564  src/tool/speed.cc
565  src/tool/tool.cc
566  src/tool/transport_common.cc
567)
568
569target_link_libraries(bssl ssl crypto)
570
571if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
572  find_package(Threads REQUIRED)
573  target_link_libraries(crypto Threads::Threads)
574endif()
575
576if(WIN32)
577  target_link_libraries(crypto ws2_32)
578endif()
579
580