Home | History | Annotate | Download | only in core
      1 # Auto-generate module defitions from platform.zip.
      2 # We use these rules to rebuild .odex files of the .jar/.apk inside the platform.zip.
      3 #
      4 
      5 ifdef PDK_FUSION_PLATFORM_ZIP
      6 pdk_dexpreopt_config_mk := $(TARGET_OUT_INTERMEDIATES)/pdk_dexpreopt_config.mk
      7 
      8 $(shell rm -f $(pdk_dexpreopt_config_mk) && mkdir -p $(dir $(pdk_dexpreopt_config_mk)) && \
      9         unzip -qo $(PDK_FUSION_PLATFORM_ZIP) -d $(dir $(pdk_dexpreopt_config_mk)) pdk_dexpreopt_config.mk 2>/dev/null)
     10 endif
     11 
     12 ifdef PDK_FUSION_PLATFORM_DIR
     13 pdk_dexpreopt_config_mk := $(PDK_FUSION_PLATFORM_DIR)/pdk_dexpreopt_config.mk
     14 endif
     15 
     16 -include $(pdk_dexpreopt_config_mk)
     17 
     18 # Define a PDK prebuilt module that comes from platform.zip.
     19 # Must be called with $(eval)
     20 define prebuilt-pdk-java-module
     21 include $(CLEAR_VARS)
     22 LOCAL_MODULE:=$(1)
     23 LOCAL_MODULE_CLASS:=$(2)
     24 # Use LOCAL_PREBUILT_MODULE_FILE instead of LOCAL_SRC_FILES so we don't need to deal with LOCAL_PATH.
     25 LOCAL_PREBUILT_MODULE_FILE:=$(3)
     26 LOCAL_DEX_PREOPT:=$(4)
     27 LOCAL_MULTILIB:=$(5)
     28 LOCAL_DEX_PREOPT_FLAGS:=$(6)
     29 LOCAL_BUILT_MODULE_STEM:=$(7)
     30 LOCAL_MODULE_SUFFIX:=$(suffix $(7))
     31 LOCAL_PRIVILEGED_MODULE:=$(8)
     32 LOCAL_VENDOR_MODULE:=$(9)
     33 LOCAL_MODULE_TARGET_ARCH:=$(10)
     34 LOCAL_REPLACE_PREBUILT_APK_INSTALLED:=$(11)
     35 LOCAL_CERTIFICATE:=PRESIGNED
     36 include $(BUILD_PREBUILT)
     37 
     38 # The source prebuilts are extracted in the rule of _pdk_fusion_stamp.
     39 # Use a touch rule to establish the dependency.
     40 ifndef PDK_FUSION_PLATFORM_DIR
     41 $(3) $(11) : $(_pdk_fusion_stamp)
     42 	$(hide) if [ ! -f $$@ ]; then \
     43 	  echo 'Error: $$@ does not exist. Check your platform.zip.' 1>&2; \
     44 	  exit 1; \
     45 	fi
     46 	$(hide) touch $$@
     47 endif
     48 endef
     49 
     50 # We don't have a LOCAL_PATH for the auto-generated modules, so let it be the $(BUILD_SYSTEM).
     51 LOCAL_PATH := $(BUILD_SYSTEM)
     52 
     53 ##### Java libraries.
     54 # Only set up rules for modules that aren't built from source.
     55 pdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\
     56   $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l)))
     57 
     58 $(foreach l,$(pdk_prebuilt_libraries), $(eval \
     59   $(call prebuilt-pdk-java-module,\
     60     $(l),\
     61     JAVA_LIBRARIES,\
     62     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\
     63     $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\
     64     $(PDK.DEXPREOPT.$(l).MULTILIB),\
     65     $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\
     66     javalib.jar,\
     67     )))
     68 
     69 ###### Apps.
     70 pdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\
     71   $(if $(MODULE.TARGET.APPS.$(a)),,$(a)))
     72 
     73 $(foreach a,$(pdk_prebuilt_apps), $(eval \
     74   $(call prebuilt-pdk-java-module,\
     75     $(a),\
     76     APPS,\
     77     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\
     78     $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\
     79     $(PDK.DEXPREOPT.$(a).MULTILIB),\
     80     $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\
     81     package.apk,\
     82     $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\
     83     $(PDK.DEXPREOPT.$(a).VENDOR_MODULE),\
     84     $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\
     85     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\
     86     )))
     87