Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c857ed2a authored by Nicolas Geoffray's avatar Nicolas Geoffray Committed by Gerrit Code Review
Browse files

Merge "Fix build time preopt with shared library uses."

parents a4fd5e72 c04f3126
Loading
Loading
Loading
Loading
+40 −25
Original line number Diff line number Diff line
@@ -16,39 +16,54 @@

set -e

# inputs:
# $1 is PRIVATE_CONDITIONAL_USES_LIBRARIES_HOST
# $2 is PRIVATE_CONDITIONAL_USES_LIBRARIES_TARGET

# class_loader_context: library paths on the host
# stored_class_loader_context_libs: library paths on device
# these are both comma separated paths, example: lib1.jar:lib2.jar or /system/framework/lib1.jar:/system/framework/lib2.jar

# target_sdk_version: parsed from manifest
# my_conditional_host_libs: libraries conditionally added for non P
# my_conditional_target_libs: target libraries conditionally added for non P
#
# outputs
# class_loader_context_arg: final class loader conext arg
# stored_class_loader_context_arg: final stored class loader context arg

my_conditional_host_libs=$1
my_conditional_target_libs=$2
# The hidl.manager shared library has a dependency on hidl.base. We'll manually
# add that information to the class loader context if we see those libraries.
hidl_manager="android.hidl.manager-V1.0-java"
hidl_base="android.hidl.base-V1.0-java"

# Note that SDK 28 is P.
if [[ "${target_sdk_version}" -lt "28" ]]; then
function add_to_contexts {
  for i in $1; do
    if [[ -z "${class_loader_context}" ]]; then
    export class_loader_context="${my_conditional_host_libs}"
      export class_loader_context="PCL[$i]"
    else
    export class_loader_context="${my_conditional_host_libs}:${class_loader_context}"
      export class_loader_context+="#PCL[$i]"
    fi
  if [[ -z "${stored_class_loader_context_libs}" ]]; then
    export stored_class_loader_context_libs="${my_conditional_target_libs}";
    if [[ $i == *"$hidl_manager"* ]]; then
      export class_loader_context+="{PCL[${i/$hidl_manager/$hidl_base}]}"
    fi
  done

  for i in $2; do
    if [[ -z "${stored_class_loader_context}" ]]; then
      export stored_class_loader_context="PCL[$i]"
    else
    export stored_class_loader_context_libs="${my_conditional_target_libs}:${stored_class_loader_context_libs}";
      export stored_class_loader_context+="#PCL[$i]"
    fi
    if [[ $i == *"$hidl_manager"* ]]; then
      export stored_class_loader_context+="{PCL[${i/$hidl_manager/$hidl_base}]}"
    fi
  done
}

# The order below must match what the package manager also computes for
# class loader context.

if [[ "${target_sdk_version}" -lt "28" ]]; then
  add_to_contexts "${conditional_host_libs_28}" "${conditional_target_libs_28}"
fi

if [[ "${target_sdk_version}" -lt "29" ]]; then
  add_to_contexts "${conditional_host_libs_29}" "${conditional_target_libs_29}"
fi

add_to_contexts "${dex_preopt_host_libraries}" "${dex_preopt_target_libraries}"

# Generate the actual context string.
export class_loader_context_arg="--class-loader-context=PCL[${class_loader_context}]"
export stored_class_loader_context_arg="--stored-class-loader-context=PCL[${stored_class_loader_context_libs}]"
export class_loader_context_arg="--class-loader-context=PCL[]{${class_loader_context}}"
export stored_class_loader_context_arg="--stored-class-loader-context=PCL[]{${stored_class_loader_context}}"
+2 −2
Original line number Diff line number Diff line
@@ -192,7 +192,7 @@ ifdef LOCAL_DEX_PREOPT
  $(call add_json_list, OptionalUsesLibraries,         $(LOCAL_OPTIONAL_USES_LIBRARIES))
  $(call add_json_list, UsesLibraries,                 $(LOCAL_USES_LIBRARIES))
  $(call add_json_map,  LibraryPaths)
  $(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl),\
  $(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl android.hidl.base-V1.0-java android.hidl.manager-V1.0-java),\
    $(call add_json_str, $(lib), $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar))
  $(call end_json_map)
  $(call add_json_list, Archs,                         $(my_dexpreopt_archs))
@@ -233,7 +233,7 @@ ifdef LOCAL_DEX_PREOPT
  my_dexpreopt_deps := $(my_dex_jar)
  my_dexpreopt_deps += $(if $(my_process_profile),$(LOCAL_DEX_PREOPT_PROFILE))
  my_dexpreopt_deps += \
    $(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl),\
    $(foreach lib,$(sort $(LOCAL_USES_LIBRARIES) $(LOCAL_OPTIONAL_USES_LIBRARIES) org.apache.http.legacy.impl android.hidl.base-V1.0-java android.hidl.manager-V1.0-java),\
      $(call intermediates-dir-for,JAVA_LIBRARIES,$(lib),,COMMON)/javalib.jar)
  my_dexpreopt_deps += $(LOCAL_DEX_PREOPT_IMAGE_LOCATION)
  # TODO: default boot images