blob: 8b77bcb080f122592f1b35154f3a3102535d6d6a [file] [log] [blame]
#
# Copyright (C) 2017 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.
#
# $(1): List of target native files to copy.
# $(2): Copy destination directory.
# Evaluates to a list of ":"-separated pairs src:dst.
define target-native-copy-pairs
$(foreach m,$(1),\
$(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\
$(eval _module_class_folder := $($(strip MODULE_CLASS_$(word 1, $(strip $(ALL_MODULES.$(m).CLASS)\
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS))))))\
$(foreach i, $(_built_files),\
$(eval bui_ins := $(subst :,$(space),$(i)))\
$(eval ins := $(word 2,$(bui_ins)))\
$(if $(filter $(TARGET_OUT_ROOT)/%,$(ins)),\
$(eval bui := $(word 1,$(bui_ins)))\
$(if $(filter $(_module_class_folder), nativetest benchmarktest),\
$(eval module_class_folder_stem := $(_module_class_folder)$(findstring 64, $(patsubst $(PRODUCT_OUT)/%,%,$(ins)))),\
$(eval module_class_folder_stem := $(_module_class_folder)))\
$(eval my_copy_dest := $(patsubst data/%,DATA/%,\
$(patsubst testcases/%,DATA/$(module_class_folder_stem)/%,\
$(patsubst testcases/$(m)/$(TARGET_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\
$(patsubst testcases/$(m)/$(TARGET_2ND_ARCH)/%,DATA/$(module_class_folder_stem)/$(m)/%,\
$(patsubst system/%,DATA/%,\
$(patsubst $(PRODUCT_OUT)/%,%,$(ins))))))))\
$(bui):$(2)/$(my_copy_dest))))
endef
# $(1): List of host native files to copy.
# $(2): Copy destination directory.
# Evaluates to a list of ":"-separated pairs src:dst.
define host-native-copy-pairs
$(foreach m,$(1),\
$(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\
$(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\
$(foreach i, $(_built_files),\
$(eval bui_ins := $(subst :,$(space),$(i)))\
$(eval ins := $(word 2,$(bui_ins)))\
$(if $(filter $(HOST_OUT)/% $(HOST_CROSS_OUT)/%,$(ins)),\
$(eval bui := $(word 1,$(bui_ins)))\
$(eval my_copy_dest := $(patsubst $(HOST_OUT)/%,%,\
$(patsubst $(HOST_CROSS_OUT)/%,%,$(ins))))\
$(bui):$(2)/host/$(my_copy_dest))))
endef
# $(1): The path to the lsdump.
# $(2): The path to the output dump.
define lsdump-to-dump
$(2) : $(1) $(HOST_OUT_EXECUTABLES)/extract_lsdump
@echo "Generate:" $(notdir $(2))
@mkdir -p $(dir $(2))
@rm -f $(2)
$(HOST_OUT_EXECUTABLES)/extract_lsdump $(1) $(2)
endef
# $(1): The target tuple. e.g., arm:arm:armv7-a-neon:32
# $(2): The output directory. e.g., $(VTS10_TESTCASES_OUT)/vts/testcases/vndk/golden.
# Evaluates to a list of destination files. (i.e. suitable for dependency list)
define create-vndk-abi-dump-from-target
$(strip \
$(eval target_tuple := $(subst :, ,$(1))) \
$(eval primary_arch := $(word 1, $(target_tuple))) \
$(eval arch := $(word 2, $(target_tuple))) \
$(eval arch_variant := $(word 3, $(target_tuple))) \
$(eval binder_bitness := $(word 4, $(target_tuple))) \
$(eval target_arch_variant := \
$(arch)$(if $(filter $(arch_variant),$(arch)),,_$(arch_variant))) \
$(eval lsdump_dir := \
prebuilts/abi-dumps/vndk/$(PLATFORM_VNDK_VERSION)/$(binder_bitness)/$(target_arch_variant)/source-based) \
$(if $(wildcard $(lsdump_dir)),\
$(eval lsdump_names := \
$(call find-files-in-subdirs,$(lsdump_dir),"*.lsdump" -and -type f,.)) \
$(eval abi_dump_dir := \
$(2)/$(PLATFORM_VNDK_VERSION)/binder$(binder_bitness)/$(primary_arch)/$(if $(findstring 64,$(arch)),lib64,lib)) \
$(foreach f,$(lsdump_names),\
$(eval copy_src := $(lsdump_dir)/$(f)) \
$(eval copy_dst := $(abi_dump_dir)/$(f:%.lsdump=%.dump)) \
$(eval $(call lsdump-to-dump,$(copy_src),$(copy_dst))) \
$(copy_dst))))
endef