blob: 1b8cb499c6527f8fa537f50e3ab55beac1431c69 [file] [log] [blame]
#
# 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