Android.mk revision b3356773c6b5fbbbb26d22b3d6c6e0e598840e44
1# 2# Copyright (C) 2012 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 17LOCAL_PATH := $(call my-dir) 18TEST_PATH := $(LOCAL_PATH)/.. 19 20common_cppflags += -std=gnu++11 21common_additional_dependencies := \ 22 $(LOCAL_PATH)/Android.mk \ 23 $(LOCAL_PATH)/Android.build.dlext_testzip.mk \ 24 $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk \ 25 $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk \ 26 $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk \ 27 $(LOCAL_PATH)/Android.build.testlib.mk \ 28 $(TEST_PATH)/Android.build.mk 29 30# ----------------------------------------------------------------------------- 31# Library to test gnu-styled hash 32# ----------------------------------------------------------------------------- 33ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64)) 34libgnu-hash-table-library_src_files := \ 35 dlext_test_library.cpp \ 36 37libgnu-hash-table-library_ldflags := \ 38 -Wl,--hash-style=gnu \ 39 40module := libgnu-hash-table-library 41module_tag := optional 42include $(LOCAL_PATH)/Android.build.testlib.mk 43endif 44 45# ----------------------------------------------------------------------------- 46# Library to test sysv-styled hash 47# ----------------------------------------------------------------------------- 48libsysv-hash-table-library_src_files := \ 49 dlext_test_library.cpp \ 50 51libsysv-hash-table-library_ldflags := \ 52 -Wl,--hash-style=sysv \ 53 54module := libsysv-hash-table-library 55module_tag := optional 56include $(LOCAL_PATH)/Android.build.testlib.mk 57 58# ----------------------------------------------------------------------------- 59# Library used by dlext tests - with GNU RELRO program header 60# ----------------------------------------------------------------------------- 61libdlext_test_src_files := \ 62 dlext_test_library.cpp \ 63 64libdlext_test_ldflags := \ 65 -Wl,-z,relro \ 66 67module := libdlext_test 68module_tag := optional 69include $(LOCAL_PATH)/Android.build.testlib.mk 70 71# ----------------------------------------------------------------------------- 72# create symlink to libdlext_test.so for symlink test 73# ----------------------------------------------------------------------------- 74# Use = instead of := to defer the evaluation of $@ 75$(TARGET_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 76 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 77 78ifneq ($(TARGET_2ND_ARCH),) 79# link 64 bit .so 80$(TARGET_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 81 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 82endif 83 84# host symlinks 85$(HOST_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 86 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 87 88$(HOST_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 89 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 90 91# ----------------------------------------------------------------------------- 92# Library used by dlext tests - without GNU RELRO program header 93# ----------------------------------------------------------------------------- 94libdlext_test_norelro_src_files := \ 95 dlext_test_library.cpp \ 96 97libdlext_test_norelro_ldflags := \ 98 -Wl,-z,norelro \ 99 100module := libdlext_test_norelro 101module_tag := optional 102build_type := target 103build_target := SHARED_LIBRARY 104include $(TEST_PATH)/Android.build.mk 105 106# ----------------------------------------------------------------------------- 107# Library used by dlext tests - different name non-default location 108# ----------------------------------------------------------------------------- 109libdlext_test_fd_src_files := \ 110 dlext_test_library.cpp \ 111 112libdlext_test_fd_install_to_out_data := true 113module := libdlext_test_fd 114module_tag := optional 115build_type := target 116build_target := SHARED_LIBRARY 117include $(TEST_PATH)/Android.build.mk 118 119# ----------------------------------------------------------------------------- 120# Library used by dlext tests - zipped and aligned 121# ----------------------------------------------------------------------------- 122include $(CLEAR_VARS) 123bionic_2nd_arch_prefix := 124include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 125ifneq ($(TARGET_2ND_ARCH),) 126 bionic_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 127 include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 128endif 129 130# ----------------------------------------------------------------------------- 131# Library used by dlfcn tests 132# ----------------------------------------------------------------------------- 133libtest_simple_src_files := \ 134 dlopen_testlib_simple.cpp 135 136module := libtest_simple 137include $(LOCAL_PATH)/Android.build.testlib.mk 138 139# ----------------------------------------------------------------------------- 140# Library used by dlfcn nodelete tests 141# ----------------------------------------------------------------------------- 142libtest_nodelete_1_src_files := \ 143 dlopen_nodelete_1.cpp 144 145module := libtest_nodelete_1 146include $(LOCAL_PATH)/Android.build.testlib.mk 147 148# ----------------------------------------------------------------------------- 149# Library used by dlfcn nodelete tests 150# ----------------------------------------------------------------------------- 151libtest_nodelete_2_src_files := \ 152 dlopen_nodelete_2.cpp 153 154module := libtest_nodelete_2 155include $(LOCAL_PATH)/Android.build.testlib.mk 156 157# ----------------------------------------------------------------------------- 158# Library used by dlfcn nodelete tests 159# ----------------------------------------------------------------------------- 160libtest_nodelete_dt_flags_1_src_files := \ 161 dlopen_nodelete_dt_flags_1.cpp 162 163libtest_nodelete_dt_flags_1_ldflags := -Wl,-z,nodelete 164 165module := libtest_nodelete_dt_flags_1 166include $(LOCAL_PATH)/Android.build.testlib.mk 167 168# ----------------------------------------------------------------------------- 169# Build libtest_check_order_dlsym.so with its dependencies. 170# ----------------------------------------------------------------------------- 171include $(LOCAL_PATH)/Android.build.dlopen_check_order_dlsym.mk 172 173# ----------------------------------------------------------------------------- 174# Build libtest_check_order_siblings.so with its dependencies. 175# ----------------------------------------------------------------------------- 176include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_siblings.mk 177 178# ----------------------------------------------------------------------------- 179# Build libtest_check_order_root.so with its dependencies. 180# ----------------------------------------------------------------------------- 181include $(LOCAL_PATH)/Android.build.dlopen_check_order_reloc_main_executable.mk 182 183# ----------------------------------------------------------------------------- 184# Library with dependency loop used by dlfcn tests 185# 186# libtest_with_dependency_loop -> a -> b -> c -> a 187# ----------------------------------------------------------------------------- 188libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp 189 190libtest_with_dependency_loop_shared_libraries := \ 191 libtest_with_dependency_loop_a 192 193module := libtest_with_dependency_loop 194include $(LOCAL_PATH)/Android.build.testlib.mk 195 196# ----------------------------------------------------------------------------- 197# libtest_with_dependency_loop_a.so 198# ----------------------------------------------------------------------------- 199libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp 200 201libtest_with_dependency_loop_a_shared_libraries := \ 202 libtest_with_dependency_loop_b_tmp 203 204module := libtest_with_dependency_loop_a 205include $(LOCAL_PATH)/Android.build.testlib.mk 206 207# ----------------------------------------------------------------------------- 208# libtest_with_dependency_loop_b.so 209# 210# this is temporary placeholder - will be removed 211# ----------------------------------------------------------------------------- 212libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp 213libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so 214 215module := libtest_with_dependency_loop_b_tmp 216include $(LOCAL_PATH)/Android.build.testlib.mk 217 218# ----------------------------------------------------------------------------- 219# libtest_with_dependency_loop_b.so 220# ----------------------------------------------------------------------------- 221libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp 222libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c 223 224module := libtest_with_dependency_loop_b 225include $(LOCAL_PATH)/Android.build.testlib.mk 226 227# ----------------------------------------------------------------------------- 228# libtest_with_dependency_loop_c.so 229# ----------------------------------------------------------------------------- 230libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp 231 232libtest_with_dependency_loop_c_shared_libraries := \ 233 libtest_with_dependency_loop_a 234 235module := libtest_with_dependency_loop_c 236include $(LOCAL_PATH)/Android.build.testlib.mk 237 238# ----------------------------------------------------------------------------- 239# libtest_relo_check_dt_needed_order.so 240# | 241# +-> libtest_relo_check_dt_needed_order_1.so 242# | 243# +-> libtest_relo_check_dt_needed_order_2.so 244# ----------------------------------------------------------------------------- 245libtest_relo_check_dt_needed_order_shared_libraries := \ 246 libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2 247 248libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp 249libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp 250libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp 251 252module := libtest_relo_check_dt_needed_order 253include $(LOCAL_PATH)/Android.build.testlib.mk 254module := libtest_relo_check_dt_needed_order_1 255include $(LOCAL_PATH)/Android.build.testlib.mk 256module := libtest_relo_check_dt_needed_order_2 257include $(LOCAL_PATH)/Android.build.testlib.mk 258 259# ----------------------------------------------------------------------------- 260# Library with dependency used by dlfcn tests 261# ----------------------------------------------------------------------------- 262libtest_with_dependency_src_files := \ 263 dlopen_testlib_simple.cpp 264 265libtest_with_dependency_shared_libraries := libdlext_test 266 267module := libtest_with_dependency 268include $(LOCAL_PATH)/Android.build.testlib.mk 269 270# ----------------------------------------------------------------------------- 271# Library used by ifunc tests 272# ----------------------------------------------------------------------------- 273libtest_ifunc_src_files := \ 274 dlopen_testlib_ifunc.c 275 276libtest_ifunc_clang_host := false 277module := libtest_ifunc 278build_target := SHARED_LIBRARY 279 280build_type := host 281include $(TEST_PATH)/Android.build.mk 282 283ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64 x86 x86_64)) 284 ifeq ($(TARGET_ARCH),arm64) 285 libtest_ifunc_multilib := 64 286 # TODO: This is a workaround - remove it once gcc 287 # removes its Android ifunc checks 288 libtest_ifunc_cflags := -mglibc 289 endif 290 291 build_type := target 292 libtest_ifunc_clang_target := false 293 include $(TEST_PATH)/Android.build.mk 294endif 295 296# ----------------------------------------------------------------------------- 297# Library used by atexit tests 298# ----------------------------------------------------------------------------- 299 300libtest_atexit_src_files := \ 301 atexit_testlib.cpp 302 303module := libtest_atexit 304include $(LOCAL_PATH)/Android.build.testlib.mk 305 306# ----------------------------------------------------------------------------- 307# This library is used by dl_load test to check symbol preempting 308# by main executable 309# ----------------------------------------------------------------------------- 310libdl_preempt_test_1_src_files := dl_preempt_library_1.cpp 311 312module := libdl_preempt_test_1 313include $(LOCAL_PATH)/Android.build.testlib.mk 314 315# ----------------------------------------------------------------------------- 316# This library is used by dl_load test to check symbol preempting 317# by libdl_preempt_test_1.so 318# ----------------------------------------------------------------------------- 319libdl_preempt_test_2_src_files := dl_preempt_library_2.cpp 320 321module := libdl_preempt_test_2 322include $(LOCAL_PATH)/Android.build.testlib.mk 323 324# ----------------------------------------------------------------------------- 325# Library with DF_1_GLOBAL 326# ----------------------------------------------------------------------------- 327# TODO: re-enable arm once b/18137520 or b/18130452 are fixed 328ifeq ($(filter $(TARGET_ARCH),arm arm64),) 329libdl_test_df_1_global_src_files := dl_df_1_global.cpp 330libdl_test_df_1_global_ldflags := -fuse-ld=bfd -Wl,-z,global 331module := libdl_test_df_1_global 332include $(LOCAL_PATH)/Android.build.testlib.mk 333endif 334 335# ----------------------------------------------------------------------------- 336# Library using symbol from libdl_test_df_1_global 337# ----------------------------------------------------------------------------- 338libtest_dlsym_df_1_global_src_files := dl_df_1_use_global.cpp 339module := libtest_dlsym_df_1_global 340include $(LOCAL_PATH)/Android.build.testlib.mk 341 342# ----------------------------------------------------------------------------- 343# Library with weak function 344# ----------------------------------------------------------------------------- 345libtest_dlsym_weak_func_src_files := \ 346 dlsym_weak_function.cpp 347 348module := libtest_dlsym_weak_func 349include $(LOCAL_PATH)/Android.build.testlib.mk 350