Move crypto_sources to build.json

Bug: 542
Change-Id: Ie5590a0a68431903587fa87d70c1acac4161e9b9
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/67297
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/build.json b/build.json
index 8003b58..5791d9d 100644
--- a/build.json
+++ b/build.json
@@ -12,6 +12,9 @@
 // in progress, so this file is currently incomplete.
 {
     "bcm": {
+        "srcs": [
+            "crypto/fipsmodule/bcm.c"
+        ],
         "perlasm_aarch64": [
             {"src": "crypto/fipsmodule/aes/asm/aesv8-armx.pl", "dst": "aesv8-armv8"},
             {"src": "crypto/fipsmodule/modes/asm/aesv8-gcm-armv8.pl"},
@@ -69,6 +72,240 @@
         ]
     },
     "crypto": {
+        "srcs": [
+            "crypto/asn1/a_bitstr.c",
+            "crypto/asn1/a_bool.c",
+            "crypto/asn1/a_d2i_fp.c",
+            "crypto/asn1/a_dup.c",
+            "crypto/asn1/a_gentm.c",
+            "crypto/asn1/a_i2d_fp.c",
+            "crypto/asn1/a_int.c",
+            "crypto/asn1/a_mbstr.c",
+            "crypto/asn1/a_object.c",
+            "crypto/asn1/a_octet.c",
+            "crypto/asn1/a_strex.c",
+            "crypto/asn1/a_strnid.c",
+            "crypto/asn1/a_time.c",
+            "crypto/asn1/a_type.c",
+            "crypto/asn1/a_utctm.c",
+            "crypto/asn1/asn1_lib.c",
+            "crypto/asn1/asn1_par.c",
+            "crypto/asn1/asn_pack.c",
+            "crypto/asn1/f_int.c",
+            "crypto/asn1/f_string.c",
+            "crypto/asn1/tasn_dec.c",
+            "crypto/asn1/tasn_enc.c",
+            "crypto/asn1/tasn_fre.c",
+            "crypto/asn1/tasn_new.c",
+            "crypto/asn1/tasn_typ.c",
+            "crypto/asn1/tasn_utl.c",
+            "crypto/asn1/posix_time.c",
+            "crypto/base64/base64.c",
+            "crypto/bio/bio.c",
+            "crypto/bio/bio_mem.c",
+            "crypto/bio/connect.c",
+            "crypto/bio/errno.c",
+            "crypto/bio/fd.c",
+            "crypto/bio/file.c",
+            "crypto/bio/hexdump.c",
+            "crypto/bio/pair.c",
+            "crypto/bio/printf.c",
+            "crypto/bio/socket.c",
+            "crypto/bio/socket_helper.c",
+            "crypto/blake2/blake2.c",
+            "crypto/bn_extra/bn_asn1.c",
+            "crypto/bn_extra/convert.c",
+            "crypto/buf/buf.c",
+            "crypto/bytestring/asn1_compat.c",
+            "crypto/bytestring/ber.c",
+            "crypto/bytestring/cbb.c",
+            "crypto/bytestring/cbs.c",
+            "crypto/bytestring/unicode.c",
+            "crypto/chacha/chacha.c",
+            "crypto/cipher_extra/cipher_extra.c",
+            "crypto/cipher_extra/derive_key.c",
+            "crypto/cipher_extra/e_aesctrhmac.c",
+            "crypto/cipher_extra/e_aesgcmsiv.c",
+            "crypto/cipher_extra/e_chacha20poly1305.c",
+            "crypto/cipher_extra/e_des.c",
+            "crypto/cipher_extra/e_null.c",
+            "crypto/cipher_extra/e_rc2.c",
+            "crypto/cipher_extra/e_rc4.c",
+            "crypto/cipher_extra/e_tls.c",
+            "crypto/cipher_extra/tls_cbc.c",
+            "crypto/conf/conf.c",
+            "crypto/cpu_aarch64_apple.c",
+            "crypto/cpu_aarch64_openbsd.c",
+            "crypto/cpu_aarch64_fuchsia.c",
+            "crypto/cpu_aarch64_linux.c",
+            "crypto/cpu_aarch64_sysreg.c",
+            "crypto/cpu_aarch64_win.c",
+            "crypto/cpu_arm_freebsd.c",
+            "crypto/cpu_arm_linux.c",
+            "crypto/cpu_intel.c",
+            "crypto/crypto.c",
+            "crypto/curve25519/curve25519.c",
+            "crypto/curve25519/curve25519_64_adx.c",
+            "crypto/curve25519/spake25519.c",
+            "crypto/des/des.c",
+            "crypto/dh_extra/params.c",
+            "crypto/dh_extra/dh_asn1.c",
+            "crypto/digest_extra/digest_extra.c",
+            "crypto/dsa/dsa.c",
+            "crypto/dsa/dsa_asn1.c",
+            "crypto/ecdh_extra/ecdh_extra.c",
+            "crypto/ecdsa_extra/ecdsa_asn1.c",
+            "crypto/ec_extra/ec_asn1.c",
+            "crypto/ec_extra/ec_derive.c",
+            "crypto/ec_extra/hash_to_curve.c",
+            "crypto/err/err.c",
+            "crypto/engine/engine.c",
+            "crypto/evp/evp.c",
+            "crypto/evp/evp_asn1.c",
+            "crypto/evp/evp_ctx.c",
+            "crypto/evp/p_dh.c",
+            "crypto/evp/p_dh_asn1.c",
+            "crypto/evp/p_dsa_asn1.c",
+            "crypto/evp/p_ec.c",
+            "crypto/evp/p_ec_asn1.c",
+            "crypto/evp/p_ed25519.c",
+            "crypto/evp/p_ed25519_asn1.c",
+            "crypto/evp/p_hkdf.c",
+            "crypto/evp/p_rsa.c",
+            "crypto/evp/p_rsa_asn1.c",
+            "crypto/evp/p_x25519.c",
+            "crypto/evp/p_x25519_asn1.c",
+            "crypto/evp/pbkdf.c",
+            "crypto/evp/print.c",
+            "crypto/evp/scrypt.c",
+            "crypto/evp/sign.c",
+            "crypto/ex_data.c",
+            "crypto/fipsmodule/fips_shared_support.c",
+            "crypto/hpke/hpke.c",
+            "crypto/hrss/hrss.c",
+            "crypto/keccak/keccak.c",
+            "crypto/kyber/kyber.c",
+            "crypto/lhash/lhash.c",
+            "crypto/mem.c",
+            "crypto/obj/obj.c",
+            "crypto/obj/obj_xref.c",
+            "crypto/pem/pem_all.c",
+            "crypto/pem/pem_info.c",
+            "crypto/pem/pem_lib.c",
+            "crypto/pem/pem_oth.c",
+            "crypto/pem/pem_pk8.c",
+            "crypto/pem/pem_pkey.c",
+            "crypto/pem/pem_x509.c",
+            "crypto/pem/pem_xaux.c",
+            "crypto/pkcs7/pkcs7.c",
+            "crypto/pkcs7/pkcs7_x509.c",
+            "crypto/pkcs8/pkcs8.c",
+            "crypto/pkcs8/pkcs8_x509.c",
+            "crypto/pkcs8/p5_pbev2.c",
+            "crypto/poly1305/poly1305.c",
+            "crypto/poly1305/poly1305_arm.c",
+            "crypto/poly1305/poly1305_vec.c",
+            "crypto/pool/pool.c",
+            "crypto/rand_extra/deterministic.c",
+            "crypto/rand_extra/forkunsafe.c",
+            "crypto/rand_extra/getentropy.c",
+            "crypto/rand_extra/ios.c",
+            "crypto/rand_extra/passive.c",
+            "crypto/rand_extra/rand_extra.c",
+            "crypto/rand_extra/trusty.c",
+            "crypto/rand_extra/windows.c",
+            "crypto/rc4/rc4.c",
+            "crypto/refcount.c",
+            "crypto/rsa_extra/rsa_asn1.c",
+            "crypto/rsa_extra/rsa_crypt.c",
+            "crypto/rsa_extra/rsa_print.c",
+            "crypto/spx/address.c",
+            "crypto/spx/fors.c",
+            "crypto/spx/merkle.c",
+            "crypto/spx/spx.c",
+            "crypto/spx/thash.c",
+            "crypto/spx/spx_util.c",
+            "crypto/spx/wots.c",
+            "crypto/stack/stack.c",
+            "crypto/siphash/siphash.c",
+            "crypto/thread.c",
+            "crypto/thread_none.c",
+            "crypto/thread_pthread.c",
+            "crypto/thread_win.c",
+            "crypto/trust_token/pmbtoken.c",
+            "crypto/trust_token/trust_token.c",
+            "crypto/trust_token/voprf.c",
+            "crypto/x509/a_digest.c",
+            "crypto/x509/a_sign.c",
+            "crypto/x509/a_verify.c",
+            "crypto/x509/algorithm.c",
+            "crypto/x509/asn1_gen.c",
+            "crypto/x509/by_dir.c",
+            "crypto/x509/by_file.c",
+            "crypto/x509/i2d_pr.c",
+            "crypto/x509/name_print.c",
+            "crypto/x509/policy.c",
+            "crypto/x509/rsa_pss.c",
+            "crypto/x509/t_crl.c",
+            "crypto/x509/t_req.c",
+            "crypto/x509/t_x509.c",
+            "crypto/x509/t_x509a.c",
+            "crypto/x509/v3_akey.c",
+            "crypto/x509/v3_akeya.c",
+            "crypto/x509/v3_alt.c",
+            "crypto/x509/v3_bcons.c",
+            "crypto/x509/v3_bitst.c",
+            "crypto/x509/v3_conf.c",
+            "crypto/x509/v3_cpols.c",
+            "crypto/x509/v3_crld.c",
+            "crypto/x509/v3_enum.c",
+            "crypto/x509/v3_extku.c",
+            "crypto/x509/v3_genn.c",
+            "crypto/x509/v3_ia5.c",
+            "crypto/x509/v3_info.c",
+            "crypto/x509/v3_int.c",
+            "crypto/x509/v3_lib.c",
+            "crypto/x509/v3_ncons.c",
+            "crypto/x509/v3_ocsp.c",
+            "crypto/x509/v3_pcons.c",
+            "crypto/x509/v3_pmaps.c",
+            "crypto/x509/v3_prn.c",
+            "crypto/x509/v3_purp.c",
+            "crypto/x509/v3_skey.c",
+            "crypto/x509/v3_utl.c",
+            "crypto/x509/x_algor.c",
+            "crypto/x509/x_all.c",
+            "crypto/x509/x_attrib.c",
+            "crypto/x509/x_crl.c",
+            "crypto/x509/x_exten.c",
+            "crypto/x509/x_name.c",
+            "crypto/x509/x_pubkey.c",
+            "crypto/x509/x_req.c",
+            "crypto/x509/x_sig.c",
+            "crypto/x509/x_spki.c",
+            "crypto/x509/x_val.c",
+            "crypto/x509/x_x509.c",
+            "crypto/x509/x_x509a.c",
+            "crypto/x509/x509_att.c",
+            "crypto/x509/x509_cmp.c",
+            "crypto/x509/x509_d2.c",
+            "crypto/x509/x509_def.c",
+            "crypto/x509/x509_ext.c",
+            "crypto/x509/x509_lu.c",
+            "crypto/x509/x509_obj.c",
+            "crypto/x509/x509_req.c",
+            "crypto/x509/x509_set.c",
+            "crypto/x509/x509_trs.c",
+            "crypto/x509/x509_txt.c",
+            "crypto/x509/x509_v3.c",
+            "crypto/x509/x509_vfy.c",
+            "crypto/x509/x509_vpm.c",
+            "crypto/x509/x509.c",
+            "crypto/x509/x509cset.c",
+            "crypto/x509/x509name.c",
+            "crypto/x509/x509rset.c",
+            "crypto/x509/x509spki.c"
+        ],
         "hdrs": [
             "include/openssl/aead.h",
             "include/openssl/aes.h",
diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
index dbed8cb..71635c8 100644
--- a/crypto/CMakeLists.txt
+++ b/crypto/CMakeLists.txt
@@ -4,6 +4,7 @@
 list(TRANSFORM BCM_SOURCES_NASM PREPEND "../")
 list(TRANSFORM CRYPTO_SOURCES_ASM PREPEND "../")
 list(TRANSFORM CRYPTO_SOURCES_NASM PREPEND "../")
+list(TRANSFORM CRYPTO_SOURCES PREPEND "../")
 
 if(OPENSSL_ASM)
   list(APPEND CRYPTO_SOURCES_ASM_USED ${CRYPTO_SOURCES_ASM})
@@ -89,248 +90,7 @@
   set(CRYPTO_FIPS_OBJECTS $<TARGET_OBJECTS:fipsmodule>)
 endif()
 
-add_library(
-  crypto
-
-  asn1/a_bitstr.c
-  asn1/a_bool.c
-  asn1/a_d2i_fp.c
-  asn1/a_dup.c
-  asn1/a_gentm.c
-  asn1/a_i2d_fp.c
-  asn1/a_int.c
-  asn1/a_mbstr.c
-  asn1/a_object.c
-  asn1/a_octet.c
-  asn1/a_strex.c
-  asn1/a_strnid.c
-  asn1/a_time.c
-  asn1/a_type.c
-  asn1/a_utctm.c
-  asn1/asn1_lib.c
-  asn1/asn1_par.c
-  asn1/asn_pack.c
-  asn1/f_int.c
-  asn1/f_string.c
-  asn1/tasn_dec.c
-  asn1/tasn_enc.c
-  asn1/tasn_fre.c
-  asn1/tasn_new.c
-  asn1/tasn_typ.c
-  asn1/tasn_utl.c
-  asn1/posix_time.c
-  base64/base64.c
-  bio/bio.c
-  bio/bio_mem.c
-  bio/connect.c
-  bio/errno.c
-  bio/fd.c
-  bio/file.c
-  bio/hexdump.c
-  bio/pair.c
-  bio/printf.c
-  bio/socket.c
-  bio/socket_helper.c
-  blake2/blake2.c
-  bn_extra/bn_asn1.c
-  bn_extra/convert.c
-  buf/buf.c
-  bytestring/asn1_compat.c
-  bytestring/ber.c
-  bytestring/cbb.c
-  bytestring/cbs.c
-  bytestring/unicode.c
-  chacha/chacha.c
-  cipher_extra/cipher_extra.c
-  cipher_extra/derive_key.c
-  cipher_extra/e_aesctrhmac.c
-  cipher_extra/e_aesgcmsiv.c
-  cipher_extra/e_chacha20poly1305.c
-  cipher_extra/e_des.c
-  cipher_extra/e_null.c
-  cipher_extra/e_rc2.c
-  cipher_extra/e_rc4.c
-  cipher_extra/e_tls.c
-  cipher_extra/tls_cbc.c
-  conf/conf.c
-  cpu_aarch64_apple.c
-  cpu_aarch64_openbsd.c
-  cpu_aarch64_fuchsia.c
-  cpu_aarch64_linux.c
-  cpu_aarch64_sysreg.c
-  cpu_aarch64_win.c
-  cpu_arm_freebsd.c
-  cpu_arm_linux.c
-  cpu_intel.c
-  crypto.c
-  curve25519/curve25519.c
-  curve25519/curve25519_64_adx.c
-  curve25519/spake25519.c
-  des/des.c
-  dh_extra/params.c
-  dh_extra/dh_asn1.c
-  digest_extra/digest_extra.c
-  dsa/dsa.c
-  dsa/dsa_asn1.c
-  ecdh_extra/ecdh_extra.c
-  ecdsa_extra/ecdsa_asn1.c
-  ec_extra/ec_asn1.c
-  ec_extra/ec_derive.c
-  ec_extra/hash_to_curve.c
-  err/err.c
-  engine/engine.c
-  evp/evp.c
-  evp/evp_asn1.c
-  evp/evp_ctx.c
-  evp/p_dh.c
-  evp/p_dh_asn1.c
-  evp/p_dsa_asn1.c
-  evp/p_ec.c
-  evp/p_ec_asn1.c
-  evp/p_ed25519.c
-  evp/p_ed25519_asn1.c
-  evp/p_hkdf.c
-  evp/p_rsa.c
-  evp/p_rsa_asn1.c
-  evp/p_x25519.c
-  evp/p_x25519_asn1.c
-  evp/pbkdf.c
-  evp/print.c
-  evp/scrypt.c
-  evp/sign.c
-  ex_data.c
-  fipsmodule/fips_shared_support.c
-  hpke/hpke.c
-  hrss/hrss.c
-  keccak/keccak.c
-  kyber/kyber.c
-  lhash/lhash.c
-  mem.c
-  obj/obj.c
-  obj/obj_xref.c
-  pem/pem_all.c
-  pem/pem_info.c
-  pem/pem_lib.c
-  pem/pem_oth.c
-  pem/pem_pk8.c
-  pem/pem_pkey.c
-  pem/pem_x509.c
-  pem/pem_xaux.c
-  pkcs7/pkcs7.c
-  pkcs7/pkcs7_x509.c
-  pkcs8/pkcs8.c
-  pkcs8/pkcs8_x509.c
-  pkcs8/p5_pbev2.c
-  poly1305/poly1305.c
-  poly1305/poly1305_arm.c
-  poly1305/poly1305_vec.c
-  pool/pool.c
-  rand_extra/deterministic.c
-  rand_extra/forkunsafe.c
-  rand_extra/getentropy.c
-  rand_extra/ios.c
-  rand_extra/passive.c
-  rand_extra/rand_extra.c
-  rand_extra/trusty.c
-  rand_extra/windows.c
-  rc4/rc4.c
-  refcount.c
-  rsa_extra/rsa_asn1.c
-  rsa_extra/rsa_crypt.c
-  rsa_extra/rsa_print.c
-  spx/address.c
-  spx/fors.c
-  spx/merkle.c
-  spx/spx.c
-  spx/thash.c
-  spx/spx_util.c
-  spx/wots.c
-  stack/stack.c
-  siphash/siphash.c
-  thread.c
-  thread_none.c
-  thread_pthread.c
-  thread_win.c
-  trust_token/pmbtoken.c
-  trust_token/trust_token.c
-  trust_token/voprf.c
-  x509/a_digest.c
-  x509/a_sign.c
-  x509/a_verify.c
-  x509/algorithm.c
-  x509/asn1_gen.c
-  x509/by_dir.c
-  x509/by_file.c
-  x509/i2d_pr.c
-  x509/name_print.c
-  x509/policy.c
-  x509/rsa_pss.c
-  x509/t_crl.c
-  x509/t_req.c
-  x509/t_x509.c
-  x509/t_x509a.c
-  x509/v3_akey.c
-  x509/v3_akeya.c
-  x509/v3_alt.c
-  x509/v3_bcons.c
-  x509/v3_bitst.c
-  x509/v3_conf.c
-  x509/v3_cpols.c
-  x509/v3_crld.c
-  x509/v3_enum.c
-  x509/v3_extku.c
-  x509/v3_genn.c
-  x509/v3_ia5.c
-  x509/v3_info.c
-  x509/v3_int.c
-  x509/v3_lib.c
-  x509/v3_ncons.c
-  x509/v3_ocsp.c
-  x509/v3_pcons.c
-  x509/v3_pmaps.c
-  x509/v3_prn.c
-  x509/v3_purp.c
-  x509/v3_skey.c
-  x509/v3_utl.c
-  x509/x_algor.c
-  x509/x_all.c
-  x509/x_attrib.c
-  x509/x_crl.c
-  x509/x_exten.c
-  x509/x_name.c
-  x509/x_pubkey.c
-  x509/x_req.c
-  x509/x_sig.c
-  x509/x_spki.c
-  x509/x_val.c
-  x509/x_x509.c
-  x509/x_x509a.c
-  x509/x509_att.c
-  x509/x509_cmp.c
-  x509/x509_d2.c
-  x509/x509_def.c
-  x509/x509_ext.c
-  x509/x509_lu.c
-  x509/x509_obj.c
-  x509/x509_req.c
-  x509/x509_set.c
-  x509/x509_trs.c
-  x509/x509_txt.c
-  x509/x509_v3.c
-  x509/x509_vfy.c
-  x509/x509_vpm.c
-  x509/x509.c
-  x509/x509cset.c
-  x509/x509name.c
-  x509/x509rset.c
-  x509/x509spki.c
-  # TOOD(crbug.com/boringssl/542): Pick up this and the rest of the source list
-  # from util/pregenerate.
-  ../gen/crypto/err_data.c
-
-  ${CRYPTO_FIPS_OBJECTS}
-  ${CRYPTO_SOURCES_ASM_USED}
-)
+add_library(crypto ${CRYPTO_SOURCES} ${CRYPTO_FIPS_OBJECTS} ${CRYPTO_SOURCES_ASM_USED})
 target_include_directories(crypto PUBLIC
   $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
   $<INSTALL_INTERFACE:include>
diff --git a/gen/sources.cmake b/gen/sources.cmake
index efa91d4..fbc0255 100644
--- a/gen/sources.cmake
+++ b/gen/sources.cmake
@@ -15,6 +15,12 @@
 # Generated by go ./util/pregenerate. Do not edit manually.
 
 set(
+  BCM_SOURCES
+
+  crypto/fipsmodule/bcm.c
+)
+
+set(
   BCM_SOURCES_ASM
 
   gen/bcm/aesni-gcm-x86_64-apple.S
@@ -172,6 +178,238 @@
 set(
   CRYPTO_SOURCES
 
+  crypto/asn1/a_bitstr.c
+  crypto/asn1/a_bool.c
+  crypto/asn1/a_d2i_fp.c
+  crypto/asn1/a_dup.c
+  crypto/asn1/a_gentm.c
+  crypto/asn1/a_i2d_fp.c
+  crypto/asn1/a_int.c
+  crypto/asn1/a_mbstr.c
+  crypto/asn1/a_object.c
+  crypto/asn1/a_octet.c
+  crypto/asn1/a_strex.c
+  crypto/asn1/a_strnid.c
+  crypto/asn1/a_time.c
+  crypto/asn1/a_type.c
+  crypto/asn1/a_utctm.c
+  crypto/asn1/asn1_lib.c
+  crypto/asn1/asn1_par.c
+  crypto/asn1/asn_pack.c
+  crypto/asn1/f_int.c
+  crypto/asn1/f_string.c
+  crypto/asn1/posix_time.c
+  crypto/asn1/tasn_dec.c
+  crypto/asn1/tasn_enc.c
+  crypto/asn1/tasn_fre.c
+  crypto/asn1/tasn_new.c
+  crypto/asn1/tasn_typ.c
+  crypto/asn1/tasn_utl.c
+  crypto/base64/base64.c
+  crypto/bio/bio.c
+  crypto/bio/bio_mem.c
+  crypto/bio/connect.c
+  crypto/bio/errno.c
+  crypto/bio/fd.c
+  crypto/bio/file.c
+  crypto/bio/hexdump.c
+  crypto/bio/pair.c
+  crypto/bio/printf.c
+  crypto/bio/socket.c
+  crypto/bio/socket_helper.c
+  crypto/blake2/blake2.c
+  crypto/bn_extra/bn_asn1.c
+  crypto/bn_extra/convert.c
+  crypto/buf/buf.c
+  crypto/bytestring/asn1_compat.c
+  crypto/bytestring/ber.c
+  crypto/bytestring/cbb.c
+  crypto/bytestring/cbs.c
+  crypto/bytestring/unicode.c
+  crypto/chacha/chacha.c
+  crypto/cipher_extra/cipher_extra.c
+  crypto/cipher_extra/derive_key.c
+  crypto/cipher_extra/e_aesctrhmac.c
+  crypto/cipher_extra/e_aesgcmsiv.c
+  crypto/cipher_extra/e_chacha20poly1305.c
+  crypto/cipher_extra/e_des.c
+  crypto/cipher_extra/e_null.c
+  crypto/cipher_extra/e_rc2.c
+  crypto/cipher_extra/e_rc4.c
+  crypto/cipher_extra/e_tls.c
+  crypto/cipher_extra/tls_cbc.c
+  crypto/conf/conf.c
+  crypto/cpu_aarch64_apple.c
+  crypto/cpu_aarch64_fuchsia.c
+  crypto/cpu_aarch64_linux.c
+  crypto/cpu_aarch64_openbsd.c
+  crypto/cpu_aarch64_sysreg.c
+  crypto/cpu_aarch64_win.c
+  crypto/cpu_arm_freebsd.c
+  crypto/cpu_arm_linux.c
+  crypto/cpu_intel.c
+  crypto/crypto.c
+  crypto/curve25519/curve25519.c
+  crypto/curve25519/curve25519_64_adx.c
+  crypto/curve25519/spake25519.c
+  crypto/des/des.c
+  crypto/dh_extra/dh_asn1.c
+  crypto/dh_extra/params.c
+  crypto/digest_extra/digest_extra.c
+  crypto/dsa/dsa.c
+  crypto/dsa/dsa_asn1.c
+  crypto/ec_extra/ec_asn1.c
+  crypto/ec_extra/ec_derive.c
+  crypto/ec_extra/hash_to_curve.c
+  crypto/ecdh_extra/ecdh_extra.c
+  crypto/ecdsa_extra/ecdsa_asn1.c
+  crypto/engine/engine.c
+  crypto/err/err.c
+  crypto/evp/evp.c
+  crypto/evp/evp_asn1.c
+  crypto/evp/evp_ctx.c
+  crypto/evp/p_dh.c
+  crypto/evp/p_dh_asn1.c
+  crypto/evp/p_dsa_asn1.c
+  crypto/evp/p_ec.c
+  crypto/evp/p_ec_asn1.c
+  crypto/evp/p_ed25519.c
+  crypto/evp/p_ed25519_asn1.c
+  crypto/evp/p_hkdf.c
+  crypto/evp/p_rsa.c
+  crypto/evp/p_rsa_asn1.c
+  crypto/evp/p_x25519.c
+  crypto/evp/p_x25519_asn1.c
+  crypto/evp/pbkdf.c
+  crypto/evp/print.c
+  crypto/evp/scrypt.c
+  crypto/evp/sign.c
+  crypto/ex_data.c
+  crypto/fipsmodule/fips_shared_support.c
+  crypto/hpke/hpke.c
+  crypto/hrss/hrss.c
+  crypto/keccak/keccak.c
+  crypto/kyber/kyber.c
+  crypto/lhash/lhash.c
+  crypto/mem.c
+  crypto/obj/obj.c
+  crypto/obj/obj_xref.c
+  crypto/pem/pem_all.c
+  crypto/pem/pem_info.c
+  crypto/pem/pem_lib.c
+  crypto/pem/pem_oth.c
+  crypto/pem/pem_pk8.c
+  crypto/pem/pem_pkey.c
+  crypto/pem/pem_x509.c
+  crypto/pem/pem_xaux.c
+  crypto/pkcs7/pkcs7.c
+  crypto/pkcs7/pkcs7_x509.c
+  crypto/pkcs8/p5_pbev2.c
+  crypto/pkcs8/pkcs8.c
+  crypto/pkcs8/pkcs8_x509.c
+  crypto/poly1305/poly1305.c
+  crypto/poly1305/poly1305_arm.c
+  crypto/poly1305/poly1305_vec.c
+  crypto/pool/pool.c
+  crypto/rand_extra/deterministic.c
+  crypto/rand_extra/forkunsafe.c
+  crypto/rand_extra/getentropy.c
+  crypto/rand_extra/ios.c
+  crypto/rand_extra/passive.c
+  crypto/rand_extra/rand_extra.c
+  crypto/rand_extra/trusty.c
+  crypto/rand_extra/windows.c
+  crypto/rc4/rc4.c
+  crypto/refcount.c
+  crypto/rsa_extra/rsa_asn1.c
+  crypto/rsa_extra/rsa_crypt.c
+  crypto/rsa_extra/rsa_print.c
+  crypto/siphash/siphash.c
+  crypto/spx/address.c
+  crypto/spx/fors.c
+  crypto/spx/merkle.c
+  crypto/spx/spx.c
+  crypto/spx/spx_util.c
+  crypto/spx/thash.c
+  crypto/spx/wots.c
+  crypto/stack/stack.c
+  crypto/thread.c
+  crypto/thread_none.c
+  crypto/thread_pthread.c
+  crypto/thread_win.c
+  crypto/trust_token/pmbtoken.c
+  crypto/trust_token/trust_token.c
+  crypto/trust_token/voprf.c
+  crypto/x509/a_digest.c
+  crypto/x509/a_sign.c
+  crypto/x509/a_verify.c
+  crypto/x509/algorithm.c
+  crypto/x509/asn1_gen.c
+  crypto/x509/by_dir.c
+  crypto/x509/by_file.c
+  crypto/x509/i2d_pr.c
+  crypto/x509/name_print.c
+  crypto/x509/policy.c
+  crypto/x509/rsa_pss.c
+  crypto/x509/t_crl.c
+  crypto/x509/t_req.c
+  crypto/x509/t_x509.c
+  crypto/x509/t_x509a.c
+  crypto/x509/v3_akey.c
+  crypto/x509/v3_akeya.c
+  crypto/x509/v3_alt.c
+  crypto/x509/v3_bcons.c
+  crypto/x509/v3_bitst.c
+  crypto/x509/v3_conf.c
+  crypto/x509/v3_cpols.c
+  crypto/x509/v3_crld.c
+  crypto/x509/v3_enum.c
+  crypto/x509/v3_extku.c
+  crypto/x509/v3_genn.c
+  crypto/x509/v3_ia5.c
+  crypto/x509/v3_info.c
+  crypto/x509/v3_int.c
+  crypto/x509/v3_lib.c
+  crypto/x509/v3_ncons.c
+  crypto/x509/v3_ocsp.c
+  crypto/x509/v3_pcons.c
+  crypto/x509/v3_pmaps.c
+  crypto/x509/v3_prn.c
+  crypto/x509/v3_purp.c
+  crypto/x509/v3_skey.c
+  crypto/x509/v3_utl.c
+  crypto/x509/x509.c
+  crypto/x509/x509_att.c
+  crypto/x509/x509_cmp.c
+  crypto/x509/x509_d2.c
+  crypto/x509/x509_def.c
+  crypto/x509/x509_ext.c
+  crypto/x509/x509_lu.c
+  crypto/x509/x509_obj.c
+  crypto/x509/x509_req.c
+  crypto/x509/x509_set.c
+  crypto/x509/x509_trs.c
+  crypto/x509/x509_txt.c
+  crypto/x509/x509_v3.c
+  crypto/x509/x509_vfy.c
+  crypto/x509/x509_vpm.c
+  crypto/x509/x509cset.c
+  crypto/x509/x509name.c
+  crypto/x509/x509rset.c
+  crypto/x509/x509spki.c
+  crypto/x509/x_algor.c
+  crypto/x509/x_all.c
+  crypto/x509/x_attrib.c
+  crypto/x509/x_crl.c
+  crypto/x509/x_exten.c
+  crypto/x509/x_name.c
+  crypto/x509/x_pubkey.c
+  crypto/x509/x_req.c
+  crypto/x509/x_sig.c
+  crypto/x509/x_spki.c
+  crypto/x509/x_val.c
+  crypto/x509/x_x509.c
+  crypto/x509/x_x509a.c
   gen/crypto/err_data.c
 )
 
diff --git a/gen/sources.json b/gen/sources.json
index 9c5f318..9dde1b5 100644
--- a/gen/sources.json
+++ b/gen/sources.json
@@ -1,5 +1,8 @@
 {
   "bcm": {
+    "srcs": [
+      "crypto/fipsmodule/bcm.c"
+    ],
     "asm": [
       "gen/bcm/aesni-gcm-x86_64-apple.S",
       "gen/bcm/aesni-gcm-x86_64-linux.S",
@@ -151,6 +154,238 @@
   },
   "crypto": {
     "srcs": [
+      "crypto/asn1/a_bitstr.c",
+      "crypto/asn1/a_bool.c",
+      "crypto/asn1/a_d2i_fp.c",
+      "crypto/asn1/a_dup.c",
+      "crypto/asn1/a_gentm.c",
+      "crypto/asn1/a_i2d_fp.c",
+      "crypto/asn1/a_int.c",
+      "crypto/asn1/a_mbstr.c",
+      "crypto/asn1/a_object.c",
+      "crypto/asn1/a_octet.c",
+      "crypto/asn1/a_strex.c",
+      "crypto/asn1/a_strnid.c",
+      "crypto/asn1/a_time.c",
+      "crypto/asn1/a_type.c",
+      "crypto/asn1/a_utctm.c",
+      "crypto/asn1/asn1_lib.c",
+      "crypto/asn1/asn1_par.c",
+      "crypto/asn1/asn_pack.c",
+      "crypto/asn1/f_int.c",
+      "crypto/asn1/f_string.c",
+      "crypto/asn1/posix_time.c",
+      "crypto/asn1/tasn_dec.c",
+      "crypto/asn1/tasn_enc.c",
+      "crypto/asn1/tasn_fre.c",
+      "crypto/asn1/tasn_new.c",
+      "crypto/asn1/tasn_typ.c",
+      "crypto/asn1/tasn_utl.c",
+      "crypto/base64/base64.c",
+      "crypto/bio/bio.c",
+      "crypto/bio/bio_mem.c",
+      "crypto/bio/connect.c",
+      "crypto/bio/errno.c",
+      "crypto/bio/fd.c",
+      "crypto/bio/file.c",
+      "crypto/bio/hexdump.c",
+      "crypto/bio/pair.c",
+      "crypto/bio/printf.c",
+      "crypto/bio/socket.c",
+      "crypto/bio/socket_helper.c",
+      "crypto/blake2/blake2.c",
+      "crypto/bn_extra/bn_asn1.c",
+      "crypto/bn_extra/convert.c",
+      "crypto/buf/buf.c",
+      "crypto/bytestring/asn1_compat.c",
+      "crypto/bytestring/ber.c",
+      "crypto/bytestring/cbb.c",
+      "crypto/bytestring/cbs.c",
+      "crypto/bytestring/unicode.c",
+      "crypto/chacha/chacha.c",
+      "crypto/cipher_extra/cipher_extra.c",
+      "crypto/cipher_extra/derive_key.c",
+      "crypto/cipher_extra/e_aesctrhmac.c",
+      "crypto/cipher_extra/e_aesgcmsiv.c",
+      "crypto/cipher_extra/e_chacha20poly1305.c",
+      "crypto/cipher_extra/e_des.c",
+      "crypto/cipher_extra/e_null.c",
+      "crypto/cipher_extra/e_rc2.c",
+      "crypto/cipher_extra/e_rc4.c",
+      "crypto/cipher_extra/e_tls.c",
+      "crypto/cipher_extra/tls_cbc.c",
+      "crypto/conf/conf.c",
+      "crypto/cpu_aarch64_apple.c",
+      "crypto/cpu_aarch64_fuchsia.c",
+      "crypto/cpu_aarch64_linux.c",
+      "crypto/cpu_aarch64_openbsd.c",
+      "crypto/cpu_aarch64_sysreg.c",
+      "crypto/cpu_aarch64_win.c",
+      "crypto/cpu_arm_freebsd.c",
+      "crypto/cpu_arm_linux.c",
+      "crypto/cpu_intel.c",
+      "crypto/crypto.c",
+      "crypto/curve25519/curve25519.c",
+      "crypto/curve25519/curve25519_64_adx.c",
+      "crypto/curve25519/spake25519.c",
+      "crypto/des/des.c",
+      "crypto/dh_extra/dh_asn1.c",
+      "crypto/dh_extra/params.c",
+      "crypto/digest_extra/digest_extra.c",
+      "crypto/dsa/dsa.c",
+      "crypto/dsa/dsa_asn1.c",
+      "crypto/ec_extra/ec_asn1.c",
+      "crypto/ec_extra/ec_derive.c",
+      "crypto/ec_extra/hash_to_curve.c",
+      "crypto/ecdh_extra/ecdh_extra.c",
+      "crypto/ecdsa_extra/ecdsa_asn1.c",
+      "crypto/engine/engine.c",
+      "crypto/err/err.c",
+      "crypto/evp/evp.c",
+      "crypto/evp/evp_asn1.c",
+      "crypto/evp/evp_ctx.c",
+      "crypto/evp/p_dh.c",
+      "crypto/evp/p_dh_asn1.c",
+      "crypto/evp/p_dsa_asn1.c",
+      "crypto/evp/p_ec.c",
+      "crypto/evp/p_ec_asn1.c",
+      "crypto/evp/p_ed25519.c",
+      "crypto/evp/p_ed25519_asn1.c",
+      "crypto/evp/p_hkdf.c",
+      "crypto/evp/p_rsa.c",
+      "crypto/evp/p_rsa_asn1.c",
+      "crypto/evp/p_x25519.c",
+      "crypto/evp/p_x25519_asn1.c",
+      "crypto/evp/pbkdf.c",
+      "crypto/evp/print.c",
+      "crypto/evp/scrypt.c",
+      "crypto/evp/sign.c",
+      "crypto/ex_data.c",
+      "crypto/fipsmodule/fips_shared_support.c",
+      "crypto/hpke/hpke.c",
+      "crypto/hrss/hrss.c",
+      "crypto/keccak/keccak.c",
+      "crypto/kyber/kyber.c",
+      "crypto/lhash/lhash.c",
+      "crypto/mem.c",
+      "crypto/obj/obj.c",
+      "crypto/obj/obj_xref.c",
+      "crypto/pem/pem_all.c",
+      "crypto/pem/pem_info.c",
+      "crypto/pem/pem_lib.c",
+      "crypto/pem/pem_oth.c",
+      "crypto/pem/pem_pk8.c",
+      "crypto/pem/pem_pkey.c",
+      "crypto/pem/pem_x509.c",
+      "crypto/pem/pem_xaux.c",
+      "crypto/pkcs7/pkcs7.c",
+      "crypto/pkcs7/pkcs7_x509.c",
+      "crypto/pkcs8/p5_pbev2.c",
+      "crypto/pkcs8/pkcs8.c",
+      "crypto/pkcs8/pkcs8_x509.c",
+      "crypto/poly1305/poly1305.c",
+      "crypto/poly1305/poly1305_arm.c",
+      "crypto/poly1305/poly1305_vec.c",
+      "crypto/pool/pool.c",
+      "crypto/rand_extra/deterministic.c",
+      "crypto/rand_extra/forkunsafe.c",
+      "crypto/rand_extra/getentropy.c",
+      "crypto/rand_extra/ios.c",
+      "crypto/rand_extra/passive.c",
+      "crypto/rand_extra/rand_extra.c",
+      "crypto/rand_extra/trusty.c",
+      "crypto/rand_extra/windows.c",
+      "crypto/rc4/rc4.c",
+      "crypto/refcount.c",
+      "crypto/rsa_extra/rsa_asn1.c",
+      "crypto/rsa_extra/rsa_crypt.c",
+      "crypto/rsa_extra/rsa_print.c",
+      "crypto/siphash/siphash.c",
+      "crypto/spx/address.c",
+      "crypto/spx/fors.c",
+      "crypto/spx/merkle.c",
+      "crypto/spx/spx.c",
+      "crypto/spx/spx_util.c",
+      "crypto/spx/thash.c",
+      "crypto/spx/wots.c",
+      "crypto/stack/stack.c",
+      "crypto/thread.c",
+      "crypto/thread_none.c",
+      "crypto/thread_pthread.c",
+      "crypto/thread_win.c",
+      "crypto/trust_token/pmbtoken.c",
+      "crypto/trust_token/trust_token.c",
+      "crypto/trust_token/voprf.c",
+      "crypto/x509/a_digest.c",
+      "crypto/x509/a_sign.c",
+      "crypto/x509/a_verify.c",
+      "crypto/x509/algorithm.c",
+      "crypto/x509/asn1_gen.c",
+      "crypto/x509/by_dir.c",
+      "crypto/x509/by_file.c",
+      "crypto/x509/i2d_pr.c",
+      "crypto/x509/name_print.c",
+      "crypto/x509/policy.c",
+      "crypto/x509/rsa_pss.c",
+      "crypto/x509/t_crl.c",
+      "crypto/x509/t_req.c",
+      "crypto/x509/t_x509.c",
+      "crypto/x509/t_x509a.c",
+      "crypto/x509/v3_akey.c",
+      "crypto/x509/v3_akeya.c",
+      "crypto/x509/v3_alt.c",
+      "crypto/x509/v3_bcons.c",
+      "crypto/x509/v3_bitst.c",
+      "crypto/x509/v3_conf.c",
+      "crypto/x509/v3_cpols.c",
+      "crypto/x509/v3_crld.c",
+      "crypto/x509/v3_enum.c",
+      "crypto/x509/v3_extku.c",
+      "crypto/x509/v3_genn.c",
+      "crypto/x509/v3_ia5.c",
+      "crypto/x509/v3_info.c",
+      "crypto/x509/v3_int.c",
+      "crypto/x509/v3_lib.c",
+      "crypto/x509/v3_ncons.c",
+      "crypto/x509/v3_ocsp.c",
+      "crypto/x509/v3_pcons.c",
+      "crypto/x509/v3_pmaps.c",
+      "crypto/x509/v3_prn.c",
+      "crypto/x509/v3_purp.c",
+      "crypto/x509/v3_skey.c",
+      "crypto/x509/v3_utl.c",
+      "crypto/x509/x509.c",
+      "crypto/x509/x509_att.c",
+      "crypto/x509/x509_cmp.c",
+      "crypto/x509/x509_d2.c",
+      "crypto/x509/x509_def.c",
+      "crypto/x509/x509_ext.c",
+      "crypto/x509/x509_lu.c",
+      "crypto/x509/x509_obj.c",
+      "crypto/x509/x509_req.c",
+      "crypto/x509/x509_set.c",
+      "crypto/x509/x509_trs.c",
+      "crypto/x509/x509_txt.c",
+      "crypto/x509/x509_v3.c",
+      "crypto/x509/x509_vfy.c",
+      "crypto/x509/x509_vpm.c",
+      "crypto/x509/x509cset.c",
+      "crypto/x509/x509name.c",
+      "crypto/x509/x509rset.c",
+      "crypto/x509/x509spki.c",
+      "crypto/x509/x_algor.c",
+      "crypto/x509/x_all.c",
+      "crypto/x509/x_attrib.c",
+      "crypto/x509/x_crl.c",
+      "crypto/x509/x_exten.c",
+      "crypto/x509/x_name.c",
+      "crypto/x509/x_pubkey.c",
+      "crypto/x509/x_req.c",
+      "crypto/x509/x_sig.c",
+      "crypto/x509/x_spki.c",
+      "crypto/x509/x_val.c",
+      "crypto/x509/x_x509.c",
+      "crypto/x509/x_x509a.c",
       "gen/crypto/err_data.c"
     ],
     "hdrs": [
diff --git a/util/generate_build_files.py b/util/generate_build_files.py
index c56cd2e..943c2e1 100644
--- a/util/generate_build_files.py
+++ b/util/generate_build_files.py
@@ -628,21 +628,11 @@
   with open(os.path.join('src', 'gen', 'sources.json')) as f:
     sources = json.load(f)
 
-  crypto_c_files = (FindCFiles(os.path.join('src', 'crypto'), NoTestsNorFIPSFragments) +
-                    FindCFiles(os.path.join('src', 'third_party', 'fiat'), NoTestsNorFIPSFragments))
   fips_fragments = FindCFiles(os.path.join('src', 'crypto', 'fipsmodule'), OnlyFIPSFragments)
   tool_h_files = FindHeaderFiles(os.path.join('src', 'tool'), AllFiles)
   bssl_sys_files = FindRustFiles(os.path.join('src', 'rust', 'bssl-sys', 'src'))
   bssl_crypto_files = FindRustFiles(os.path.join('src', 'rust', 'bssl-crypto', 'src'))
 
-  # BCM shared library C files
-  bcm_crypto_c_files = [
-      os.path.join('src', 'crypto', 'fipsmodule', 'bcm.c')
-  ]
-
-  crypto_c_files += PrefixWithSrc(sources['crypto']['srcs'])
-  crypto_c_files.sort()
-
   test_support_h_files = (
       FindHeaderFiles(os.path.join('src', 'crypto', 'test'), AllFiles) +
       FindHeaderFiles(os.path.join('src', 'ssl', 'test'), NoTestRunnerFiles))
@@ -658,14 +648,15 @@
   # TODO(crbug.com/boringssl/542): generate_build_files.py historically reported
   # all the assembly files as part of libcrypto. Merge them for now, but we
   # should split them out later.
+  crypto = sorted(sources['bcm']['srcs'] + sources['crypto']['srcs'])
   crypto_asm = sorted(sources['bcm']['asm'] + sources['crypto']['asm'] +
                       sources['test_support']['asm'])
   crypto_nasm = sorted(sources['bcm']['nasm'] + sources['crypto']['nasm'] +
                        sources['test_support']['nasm'])
 
   files = {
-      'bcm_crypto': bcm_crypto_c_files,
-      'crypto': crypto_c_files,
+      'bcm_crypto': PrefixWithSrc(sources['bcm']['srcs']),
+      'crypto': PrefixWithSrc(crypto),
       'crypto_asm': PrefixWithSrc(crypto_asm),
       'crypto_nasm': PrefixWithSrc(crypto_nasm),
       'crypto_headers': PrefixWithSrc(sources['crypto']['hdrs']),