1bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#
2bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# Copyright (C) 2011 The Android Open Source Project
3bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#
4bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# Licensed under the Apache License, Version 2.0 (the "License");
5bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# you may not use this file except in compliance with the License.
6bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# You may obtain a copy of the License at
7bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#
8bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#      http://www.apache.org/licenses/LICENSE-2.0
9bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#
10bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# Unless required by applicable law or agreed to in writing, software
11bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# distributed under the License is distributed on an "AS IS" BASIS,
12bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# See the License for the specific language governing permissions and
14bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# limitations under the License.
15bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom#
16bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom
17afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# The path for which all the dex files are relative, not actually the current directory.
18afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersLOCAL_PATH := art/test
19afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
20afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersinclude art/build/Android.common_test.mk
21afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersinclude art/build/Android.common_path.mk
22afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
23afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Subdirectories in art/test which contain dex files used as inputs for gtests.
24afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersGTEST_DEX_DIRECTORIES := \
25afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  AbstractMethod \
26afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  AllFields \
27afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ExceptionHandle \
28afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  GetMethodSignature \
29afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  Interfaces \
30afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  Main \
31afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  MyClass \
32afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  MyClassNatives \
33afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  Nested \
34afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  NonStaticLeafMethods \
35afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ProtoCompare \
36afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ProtoCompare2 \
37afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  StaticLeafMethods \
38afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  Statics \
39afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  StaticsFromCode \
40afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  Transaction \
41afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  XandY
42afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
43afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Create build rules for each dex file recording the dependency.
44afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-gtest,$(dir), \
451a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers  $(ART_TARGET_NATIVETEST_OUT),art/build/Android.gtest.mk,ART_TEST_TARGET_GTEST_$(dir)_DEX, \
461a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers  ART_TEST_HOST_GTEST_$(dir)_DEX)))
47afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
48afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Dex file dependencies for each gtest.
49eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_class_linker_test_DEX_DEPS := Interfaces MyClass Nested Statics StaticsFromCode
50eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_compiler_driver_test_DEX_DEPS := AbstractMethod
51eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_dex_file_test_DEX_DEPS := GetMethodSignature
52eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_exception_test_DEX_DEPS := ExceptionHandle
53eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_jni_compiler_test_DEX_DEPS := MyClassNatives
54eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_jni_internal_test_DEX_DEPS := AllFields StaticLeafMethods
55eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_object_test_DEX_DEPS := ProtoCompare ProtoCompare2 StaticsFromCode XandY
56eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_proxy_test_DEX_DEPS := Interfaces
57eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_reflection_test_DEX_DEPS := Main NonStaticLeafMethods StaticLeafMethods
58eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_stub_test_DEX_DEPS := AllFields
59eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_transaction_test_DEX_DEPS := Transaction
60afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
61afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# The elf writer test has dependencies on core.oat.
62eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_elf_writer_test_HOST_DEPS := $(HOST_CORE_OAT_OUT) $(2ND_HOST_CORE_OAT_OUT)
63eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_elf_writer_test_TARGET_DEPS := $(TARGET_CORE_OAT_OUT) $(2ND_TARGET_CORE_OAT_OUT)
64afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
65afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# The path for which all the source files are relative, not actually the current directory.
667940e44f4517de5e2634a7e07d58d0fb26160513Brian CarlstromLOCAL_PATH := art
677940e44f4517de5e2634a7e07d58d0fb26160513Brian Carlstrom
68a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromRUNTIME_GTEST_COMMON_SRC_FILES := \
69afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/arch/arch_test.cc \
7086797a791d692f81def5c1b5f0918992c49ed122Serban Constantinescu  runtime/arch/memcmp16_test.cc \
71afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/arch/stub_test.cc \
72afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/barrier_test.cc \
73afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/bit_field_test.cc \
74afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/bit_vector_test.cc \
75e05d1d5fd86867afc7513b1c546375dba11eee50Mathieu Chartier  runtime/base/hash_set_test.cc \
76afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/hex_dump_test.cc \
77afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/histogram_test.cc \
78afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/mutex_test.cc \
79afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/scoped_flock_test.cc \
8034fa79ece5b3a1940d412cd94dbdcc4225aae72fBrian Carlstrom  runtime/base/stringprintf_test.cc \
81afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/timing_logger_test.cc \
82afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/unix_file/fd_file_test.cc \
83afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/unix_file/mapped_file_test.cc \
84afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/unix_file/null_file_test.cc \
85afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/unix_file/random_access_file_utils_test.cc \
86afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/base/unix_file/string_file_test.cc \
87afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/class_linker_test.cc \
88afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/dex_file_test.cc \
89afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/dex_file_verifier_test.cc \
90afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/dex_instruction_visitor_test.cc \
91afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/dex_method_iterator_test.cc \
92afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/entrypoints/math_entrypoints_test.cc \
93afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/entrypoints/quick/quick_trampoline_entrypoints_test.cc \
94afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/entrypoints_order_test.cc \
95afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/exception_test.cc \
962c26501d24d929abe096ecce44f91410290b33c0Mathieu Chartier  runtime/gc/accounting/card_table_test.cc \
97afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/accounting/space_bitmap_test.cc \
98afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/heap_test.cc \
99afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/dlmalloc_space_base_test.cc \
100afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/dlmalloc_space_static_test.cc \
101afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/dlmalloc_space_random_test.cc \
102afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/rosalloc_space_base_test.cc \
103afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/rosalloc_space_static_test.cc \
104afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/rosalloc_space_random_test.cc \
105afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gc/space/large_object_space_test.cc \
106afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/gtest_test.cc \
107afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/handle_scope_test.cc \
108afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/indenter_test.cc \
109afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/indirect_reference_table_test.cc \
110afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/instruction_set_test.cc \
111afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/intern_table_test.cc \
112afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/leb128_test.cc \
113afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/mem_map_test.cc \
114afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/mirror/dex_cache_test.cc \
115afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/mirror/object_test.cc \
11674240819ae09e29b2753ef38f4eb4be1c2762e2eAndreas Gampe  runtime/monitor_pool_test.cc \
1171af6a1fa35ff7dc0a5c653f19dbc8a91c914aa42Elena Sayapina  runtime/monitor_test.cc \
118afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/parsed_options_test.cc \
119afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/reference_table_test.cc \
120afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/thread_pool_test.cc \
121afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/transaction_test.cc \
122afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/utils_test.cc \
123afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/verifier/method_verifier_test.cc \
124afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/verifier/reg_type_test.cc \
125afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/zip_archive_test.cc
126a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom
127a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromCOMPILER_GTEST_COMMON_SRC_FILES := \
128afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/jni_internal_test.cc \
12995b4c65da93500cdbdcaa3e01010771ef3f466f1Jeff Hao  runtime/proxy_test.cc \
130afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  runtime/reflection_test.cc \
13195a059793c4c194f026afc74c713cc295d75d91aVladimir Marko  compiler/dex/global_value_numbering_test.cc \
132afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/dex/local_value_numbering_test.cc \
13355fff044d3a4f7196098e25bab1dad106d9b54a2Vladimir Marko  compiler/dex/mir_graph_test.cc \
134afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/dex/mir_optimization_test.cc \
135afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/driver/compiler_driver_test.cc \
136afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/elf_writer_test.cc \
137afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/image_test.cc \
138afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/jni/jni_compiler_test.cc \
139afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/oat_test.cc \
140afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/codegen_test.cc \
141afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/dominator_test.cc \
142afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/find_loops_test.cc \
143afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/graph_test.cc \
144afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/linearize_test.cc \
145afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/liveness_test.cc \
146afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/live_interval_test.cc \
147afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/live_ranges_test.cc \
148afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/parallel_move_test.cc \
149afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/pretty_printer_test.cc \
150afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/register_allocator_test.cc \
151afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/optimizing/ssa_test.cc \
15299ea58cc68b51837c065f4a2a54efbf208dd76faNicolas Geoffray  compiler/optimizing/stack_map_test.cc \
153afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/output_stream_test.cc \
154afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/arena_allocator_test.cc \
155afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/dedupe_set_test.cc \
15662746d8d9c4400e4764f162b22bfb1a32be287a9Andreas Gampe  compiler/utils/swap_space_test.cc \
157afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/arm/managed_register_arm_test.cc \
158afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/arm64/managed_register_arm64_test.cc \
159afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/x86/managed_register_x86_test.cc \
16051c2467e8771b56e25ae4f17f66522f979f57a7eBrian Carlstrom
1618cc5162f19d64eb6414e7e421cea4413debe671eDragos Sbirleaifeq ($(ART_SEA_IR_MODE),true)
162a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromCOMPILER_GTEST_COMMON_SRC_FILES += \
163afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/scoped_hashtable_test.cc \
164afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/sea_ir/types/type_data_test.cc \
165afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/sea_ir/types/type_inference_visitor_test.cc \
166afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/sea_ir/ir/regions_test.cc
1678cc5162f19d64eb6414e7e421cea4413debe671eDragos Sbirleaendif
1688cc5162f19d64eb6414e7e421cea4413debe671eDragos Sbirlea
169a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromRUNTIME_GTEST_TARGET_SRC_FILES := \
170afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(RUNTIME_GTEST_COMMON_SRC_FILES)
171a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom
172a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromRUNTIME_GTEST_HOST_SRC_FILES := \
173afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(RUNTIME_GTEST_COMMON_SRC_FILES)
174a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom
175a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromCOMPILER_GTEST_TARGET_SRC_FILES := \
176afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(COMPILER_GTEST_COMMON_SRC_FILES)
17751c2467e8771b56e25ae4f17f66522f979f57a7eBrian Carlstrom
178a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian CarlstromCOMPILER_GTEST_HOST_SRC_FILES := \
179afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(COMPILER_GTEST_COMMON_SRC_FILES) \
1801a43dd78d054dbad8d7af9ba4829ea2f1cb70b53Nicolas Geoffray  compiler/utils//assembler_thumb_test.cc \
181afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/x86/assembler_x86_test.cc \
182afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  compiler/utils/x86_64/assembler_x86_64_test.cc
183bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom
184c4c9881e5d22432f3f1a30eeec5aa109dfc08a7dShih-wei LiaoART_TEST_CFLAGS :=
185c531cefbfb5394413122e9f57d211ba436cff012buzbeeifeq ($(ART_USE_PORTABLE_COMPILER),true)
186c531cefbfb5394413122e9f57d211ba436cff012buzbee  ART_TEST_CFLAGS += -DART_USE_PORTABLE_COMPILER=1
1872cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbeeendif
1882cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
189e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude $(CLEAR_VARS)
190e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_MODULE := libart-gtest
191e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_MODULE_TAGS := optional
192e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CPP_EXTENSION := cc
193e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CFLAGS := $(ART_TARGET_CFLAGS)
194e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_SRC_FILES := runtime/common_runtime_test.cc compiler/common_compiler_test.cc
195e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_C_INCLUDES := $(ART_C_INCLUDES) art/runtime art/compiler
196e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_SHARED_LIBRARIES := libcutils libartd libartd-compiler libdl
197e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_STATIC_LIBRARIES += libgtest_libc++
198e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CLANG := $(ART_TARGET_CLANG)
199e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
200e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
201e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude external/libcxx/libcxx.mk
202e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude $(BUILD_SHARED_LIBRARY)
203e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers
204e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude $(CLEAR_VARS)
205e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_MODULE := libart-gtest
206e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_MODULE_TAGS := optional
207e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CPP_EXTENSION := cc
208e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CFLAGS := $(ART_HOST_CFLAGS)
209e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_SRC_FILES := runtime/common_runtime_test.cc compiler/common_compiler_test.cc
210e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_C_INCLUDES := $(ART_C_INCLUDES) art/runtime art/compiler
211e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_SHARED_LIBRARIES := libartd libartd-compiler
212e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_STATIC_LIBRARIES := libcutils
213e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersifneq ($(WITHOUT_HOST_CLANG),true)
214e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers  # GCC host compiled tests fail with this linked, presumably due to destructors that run.
215e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers  LOCAL_STATIC_LIBRARIES += libgtest_libc++_host
216e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersendif
217e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_LDLIBS += -ldl -lpthread
218e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_MULTILIB := both
219e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_CLANG := $(ART_HOST_CLANG)
220e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
221e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian RogersLOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
222e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude external/libcxx/libcxx.mk
223e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogersinclude $(BUILD_HOST_SHARED_LIBRARY)
224e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers
225afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Variables holding collections of gtest pre-requisits used to run a number of gtests.
226afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
227afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
228afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST_RULES :=
229afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
230afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
231afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST_RULES :=
232afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
233afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
234afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST_RULES :=
235afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
236afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define a make rule for a target device gtest.
237afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(1): gtest name - the name of the test we're building such as leb128_test.
238afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture.
239afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine define-art-gtest-rule-target
240afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_rule := test-art-target-gtest-$(1)$$($(2)ART_PHONY_TEST_TARGET_SUFFIX)
241afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
242532714abd50c547f0fdbe830f811d99e621e2d34Brian Carlstrom  # Add the test dependencies to test-art-target-sync, which will be a prerequisite for the test
243afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  # to ensure files are pushed to the device.
244afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  TEST_ART_TARGET_SYNC_DEPS += \
245eb85f2bab0b402094a56276558afbf0e137176ebBrian Carlstrom    $$(ART_GTEST_$(1)_TARGET_DEPS) \
2461a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers    $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_TARGET_GTEST_$(file)_DEX)) \
247afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    $$(ART_TARGET_NATIVETEST_OUT)/$$(TARGET_$(2)ARCH)/$(1) \
248665de8a1710d2418f60d3bffdc99bdac32252530Ian Rogers    $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so
249afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
250afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: $$(gtest_rule)
251afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$$(gtest_rule): test-art-target-sync
252afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID
253afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID
254afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) adb shell chmod 755 $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1)
255afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) $$(call ART_TEST_SKIP,$$@) && \
256327e6b49230c2adcb142fe59ea03a6a13cfe346cBrian Carlstrom	  (adb shell "$(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID" \
257afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	  && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID /tmp/ \
258afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	      && $$(call ART_TEST_PASSED,$$@)) \
259afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	  || $$(call ART_TEST_FAILED,$$@))
260afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) rm /tmp/$$@-$$$$PPID
261afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
262afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_TARGET_GTEST$($(2)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += $$(gtest_rule)
263afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_TARGET_GTEST_RULES += $$(gtest_rule)
264afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_TARGET_GTEST_$(1)_RULES += $$(gtest_rule)
265afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
266afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  # Clear locally defined variables.
267afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_rule :=
268afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef  # define-art-gtest-rule-target
269afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe
270afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define make rules for a host gtests.
271afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(1): gtest name - the name of the test we're building such as leb128_test.
272afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture.
273afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine define-art-gtest-rule-host
274afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_rule := test-art-host-gtest-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
275afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_exe := $$(HOST_OUT_EXECUTABLES)/$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
276665de8a1710d2418f60d3bffdc99bdac32252530Ian Rogers  # Dependencies for all host gtests.
277665de8a1710d2418f60d3bffdc99bdac32252530Ian Rogers  gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \
2784d1231d61862b17bc9dce8ff65c5ada93bdcfb15Nicolas Geoffray    $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION)
279665de8a1710d2418f60d3bffdc99bdac32252530Ian Rogers
280afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe
281afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: $$(gtest_rule)
2821a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_HOST_DEPS) $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) $$(gtest_deps)
2834b70d11dc00b163328c500b0061e9f956dd18903Dmitriy Ivanov	$(hide) ($$(call ART_TEST_SKIP,$$@) && $$< && $$(call ART_TEST_PASSED,$$@)) \
284afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	  || $$(call ART_TEST_FAILED,$$@)
285afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe
286afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gtest_rule)
287afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_GTEST_RULES += $$(gtest_rule)
288afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_GTEST_$(1)_RULES += $$(gtest_rule)
289afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
290afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: valgrind-$$(gtest_rule)
2911a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogersvalgrind-$$(gtest_rule): $$(gtest_exe) $$(ART_GTEST_$(1)_HOST_DEPS) $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) $$(gtest_deps)
292afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) $$(call ART_TEST_SKIP,$$@) && \
293afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	  valgrind --leak-check=full --error-exitcode=1 $$< && $$(call ART_TEST_PASSED,$$@) \
294afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	    || $$(call ART_TEST_FAILED,$$@)
295afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
296afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_VALGRIND_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += valgrind-$$(gtest_rule)
297afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_VALGRIND_GTEST_RULES += valgrind-$$(gtest_rule)
298afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ART_TEST_HOST_VALGRIND_GTEST_$(1)_RULES += valgrind-$$(gtest_rule)
299afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
300afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  # Clear locally defined variables.
301afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  valgrind_gtest_rule :=
302afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_rule :=
303afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  gtest_exe :=
304665de8a1710d2418f60d3bffdc99bdac32252530Ian Rogers  gtest_deps :=
305afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef  # define-art-gtest-rule-host
306afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
307afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define the rules to build and run host and target gtests.
308bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom# $(1): target or host
3090796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom# $(2): file name
310a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom# $(3): extra C includes
311a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom# $(4): extra shared libraries
312afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine define-art-gtest
3130796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  ifneq ($(1),target)
3140796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom    ifneq ($(1),host)
3150796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom      $$(error expected target or host for argument 1, received $(1))
3160796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom    endif
3170796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  endif
3180796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom
3190796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  art_target_or_host := $(1)
3200796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  art_gtest_filename := $(2)
321a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom  art_gtest_extra_c_includes := $(3)
322a1ce1fef2d49d1d537776a5308ace7102a815fe5Brian Carlstrom  art_gtest_extra_shared_libraries := $(4)
3230796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom
324afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  include $$(CLEAR_VARS)
32547a0d5a6f221066c3daf7f67f2122ed9c9cd217cBrian Carlstrom  art_gtest_name := $$(notdir $$(basename $$(art_gtest_filename)))
32647a0d5a6f221066c3daf7f67f2122ed9c9cd217cBrian Carlstrom  LOCAL_MODULE := $$(art_gtest_name)
327871599a0289b6b81f83caafae7ba755718186205Brian Carlstrom  ifeq ($$(art_target_or_host),target)
328871599a0289b6b81f83caafae7ba755718186205Brian Carlstrom    LOCAL_MODULE_TAGS := tests
329871599a0289b6b81f83caafae7ba755718186205Brian Carlstrom  endif
330afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  LOCAL_CPP_EXTENSION := $$(ART_CPP_EXTENSION)
331e7bc70b7c5d704a9ecc5d3b6e0851921e59ba9afDmitriy Ivanov  LOCAL_SRC_FILES := $$(art_gtest_filename)
332afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  LOCAL_C_INCLUDES += $$(ART_C_INCLUDES) art/runtime $$(art_gtest_extra_c_includes)
333e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers  LOCAL_SHARED_LIBRARIES += libartd $$(art_gtest_extra_shared_libraries) libart-gtest
334e7bc70b7c5d704a9ecc5d3b6e0851921e59ba9afDmitriy Ivanov  LOCAL_WHOLE_STATIC_LIBRARIES += libsigchain
3354478eb0a14a154fbdbaeef075dce8a5f8a33b25cBrian Carlstrom
336e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers  LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
337e63db27db913f1a88e2095a1ee8239b2bb9124e8Ian Rogers  LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
338b9cc1ca34adec5e9254f78e9ee40d57348aa2fd0Brian Carlstrom
3390f09676a8f61809c474e71b4a677093615bfba19Elliott Hughes  # Mac OS linker doesn't understand --export-dynamic.
340afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ifneq ($$(HOST_OS)-$$(art_target_or_host),darwin-host)
341b264f081424642b06b0bbe7102781895d41faa9dElliott Hughes    # Allow jni_compiler_test to find Java_MyClassNatives_bar within itself using dlopen(NULL, ...).
342b264f081424642b06b0bbe7102781895d41faa9dElliott Hughes    LOCAL_LDFLAGS := -Wl,--export-dynamic -Wl,-u,Java_MyClassNatives_bar -Wl,-u,Java_MyClassNatives_sbar
343cfede668645d1fd40ff500974188cab5fb49d11cBrian Carlstrom  endif
3440796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom
345afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  LOCAL_CFLAGS := $$(ART_TEST_CFLAGS)
3462a0e954ecf7c60e6ec62d64b9382cc4ee447e224Dan Albert  include external/libcxx/libcxx.mk
3470796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  ifeq ($$(art_target_or_host),target)
348afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    $$(eval $$(call set-target-local-clang-vars))
349afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    $$(eval $$(call set-target-local-cflags-vars,debug))
35015523731549152276f23dcf94d81b1a9ce9c5038Serban Constantinescu    LOCAL_SHARED_LIBRARIES += libdl libicuuc libicui18n libnativehelper libz libcutils libvixl
351afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_PATH_32 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_32)
352afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_PATH_64 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_64)
353afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe    LOCAL_MULTILIB := both
354afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $$(BUILD_EXECUTABLE)
355afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe
356afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES :=
357afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe    ifdef TARGET_2ND_ARCH
358afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),2ND_))
359afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe    endif
360afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),))
361afbaa1aab02cfe519d00336870b1bcd24b61378dAndreas Gampe
362afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    # A rule to run the different architecture versions of the gtest.
363afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: test-art-target-gtest-$$(art_gtest_name)
364afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogerstest-art-target-gtest-$$(art_gtest_name): $$(ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES)
365afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
366afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
367afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    # Clear locally defined variables.
368afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES :=
3690796af03edc06d92bb8d631f1c0c23befdae2315Brian Carlstrom  else # host
370afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_CLANG := $$(ART_HOST_CLANG)
371afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_CFLAGS += $$(ART_HOST_CFLAGS) $$(ART_HOST_DEBUG_CFLAGS)
372bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom    LOCAL_SHARED_LIBRARIES += libicuuc-host libicui18n-host libnativehelper libz-host
37315523731549152276f23dcf94d81b1a9ce9c5038Serban Constantinescu    LOCAL_STATIC_LIBRARIES += libcutils libvixl
374cae10f73bdad63774a3a8bc67d568b131f9bd591Andrew Hsieh    LOCAL_LDLIBS += -lpthread -ldl
375bd5ea6a2f7c61c4cd7b66fead1bedd96e938369dIan Rogers    LOCAL_IS_HOST_MODULE := true
376afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MULTILIB := both
377afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_STEM_32 := $$(art_gtest_name)32
378afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    LOCAL_MODULE_STEM_64 := $$(art_gtest_name)64
379afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    include $$(BUILD_HOST_EXECUTABLE)
380afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
381afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES :=
382afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES :=
383afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ifneq ($$(HOST_PREFER_32_BIT),true)
384afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),2ND_))
385afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    endif
386afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),))
387afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
388afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    # Rules to run the different architecture versions of the gtest.
389afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: test-art-host-gtest-$$(art_gtest_name)
390afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogerstest-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES)
391afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
392afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
393afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: valgrind-test-art-host-gtest-$$(art_gtest_name)
394afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersvalgrind-test-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES)
395afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
396afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
397afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    # Clear locally defined variables.
398afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES :=
399afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES :=
400afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  endif  # host_or_target
401afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
402afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  # Clear locally defined variables.
403afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  art_target_or_host :=
404afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  art_gtest_filename :=
405afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  art_gtest_extra_c_includes :=
406afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  art_gtest_extra_shared_libraries :=
407afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  art_gtest_name :=
408afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef  # define-art-gtest
409bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstrom
410bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstromifeq ($(ART_BUILD_TARGET),true)
411afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(foreach file,$(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),,)))
412afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(foreach file,$(COMPILER_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),art/compiler,libartd-compiler)))
413bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstromendif
414c5f17732d8144491c642776b6b48c85dfadf4b52Ian Rogersifeq ($(ART_BUILD_HOST),true)
415afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(foreach file,$(RUNTIME_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),,)))
416afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  $(foreach file,$(COMPILER_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),art/compiler,libartd-compiler)))
417bbf1e41e8d9b2446756e729f30c2501fb3e682c1Brian Carlstromendif
418ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang Chuang
419ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang Chuang# Used outside the art project to get a list of the current tests
420ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang ChuangRUNTIME_TARGET_GTEST_MAKE_TARGETS :=
421ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang Chuang$(foreach file, $(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval RUNTIME_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file)))))
422ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang ChuangCOMPILER_TARGET_GTEST_MAKE_TARGETS :=
423ec245a42e04adbde15b75d8123287c54fd9fa7b3Tsu Chiang Chuang$(foreach file, $(COMPILER_GTEST_TARGET_SRC_FILES), $(eval COMPILER_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file)))))
424afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
425afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Define all the combinations of host/target, valgrind and suffix such as:
426afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# test-art-host-gtest or valgrind-test-art-host-gtest64
427afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(1): host or target
428afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(2): HOST or TARGET
429afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(3): valgrind- or undefined
430afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# $(4): undefined, 32 or 64
431afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine define-test-art-gtest-combination
432afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  ifeq ($(1),host)
433afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ifneq ($(2),HOST)
434afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      $$(error argument mismatch $(1) and ($2))
435afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    endif
436afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  else
437afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ifneq ($(1),target)
438afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      $$(error found $(1) expected host or target)
439afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    endif
440afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    ifneq ($(2),TARGET)
441afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers      $$(error argument mismatch $(1) and ($2))
442afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers    endif
443afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  endif
444afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
445afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  rule_name := $(3)test-art-$(1)-gtest$(4)
446afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  dependencies := $$(ART_TEST_$(2)_GTEST$(4)_RULES)
447afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
448afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers.PHONY: $$(rule_name)
449afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$$(rule_name): $$(dependencies)
450afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers	$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
451afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
452afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  # Clear locally defined variables.
453afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  rule_name :=
454afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers  dependencies :=
455afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendef  # define-test-art-gtest-combination
456afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
457afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,target,TARGET,,))
458afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,target,TARGET,,$(ART_PHONY_TEST_TARGET_SUFFIX)))
459afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersifdef TARGET_2ND_ARCH
460afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,target,TARGET,,$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)))
461afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendif
462afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,,))
463afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,))
464afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,,$(ART_PHONY_TEST_HOST_SUFFIX)))
465afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,$(ART_PHONY_TEST_HOST_SUFFIX)))
466afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersifneq ($(HOST_PREFER_32_BIT),true)
467afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,,$(2ND_ART_PHONY_TEST_HOST_SUFFIX)))
468afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers$(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,$(2ND_ART_PHONY_TEST_HOST_SUFFIX)))
469afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersendif
470afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers
471afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogers# Clear locally defined variables.
472afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine-art-gtest-rule-target :=
473afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine-art-gtest-rule-host :=
474afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine-art-gtest :=
475afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian Rogersdefine-test-art-gtest-combination :=
476afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersRUNTIME_GTEST_COMMON_SRC_FILES :=
477afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersCOMPILER_GTEST_COMMON_SRC_FILES :=
478afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersRUNTIME_GTEST_TARGET_SRC_FILES :=
479afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersRUNTIME_GTEST_HOST_SRC_FILES :=
480afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersCOMPILER_GTEST_TARGET_SRC_FILES :=
481afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersCOMPILER_GTEST_HOST_SRC_FILES :=
482afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_CFLAGS :=
483afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
484afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
485afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_GTEST_RULES :=
486afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
487afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
488afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_HOST_VALGRIND_GTEST_RULES :=
489afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
490afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
491afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersART_TEST_TARGET_GTEST_RULES :=
492eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_class_linker_test_DEX_DEPS :=
493eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_compiler_driver_test_DEX_DEPS :=
494eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_dex_file_test_DEX_DEPS :=
495eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_exception_test_DEX_DEPS :=
496eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_elf_writer_test_HOST_DEPS :=
497eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_elf_writer_test_TARGET_DEPS :=
498eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_jni_compiler_test_DEX_DEPS :=
499eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_jni_internal_test_DEX_DEPS :=
500eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_object_test_DEX_DEPS :=
501eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_proxy_test_DEX_DEPS :=
502eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_reflection_test_DEX_DEPS :=
503eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_stub_test_DEX_DEPS :=
504eb85f2bab0b402094a56276558afbf0e137176ebBrian CarlstromART_GTEST_transaction_test_DEX_DEPS :=
5051a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_TARGET_GTEST_$(dir)_DEX :=))
5061a2f84e80e852b1e210ed54fa995f3d781a23bd3Ian Rogers$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_HOST_GTEST_$(dir)_DEX :=))
507afd9acc30bdd11cdd12d8209eb994cb371c65e33Ian RogersGTEST_DEX_DIRECTORIES :=
508532714abd50c547f0fdbe830f811d99e621e2d34Brian CarlstromLOCAL_PATH :=
509