multi_prebuilt.mk revision 9bfd697cffae4b4f2bdbf122c3bbe7920525e718
1# 2# Copyright (C) 2008 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17# Save these before they get cleared by CLEAR_VARS. 18prebuilt_static_libs := $(filter %.a,$(LOCAL_PREBUILT_LIBS)) 19prebuilt_shared_libs := $(filter-out %.a,$(LOCAL_PREBUILT_LIBS)) 20prebuilt_executables := $(LOCAL_PREBUILT_EXECUTABLES) 21prebuilt_java_libraries := $(LOCAL_PREBUILT_JAVA_LIBRARIES) 22prebuilt_static_java_libraries := $(LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES) 23prebuilt_is_host := $(LOCAL_IS_HOST_MODULE) 24 25 26ifndef multi_prebuilt_once 27multi_prebuilt_once := true 28 29# $(1): file list 30# $(2): IS_HOST_MODULE 31# $(3): MODULE_CLASS 32# $(4): OVERRIDE_BUILT_MODULE_PATH 33# $(5): UNINSTALLABLE_MODULE 34# $(6): BUILT_MODULE_STEM 35# 36# Elements in the file list may be bare filenames, 37# or of the form "<modulename>:<filename>". 38# If the module name is not specified, the module 39# name will be the filename with the suffix removed. 40# 41define auto-prebuilt-boilerplate 42$(if $(filter %: :%,$(1)), \ 43 $(error $(LOCAL_PATH): Leading or trailing colons in "$(1)")) \ 44$(foreach t,$(1), \ 45 $(eval include $(CLEAR_VARS)) \ 46 $(eval LOCAL_IS_HOST_MODULE := $(2)) \ 47 $(eval LOCAL_MODULE_CLASS := $(3)) \ 48 $(eval OVERRIDE_BUILT_MODULE_PATH := $(4)) \ 49 $(eval LOCAL_UNINSTALLABLE_MODULE := $(5)) \ 50 $(eval tw := $(subst :, ,$(strip $(t)))) \ 51 $(if $(word 3,$(tw)),$(error $(LOCAL_PATH): Bad prebuilt filename '$(t)')) \ 52 $(if $(word 2,$(tw)), \ 53 $(eval LOCAL_MODULE := $(word 1,$(tw))) \ 54 $(eval LOCAL_SRC_FILES := $(word 2,$(tw))) \ 55 , \ 56 $(eval LOCAL_MODULE := $(basename $(notdir $(t)))) \ 57 $(eval LOCAL_SRC_FILES := $(t)) \ 58 ) \ 59 $(eval ALL_PREBUILT += $(LOCAL_MODULE)) \ 60 $(if $(6), \ 61 $(eval LOCAL_BUILT_MODULE_STEM := $(6)) \ 62 , \ 63 $(eval LOCAL_BUILT_MODULE_STEM := $(notdir $(LOCAL_SRC_FILES))) \ 64 ) \ 65 $(eval LOCAL_MODULE_SUFFIX := $(suffix $(LOCAL_SRC_FILES))) \ 66 $(eval include $(BUILD_PREBUILT)) \ 67 ) 68endef 69 70endif # multi_prebuilt_once 71 72 73$(call auto-prebuilt-boilerplate, \ 74 $(prebuilt_static_libs), \ 75 $(prebuilt_is_host), \ 76 STATIC_LIBRARIES, \ 77 , \ 78 true) 79 80$(call auto-prebuilt-boilerplate, \ 81 $(prebuilt_shared_libs), \ 82 $(prebuilt_is_host), \ 83 SHARED_LIBRARIES, \ 84 $($(if $(prebuilt_is_host),HOST,TARGET)_OUT_INTERMEDIATE_LIBRARIES)) 85 86$(call auto-prebuilt-boilerplate, \ 87 $(prebuilt_executables), \ 88 $(prebuilt_is_host), \ 89 EXECUTABLES) 90 91$(call auto-prebuilt-boilerplate, \ 92 $(prebuilt_java_libraries), \ 93 $(prebuilt_is_host), \ 94 JAVA_LIBRARIES, \ 95 , \ 96 , \ 97 javalib.jar) 98 99$(call auto-prebuilt-boilerplate, \ 100 $(prebuilt_static_java_libraries), \ 101 $(prebuilt_is_host), \ 102 JAVA_LIBRARIES, \ 103 , \ 104 true, \ 105 javalib.jar) 106 107prebuilt_static_libs := 108prebuilt_shared_libs := 109prebuilt_executables := 110prebuilt_java_libraries := 111prebuilt_static_java_libraries := 112prebuilt_is_host := 113