Add new properties

Droiddoc_options is added, since all sdk libraries don't builds with the
same argument. We provide basic droiddoc argument and options can be
added like "stubsourceonly" by this property.

When building stubs, soong don't make dex files, but some module uses
dex files from stubs. So Complie_dex is added for compiling dex
regardless of installable.

Srcs_lib_whitelist_pkgs property is added for using other whitelist
pkgs instead of "android.annotation".

Bug: 77577799
Test: m -j
Change-Id: Ic2fb7bc9c49a825550dbebe3e9132ad9a735322f
diff --git a/java/sdk_library.go b/java/sdk_library.go
index 57a0c3a..525652a 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -117,6 +117,17 @@
 		Javacflags []string
 	}
 
+	// Additional droiddoc options
+	Droiddoc_options []string
+
+	// If set to true, compile dex regardless of installable.  Defaults to false.
+	// This applies to the stubs lib.
+	Compile_dex *bool
+
+	// the sub dirs under srcs_lib_whitelist_dirs will be scanned for java srcs.
+	// Defaults to "android.annotation".
+	Srcs_lib_whitelist_pkgs []string
+
 	// TODO: determines whether to create HTML doc or not
 	//Html_doc *bool
 }
@@ -359,6 +370,7 @@
 		Soc_specific      *bool
 		Device_specific   *bool
 		Product_specific  *bool
+		Compile_dex       *bool
 		Product_variables struct {
 			Unbundled_build struct {
 				Enabled *bool
@@ -377,6 +389,9 @@
 	// Unbundled apps will use the prebult one from /prebuilts/sdk
 	props.Product_variables.Unbundled_build.Enabled = proptools.BoolPtr(false)
 	props.Product_variables.Pdk.Enabled = proptools.BoolPtr(false)
+	if module.properties.Compile_dex != nil {
+		props.Compile_dex = module.properties.Compile_dex
+	}
 
 	if module.SocSpecific() {
 		props.Soc_specific = proptools.BoolPtr(true)
@@ -430,7 +445,7 @@
 	droiddocArgs := " -hide 110 -hide 111 -hide 113 -hide 121 -hide 125 -hide 126 -hide 127 -hide 128" +
 		" -stubpackages " + strings.Join(module.properties.Api_packages, ":") +
 		" " + android.JoinWithPrefix(module.properties.Hidden_api_packages, "-hidePackage ") +
-		" -nodocs"
+		" " + android.JoinWithPrefix(module.properties.Droiddoc_options, "-") + " -nodocs"
 	switch apiScope {
 	case apiScopeSystem:
 		droiddocArgs = droiddocArgs + " -showAnnotation android.annotation.SystemApi"
@@ -488,7 +503,11 @@
 	props.Srcs_lib_whitelist_dirs = []string{"core/java"}
 	// Add android.annotation package to give access to the framework-defined
 	// annotations such as SystemApi, NonNull, etc.
-	props.Srcs_lib_whitelist_pkgs = []string{"android.annotation"}
+	if module.properties.Srcs_lib_whitelist_pkgs != nil {
+		props.Srcs_lib_whitelist_pkgs = module.properties.Srcs_lib_whitelist_pkgs
+	} else {
+		props.Srcs_lib_whitelist_pkgs = []string{"android.annotation"}
+	}
 	// These libs are required by doclava to parse the framework sources add via
 	// Src_lib and Src_lib_whitelist_* properties just above.
 	// If we don't add them to the classpath, errors messages are generated by doclava,