Provide a cut down variant of libcrypto for static linking into ART and
libcore.

Test: See https://r.android.com/3089446
Bug: 340868296
Change-Id: I3758079588b8b258ac5d268f6d1ff399f66e093f
diff --git a/Android.bp b/Android.bp
index 9b5004c..32de129 100644
--- a/Android.bp
+++ b/Android.bp
@@ -178,9 +178,6 @@
         "//apex_available:platform",
         "com.android.adbd",
         "com.android.adservices",
-        "com.android.art",
-        "com.android.art.debug",
-        "com.android.art.testing",
         "com.android.btservices",
         "com.android.compos",
         "com.android.conscrypt",
@@ -283,9 +280,6 @@
         "//apex_available:platform",
         "com.android.adbd",
         "com.android.adservices",
-        "com.android.art",
-        "com.android.art.debug",
-        "com.android.art.testing",
         "com.android.btservices",
         "com.android.compos",
         "com.android.conscrypt",
@@ -348,8 +342,6 @@
 cc_library_static {
     name: "libcrypto_static",
     visibility: [
-        "//art/build/sdk",
-        "//art/dex2oat", // Only for test use (note this module isn't in apex_available).
         "//bootable/recovery/updater",
         "//bootable/deprecated-ota/updater",
         "//external/conscrypt",
@@ -412,6 +404,46 @@
     ],
 }
 
+// For static linking into the ART module to provide limited functionality:
+// bignums and SHA1 for ELF checksums.
+cc_library_static {
+    name: "libcrypto_for_art",
+    defaults: [
+        "libcrypto_defaults",
+        "boringssl_defaults",
+    ],
+    srcs: [
+        "src/crypto/cpu_*.c",
+        "src/crypto/crypto.c",
+        "src/crypto/err/err.c",
+        "src/crypto/fipsmodule/bn/*.c",
+        "src/crypto/fipsmodule/bn/asm/*.c",
+        "src/crypto/fipsmodule/rand/*.c",
+        "src/crypto/fipsmodule/sha/sha1.c",
+        "src/crypto/mem.c",
+        "src/crypto/stack/stack.c",
+        "src/crypto/thread_pthread.c",
+        "src/gen/crypto/err_data.c",
+    ],
+    target: {
+        linux: {
+            srcs: [
+                "src/gen/bcm/*-linux.S",
+            ],
+        },
+    },
+    visibility: [
+        "//art:__subpackages__",
+        "//libcore:__subpackages__",
+    ],
+    apex_available: [
+        "com.android.art",
+        "com.android.art.debug",
+        "com.android.art.testing",
+    ],
+    min_sdk_version: "29",
+}
+
 // Common defaults for lib*_fuzz_unsafe. These are unsafe and deterministic
 // libraries for testing and fuzzing only. See src/FUZZING.md.
 cc_defaults {