Export prebuilt libsimpleperf_readelf library

Bug: 267670561
Test: build
Change-Id: I47d981647296e731506fbe77a6965501c99c113d
diff --git a/Android.bp b/Android.bp
index 2173140..3a96a18 100644
--- a/Android.bp
+++ b/Android.bp
@@ -329,6 +329,24 @@
     ],
 }
 
+llvm_prebuilt_library_static {
+    name: "libsimpleperf_readelf",
+    host_supported: true,
+    sdk_version: "minimum",
+    sanitize: {
+        never: true,
+    },
+    target: {
+        windows: {
+            enabled: true,
+        },
+    },
+    visibility: [
+        "//cts/tests/tests/simpleperf",
+        "//system/extras/simpleperf",
+    ],
+}
+
 // -----------------------------------------------------------------------------
 // Export shared libraries for host tools (libLLVM, libclang, libc++).  These
 // are exported only when the LLVM_BUILD_HOST_TOOLS environment variable is set.
diff --git a/soong/clangprebuilts.go b/soong/clangprebuilts.go
index 1035842..4b1a901 100644
--- a/soong/clangprebuilts.go
+++ b/soong/clangprebuilts.go
@@ -165,6 +165,8 @@
 	Linux_musl_x86_64   archInnerProps
 	Linux_musl_arm      archInnerProps
 	Linux_musl_arm64    archInnerProps
+	Darwin              archInnerProps
+	Windows_x86_64      archInnerProps
 }
 
 func llvmPrebuiltLibraryStatic(ctx android.LoadHookContext) {
@@ -181,6 +183,9 @@
 	if name == "libFuzzer.a" {
 		headerDir := path.Join(getClangPrebuiltDir(ctx), "prebuilt_include", "llvm", "lib", "Fuzzer")
 		p.Export_include_dirs = []string{headerDir}
+	} else if name == "libsimpleperf_readelf.a" {
+		headerDir := path.Join(getClangPrebuiltDir(ctx), "include")
+		p.Export_include_dirs = []string{headerDir}
 	}
 
 	p.Target.Android_arm.Srcs = []string{path.Join(libDir, "arm", name)}
@@ -190,10 +195,18 @@
 	p.Target.Android_x86_64.Srcs = []string{path.Join(libDir, "x86_64", name)}
 	p.Target.Linux_bionic_arm64.Srcs = []string{path.Join(libDir, "aarch64", name)}
 	p.Target.Linux_bionic_x86_64.Srcs = []string{path.Join(libDir, "x86_64", name)}
-	p.Target.Linux_musl_x86.Srcs = []string{path.Join(libDir, "i686-unknown-linux-musl/lib", name)}
-	p.Target.Linux_musl_x86_64.Srcs = []string{path.Join(libDir, "x86_64-unknown-linux-musl/lib", name)}
-	p.Target.Linux_musl_arm.Srcs = []string{path.Join(libDir, "arm-unknown-linux-musleabihf/lib", name)}
-	p.Target.Linux_musl_arm64.Srcs = []string{path.Join(libDir, "aarch64-unknown-linux-musl/lib", name)}
+
+	if name == "libsimpleperf_readelf.a" {
+		p.Target.Glibc_x86_64.Srcs = []string{path.Join(getClangPrebuiltDir(ctx), "lib/x86_64-unknown-linux-gnu", name)}
+		p.Target.Windows_x86_64.Srcs = []string{path.Join(getClangPrebuiltDir(ctx), "lib/x86_64-w64-windows-gnu", name)}
+		p.Target.Darwin.Srcs = []string{":libsimpleperf_readelf_darwin"}
+	} else {
+		p.Target.Linux_musl_x86.Srcs = []string{path.Join(libDir, "i686-unknown-linux-musl/lib", name)}
+		p.Target.Linux_musl_x86_64.Srcs = []string{path.Join(libDir, "x86_64-unknown-linux-musl/lib", name)}
+		p.Target.Linux_musl_arm.Srcs = []string{path.Join(libDir, "arm-unknown-linux-musleabihf/lib", name)}
+		p.Target.Linux_musl_arm64.Srcs = []string{path.Join(libDir, "aarch64-unknown-linux-musl/lib", name)}
+	}
+
 	ctx.AppendProperties(p)
 }
 
@@ -365,7 +378,12 @@
 	if libName == "libc++" || libName == "libc++abi" {
 		libName += ".1"
 	}
-	lib := path.Join(clangDir, "lib", libName+".dylib")
+	if libName == "libsimpleperf_readelf" {
+		libName += ".a"
+	} else {
+		libName += ".dylib"
+	}
+	lib := path.Join(clangDir, "lib", libName)
 
 	type props struct {
 		Srcs []string