Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 1 | # This file defines the rule to fuse the platform.zip into the current PDK build. |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 2 | PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR := |
| 3 | PDK_PLATFORM_JAVA_ZIP_JAVA_HOST_LIB_DIR := \ |
Guang Zhu | 73c10be | 2017-08-24 16:10:44 -0700 | [diff] [blame] | 4 | host/common/obj/JAVA_LIBRARIES/bouncycastle-host_intermediates \ |
| 5 | host/common/obj/JAVA_LIBRARIES/compatibility-host-util_intermediates \ |
| 6 | host/common/obj/JAVA_LIBRARIES/cts-tradefed-harness_intermediates \ |
| 7 | host/common/obj/JAVA_LIBRARIES/hosttestlib_intermediates |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 8 | PDK_PLATFORM_JAVA_ZIP_CONTENTS := |
| 9 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 10 | ifneq (,$(filter platform-java, $(MAKECMDGOALS))$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 11 | # additional items to add to platform.zip for platform-java build |
| 12 | # For these dirs, add classes.jar and javalib.jar from the dir to platform.zip |
| 13 | # all paths under out dir |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 14 | PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR += \ |
Nicholas Sauer | 1b2637e | 2015-03-27 09:26:27 -0700 | [diff] [blame] | 15 | target/common/obj/JAVA_LIBRARIES/android.test.runner_intermediates \ |
| 16 | target/common/obj/JAVA_LIBRARIES/android-common_intermediates \ |
| 17 | target/common/obj/JAVA_LIBRARIES/android-ex-camera2_intermediates \ |
| 18 | target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates \ |
| 19 | target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates \ |
| 20 | target/common/obj/JAVA_LIBRARIES/conscrypt_intermediates \ |
Piotr Jastrzebski | 89b94c8 | 2015-02-17 16:55:52 +0000 | [diff] [blame] | 21 | target/common/obj/JAVA_LIBRARIES/core-oj_intermediates \ |
Nicholas Sauer | 1b2637e | 2015-03-27 09:26:27 -0700 | [diff] [blame] | 22 | target/common/obj/JAVA_LIBRARIES/core-libart_intermediates \ |
Neil Fuller | e857777 | 2018-08-24 14:43:22 +0100 | [diff] [blame] | 23 | target/common/obj/JAVA_LIBRARIES/core-simple_intermediates \ |
Paul Duffin | 6470f4f | 2016-11-29 12:15:13 +0000 | [diff] [blame] | 24 | target/common/obj/JAVA_LIBRARIES/legacy-test_intermediates \ |
Keun-young Park | 37ae422 | 2017-07-27 14:11:49 -0700 | [diff] [blame] | 25 | target/common/obj/JAVA_LIBRARIES/legacy-android-test_intermediates \ |
Nicholas Sauer | 1b2637e | 2015-03-27 09:26:27 -0700 | [diff] [blame] | 26 | target/common/obj/JAVA_LIBRARIES/ext_intermediates \ |
| 27 | target/common/obj/JAVA_LIBRARIES/framework_intermediates \ |
Steven Moreland | 266632f | 2017-10-30 15:43:58 -0700 | [diff] [blame] | 28 | target/common/obj/JAVA_LIBRARIES/hwbinder_intermediates \ |
Nicholas Sauer | 1b2637e | 2015-03-27 09:26:27 -0700 | [diff] [blame] | 29 | target/common/obj/JAVA_LIBRARIES/ims-common_intermediates \ |
| 30 | target/common/obj/JAVA_LIBRARIES/okhttp_intermediates \ |
| 31 | target/common/obj/JAVA_LIBRARIES/telephony-common_intermediates \ |
| 32 | target/common/obj/JAVA_LIBRARIES/voip-common_intermediates \ |
Colin Cross | 4b76499 | 2014-01-29 10:01:37 -0800 | [diff] [blame] | 33 | |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 34 | # not java libraries |
| 35 | PDK_PLATFORM_JAVA_ZIP_CONTENTS += \ |
| 36 | target/common/obj/APPS/framework-res_intermediates/package-export.apk \ |
| 37 | target/common/obj/APPS/framework-res_intermediates/src/R.stamp |
| 38 | endif # platform-java or FUSION build |
| 39 | |
Colin Cross | 074d838 | 2013-12-17 12:06:59 -0800 | [diff] [blame] | 40 | PDK_PLATFORM_JAVA_ZIP_JAVA_LIB_DIR := \ |
| 41 | $(PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR) \ |
| 42 | $(PDK_PLATFORM_JAVA_ZIP_JAVA_HOST_LIB_DIR) |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 43 | |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 44 | PDK_PLATFORM_JAVA_ZIP_CONTENTS += $(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA_LIB_DIR),\ |
Nan Zhang | f12aec3 | 2018-02-08 14:14:32 -0800 | [diff] [blame] | 45 | $(lib_dir)/classes.jar $(lib_dir)/classes-header.jar \ |
Keun-young Park | c8d7349 | 2016-01-26 19:22:37 -0800 | [diff] [blame] | 46 | $(lib_dir)/javalib.jar $(lib_dir)/classes*.dex \ |
| 47 | $(lib_dir)/classes.dex.toc ) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 48 | |
Keun young Park | efe02ce | 2012-06-06 17:19:29 -0700 | [diff] [blame] | 49 | # check and override java support level |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 50 | ifneq ($(TARGET_BUILD_PDK)$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR),) |
| 51 | ifneq ($(wildcard external/proguard),) |
| 52 | TARGET_BUILD_JAVA_SUPPORT_LEVEL := sdk |
| 53 | else # no proguard |
| 54 | TARGET_BUILD_JAVA_SUPPORT_LEVEL := |
| 55 | endif |
| 56 | # platform support is set after checking platform.zip |
Keun young Park | efe02ce | 2012-06-06 17:19:29 -0700 | [diff] [blame] | 57 | endif # PDK |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 58 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 59 | ifneq (,$(PDK_FUSION_PLATFORM_DIR)$(PDK_FUSION_PLATFORM_ZIP)) |
| 60 | |
| 61 | _pdk_fusion_intermediates := |
| 62 | _pdk_fusion_stamp := |
| 63 | _pdk_fusion_file_list := |
| 64 | _pdk_fusion_java_file_list := |
| 65 | PDK_FUSION_SYMLINK_STAMP := |
| 66 | |
| 67 | ifdef PDK_FUSION_PLATFORM_DIR |
| 68 | _pdk_fusion_intermediates := $(PDK_FUSION_PLATFORM_DIR) |
| 69 | _pdk_fusion_file_list := $(sort \ |
| 70 | $(shell cd $(PDK_FUSION_PLATFORM_DIR); find * -type f)) |
| 71 | _pdk_fusion_java_file_list := $(filter target/common/%,$(_pdk_fusion_file_list)) |
| 72 | _pdk_fusion_file_list := $(filter-out target/common/%,$(_pdk_fusion_file_list)) |
| 73 | |
| 74 | PDK_FUSION_SYMLINK_STAMP := $(call intermediates-dir-for, PACKAGING, pdk_fusion)/pdk_symlinks.stamp |
| 75 | |
| 76 | symlink_list := $(sort \ |
| 77 | $(shell cd $(PDK_FUSION_PLATFORM_DIR); find * -type l)) |
| 78 | $(PDK_FUSION_SYMLINK_STAMP): PRIVATE_SYMLINKS := $(foreach s,$(symlink_list),\ |
| 79 | $(s):$(shell readlink $(PDK_FUSION_PLATFORM_DIR)/$(s))) |
| 80 | $(PDK_FUSION_SYMLINK_STAMP): |
| 81 | $(foreach s,$(PRIVATE_SYMLINKS),\ |
| 82 | mkdir -p $(PRODUCT_OUT)/$(dir $(call word-colon,1,$(s))) && \ |
| 83 | ln -sf $(call word-colon,2,$(s)) $(PRODUCT_OUT)/$(call word-colon,1,$(s)) &&) true |
| 84 | touch $@ |
| 85 | |
| 86 | symlink_list := |
| 87 | endif # PDK_FUSION_PLATFORM_DIR |
| 88 | |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 89 | ifdef PDK_FUSION_PLATFORM_ZIP |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 90 | _pdk_fusion_intermediates := $(call intermediates-dir-for, PACKAGING, pdk_fusion) |
| 91 | _pdk_fusion_stamp := $(_pdk_fusion_intermediates)/pdk_fusion.stamp |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 92 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 93 | _pdk_fusion_file_list := $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) \ |
| 94 | '*[^/]' -x 'target/common/*' 2>/dev/null) |
| 95 | _pdk_fusion_java_file_list := \ |
| 96 | $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) 'target/common/*' 2>/dev/null) |
| 97 | _pdk_fusion_files := $(addprefix $(_pdk_fusion_intermediates)/,\ |
| 98 | $(_pdk_fusion_file_list) $(_pdk_fusion_java_file_list)) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 99 | |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 100 | $(_pdk_fusion_stamp) : $(PDK_FUSION_PLATFORM_ZIP) |
| 101 | @echo "Unzip $(dir $@) <- $<" |
| 102 | $(hide) rm -rf $(dir $@) && mkdir -p $(dir $@) |
| 103 | $(hide) unzip -qo $< -d $(dir $@) |
Keun young Park | d8de82f | 2012-05-25 10:52:44 -0700 | [diff] [blame] | 104 | $(call split-long-arguments,-touch,$(_pdk_fusion_files)) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 105 | $(hide) touch $@ |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 106 | |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 107 | $(_pdk_fusion_files) : $(_pdk_fusion_stamp) |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 108 | endif # PDK_FUSION_PLATFORM_ZIP |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 109 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 110 | ifneq ($(_pdk_fusion_java_file_list),) |
| 111 | # This represents whether java build can use platform API or not |
| 112 | # This should not be used in Android.mk |
| 113 | TARGET_BUILD_PDK_JAVA_PLATFORM := true |
| 114 | ifneq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),) |
| 115 | TARGET_BUILD_JAVA_SUPPORT_LEVEL := platform |
| 116 | endif |
| 117 | endif |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 118 | |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 119 | # Implicit pattern rules to copy the fusion files to the system image directory. |
| 120 | # Note that if there is already explicit rule in the build system to generate a file, |
| 121 | # the pattern rule will be just ignored by make. |
| 122 | # That's desired by us: we want only absent files from the platform zip package. |
| 123 | # Copy with the last-modified time preserved, never follow symbolic links. |
Colin Cross | 2bea2e6 | 2012-04-23 18:49:04 -0700 | [diff] [blame] | 124 | $(PRODUCT_OUT)/% : $(_pdk_fusion_intermediates)/% $(_pdk_fusion_stamp) |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 125 | @mkdir -p $(dir $@) |
Sungmin Choi | 79d5109 | 2013-02-04 00:54:03 +0900 | [diff] [blame] | 126 | $(hide) rm -rf $@ |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 127 | $(hide) cp -fpPR $< $@ |
| 128 | |
Colin Cross | c451a37 | 2013-12-18 19:36:44 -0800 | [diff] [blame] | 129 | # implicit rules for host java files |
| 130 | $(HOST_COMMON_OUT_ROOT)/% : $(_pdk_fusion_intermediates)/host/common/% $(_pdk_fusion_stamp) |
| 131 | @mkdir -p $(dir $@) |
| 132 | $(hide) cp -fpPR $< $@ |
| 133 | |
Keun young Park | efe02ce | 2012-06-06 17:19:29 -0700 | [diff] [blame] | 134 | ifeq (true,$(TARGET_BUILD_PDK_JAVA_PLATFORM)) |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 135 | PDK_FUSION_OUT_DIR := $(OUT_DIR) |
Ying Wang | 82b836f | 2012-03-30 18:08:07 -0700 | [diff] [blame] | 136 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 137 | define JAVA_dependency_template |
| 138 | $(call add-dependency,$(PDK_FUSION_OUT_DIR)/$(strip $(1)),\ |
| 139 | $(foreach d,$(filter $(2),$(_pdk_fusion_java_file_list)),$(PDK_FUSION_OUT_DIR)/$(d))) |
| 140 | endef |
keunyoung | a219bdc | 2013-07-25 18:20:09 -0700 | [diff] [blame] | 141 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 142 | # needs explicit dependency as package-export.apk is not explicitly pulled |
| 143 | $(eval $(call JAVA_dependency_template,\ |
| 144 | target/common/obj/APPS/framework-res_intermediates/src/R.stamp,\ |
| 145 | target/common/obj/APPS/framework-res_intermediates/package-export.apk)) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 146 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 147 | # javalib.jar should pull classes.jar as classes.jar is not explicitly pulled. |
| 148 | $(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR),\ |
| 149 | $(eval $(call JAVA_dependency_template,$(lib_dir)/javalib.jar,\ |
| 150 | $(lib_dir)/classes.jar))) |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 151 | |
Colin Cross | 074d838 | 2013-12-17 12:06:59 -0800 | [diff] [blame] | 152 | # implicit rules for all other target files |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 153 | $(TARGET_COMMON_OUT_ROOT)/% : $(_pdk_fusion_intermediates)/target/common/% $(_pdk_fusion_stamp) |
| 154 | @mkdir -p $(dir $@) |
| 155 | $(hide) cp -fpPR $< $@ |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 156 | endif # TARGET_BUILD_PDK_JAVA_PLATFORM |
Keun young Park | ebb351e | 2012-04-19 15:36:18 -0700 | [diff] [blame] | 157 | |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 158 | ALL_PDK_FUSION_FILES := $(addprefix $(PRODUCT_OUT)/, $(_pdk_fusion_file_list)) |
| 159 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 160 | endif # PDK_FUSION_PLATFORM_ZIP || PDK_FUSION_PLATFORM_DIR |
Keun young Park | 816b9fd | 2012-05-16 10:32:41 -0700 | [diff] [blame] | 161 | |
Keun young Park | ebb351e | 2012-04-19 15:36:18 -0700 | [diff] [blame] | 162 | ifeq ($(TARGET_BUILD_PDK),true) |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 163 | $(info PDK TARGET_BUILD_JAVA_SUPPORT_LEVEL $(TARGET_BUILD_JAVA_SUPPORT_LEVEL)) |
| 164 | ifeq ($(TARGET_BUILD_PDK_JAVA_PLATFORM),) |
| 165 | # SDK used for Java build under PDK |
| 166 | PDK_BUILD_SDK_VERSION := $(lastword $(TARGET_AVAILABLE_SDK_VERSIONS)) |
| 167 | $(info PDK Build uses SDK $(PDK_BUILD_SDK_VERSION)) |
| 168 | else # PDK_JAVA |
| 169 | $(info PDK Build uses the current platform API) |
| 170 | endif # PDK_JAVA |
Keun young Park | ebb351e | 2012-04-19 15:36:18 -0700 | [diff] [blame] | 171 | endif # BUILD_PDK |
Keun young Park | 7222669 | 2012-07-31 17:13:20 -0700 | [diff] [blame] | 172 | |
| 173 | ifneq (,$(filter platform platform-java, $(MAKECMDGOALS))$(filter true,$(TARGET_BUILD_PDK))) |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 174 | # files under $(PRODUCT_OUT)/symbols to help debugging. |
| 175 | # Source not included to PDK due to dependency issue, so provide symbols instead. |
Ying Wang | 788c778 | 2014-05-15 10:54:32 -0700 | [diff] [blame] | 176 | |
Colin Cross | 7363cde | 2018-09-14 21:51:11 -0700 | [diff] [blame] | 177 | PDK_SYMBOL_FILES_LIST := |
| 178 | ifeq ($(TARGET_IS_64_BIT),true) |
| 179 | PDK_SYMBOL_FILES_LIST += system/bin/app_process64 |
| 180 | ifdef TARGET_2ND_ARCH |
| 181 | PDK_SYMBOL_FILES_LIST += system/bin/app_process32 |
| 182 | endif |
| 183 | else |
| 184 | PDK_SYMBOL_FILES_LIST += system/bin/app_process32 |
| 185 | endif |
Keun young Park | 7222669 | 2012-07-31 17:13:20 -0700 | [diff] [blame] | 186 | |
Dan Willemsen | 0663f68 | 2018-03-06 14:07:21 -0800 | [diff] [blame] | 187 | ifneq (,$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) |
| 188 | # symbols should be explicitly pulled for fusion build |
| 189 | $(foreach f,$(filter $(PDK_SYMBOL_FILES_LIST), $(_pdk_fusion_file_list)),\ |
| 190 | $(eval $(call add-dependency,$(PRODUCT_OUT)/$(f),$(PRODUCT_OUT)/symbols/$(f)))) |
| 191 | endif # PLATFORM_ZIP || PLATFORM_DIR |
| 192 | endif # platform.zip/dir build or PDK |