# # Copyright (C) 2008 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Make sure our needed product policy is present. ifeq ($(PRODUCT_POLICY),) $(error PRODUCT_POLICY MUST be defined.) else ifeq ($(filter $(PRODUCT_POLICY),$(ALL_MODULES)),) $(error No module defined for the given PRODUCT_POLICY ($(PRODUCT_POLICY))) else # The policy MUST specify a module which builds a single jar ifneq ($(words $(call module-built-files,$(PRODUCT_POLICY))),1) $(error Policy module $(PRODUCT_POLICY) must build a single library jar) endif endif endif # We will always build all the policies. Then, we will copy the jars from # the product specified policy into the locations where the current module # is expected to have its jars. Then, the normal module install code will # take care of things. We make each policy me non-installable, so that only # the right one gets taken and installed. Having all the policies built # also allows us to have unittests that refer to specific policies, but not # necessarily the one used for the current product being built. # TODO: Is this the best way to do this? LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := android.policy LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX) LOCAL_BUILT_MODULE_STEM := javalib.jar # base_rules.mk may use this in unintended ways if a stale value is # left lying around, so make sure to clear it. all_res_assets := ####################################### include $(BUILD_SYSTEM)/base_rules.mk ####################################### src_classes_jar := $(call _java-lib-full-classes.jar,$(PRODUCT_POLICY)) tgt_classes_jar := $(call _java-lib-full-classes.jar,$(LOCAL_MODULE)) src_javalib_jar := $(call module-built-files,$(PRODUCT_POLICY)) tgt_javalib_jar := $(LOCAL_BUILT_MODULE) # make sure that the classes file gets there first since some rules in other # places assume that the classes.jar for a module exists if the javalib.jar # file exists. $(tgt_javalib_jar): $(tgt_classes_jar) $(tgt_javalib_jar): $(src_javalib_jar) | $(ACP) @echo "Copying policy javalib.jar: $@" $(copy-file-to-target) $(tgt_classes_jar): $(src_classes_jar) | $(ACP) @echo "Copying policy classes.jar: $@" $(copy-file-to-target) # # Clean up after ourselves when switching build types # .PHONY: policy_installclean policy_installclean: PRIVATE_CLEAN_DIR := $(call local-intermediates-dir,COMMON) policy_installclean: $(hide) rm -rf $(PRIVATE_CLEAN_DIR) installclean: policy_installclean