1# 2# Copyright (C) 2017 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# $(1): List of target native files to copy. 18# $(2): Copy destination directory. 19# Evaluates to a list of ":"-separated pairs src:dst. 20define target-native-copy-pairs 21$(foreach m,$(1),\ 22 $(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\ 23 $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\ 24 $(eval _module_class_folder := $($(strip MODULE_CLASS_$(word 1, $(strip $(ALL_MODULES.$(m).CLASS)\ 25 $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS))))))\ 26 $(foreach i, $(_built_files),\ 27 $(eval bui_ins := $(subst :,$(space),$(i)))\ 28 $(eval ins := $(word 2,$(bui_ins)))\ 29 $(if $(filter $(TARGET_OUT_ROOT)/%,$(ins)),\ 30 $(eval bui := $(word 1,$(bui_ins)))\ 31 $(if $(filter $(_module_class_folder), nativetest benchmarktest),\ 32 $(eval module_class_folder_stem := $(_module_class_folder)$(findstring 64, $(patsubst $(PRODUCT_OUT)/%,%,$(ins)))),\ 33 $(eval module_class_folder_stem := $(_module_class_folder)))\ 34 $(eval my_copy_dest := $(patsubst data/%,DATA/%,\ 35 $(patsubst testcases/%,DATA/$(module_class_folder_stem)/%,\ 36 $(patsubst testcases/$(m)/$(TARGET_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\ 37 $(patsubst testcases/$(m)/$(TARGET_2ND_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\ 38 $(patsubst system/%,DATA/%,\ 39 $(patsubst $(PRODUCT_OUT)/%,%,$(ins))))))))\ 40 $(bui):$(2)/$(my_copy_dest)))) 41endef 42 43# $(1): List of host native files to copy. 44# $(2): Copy destination directory. 45# Evaluates to a list of ":"-separated pairs src:dst. 46define host-native-copy-pairs 47$(foreach m,$(1),\ 48 $(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\ 49 $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\ 50 $(foreach i, $(_built_files),\ 51 $(eval bui_ins := $(subst :,$(space),$(i)))\ 52 $(eval ins := $(word 2,$(bui_ins)))\ 53 $(if $(filter $(HOST_OUT)/% $(HOST_CROSS_OUT)/%,$(ins)),\ 54 $(eval bui := $(word 1,$(bui_ins)))\ 55 $(eval my_copy_dest := $(patsubst $(HOST_OUT)/%,%,\ 56 $(patsubst $(HOST_CROSS_OUT)/%,%,$(ins))))\ 57 $(bui):$(2)/host/$(my_copy_dest)))) 58endef 59 60# $(1): The path to the lsdump. 61# $(2): The path to the output dump. 62define lsdump-to-dump 63$(2) : $(1) $(HOST_OUT_EXECUTABLES)/extract_lsdump 64 @echo "Generate:" $(notdir $(2)) 65 @mkdir -p $(dir $(2)) 66 @rm -f $(2) 67 $(HOST_OUT_EXECUTABLES)/extract_lsdump $(1) $(2) 68endef 69 70# $(1): The target tuple. e.g., arm:arm:armv7-a-neon:32 71# $(2): The output directory. e.g., $(VTS10_TESTCASES_OUT)/vts/testcases/vndk/golden. 72# Evaluates to a list of destination files. (i.e. suitable for dependency list) 73define create-vndk-abi-dump-from-target 74$(strip \ 75 $(eval target_tuple := $(subst :, ,$(1))) \ 76 $(eval primary_arch := $(word 1, $(target_tuple))) \ 77 $(eval arch := $(word 2, $(target_tuple))) \ 78 $(eval arch_variant := $(word 3, $(target_tuple))) \ 79 $(eval binder_bitness := $(word 4, $(target_tuple))) \ 80 $(eval target_arch_variant := \ 81 $(arch)$(if $(filter $(arch_variant),$(arch)),,_$(arch_variant))) \ 82 $(eval lsdump_dir := \ 83 prebuilts/abi-dumps/vndk/$(PLATFORM_VNDK_VERSION)/$(binder_bitness)/$(target_arch_variant)/source-based) \ 84 $(if $(wildcard $(lsdump_dir)),\ 85 $(eval lsdump_names := \ 86 $(call find-files-in-subdirs,$(lsdump_dir),"*.lsdump" -and -type f,.)) \ 87 $(eval abi_dump_dir := \ 88 $(2)/$(PLATFORM_VNDK_VERSION)/binder$(binder_bitness)/$(primary_arch)/$(if $(findstring 64,$(arch)),lib64,lib)) \ 89 $(foreach f,$(lsdump_names),\ 90 $(eval copy_src := $(lsdump_dir)/$(f)) \ 91 $(eval copy_dst := $(abi_dump_dir)/$(f:%.lsdump=%.dump)) \ 92 $(eval $(call lsdump-to-dump,$(copy_src),$(copy_dst))) \ 93 $(copy_dst)))) 94endef 95