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.testlib.mk \ 25 $(TEST_PATH)/Android.build.mk 26 27# ----------------------------------------------------------------------------- 28# Library used by dlfcn tests. 29# ----------------------------------------------------------------------------- 30ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64)) 31no-elf-hash-table-library_src_files := \ 32 empty.cpp \ 33 34no-elf-hash-table-library_ldflags := \ 35 -Wl,--hash-style=gnu \ 36 37module := no-elf-hash-table-library 38module_tag := optional 39include $(LOCAL_PATH)/Android.build.testlib.mk 40endif 41 42# ----------------------------------------------------------------------------- 43# Library used by dlext tests - with GNU RELRO program header 44# ----------------------------------------------------------------------------- 45libdlext_test_src_files := \ 46 dlext_test_library.cpp \ 47 48libdlext_test_ldflags := \ 49 -Wl,-z,relro \ 50 51module := libdlext_test 52module_tag := optional 53include $(LOCAL_PATH)/Android.build.testlib.mk 54 55# ----------------------------------------------------------------------------- 56# create symlink to libdlext_test.so for symlink test 57# ----------------------------------------------------------------------------- 58# Use = instead of := to defer the evaluation of $@ 59$(TARGET_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 60 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 61 62ifneq ($(TARGET_2ND_ARCH),) 63# link 64 bit .so 64$(TARGET_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 65 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 66endif 67 68# host symlinks 69$(HOST_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 70 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 71 72$(HOST_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 73 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 74 75# ----------------------------------------------------------------------------- 76# Library used by dlext tests - without GNU RELRO program header 77# ----------------------------------------------------------------------------- 78libdlext_test_norelro_src_files := \ 79 dlext_test_library.cpp \ 80 81libdlext_test_norelro_ldflags := \ 82 -Wl,-z,norelro \ 83 84module := libdlext_test_norelro 85module_tag := optional 86build_type := target 87build_target := SHARED_LIBRARY 88include $(TEST_PATH)/Android.build.mk 89 90# ----------------------------------------------------------------------------- 91# Library used by dlext tests - different name non-default location 92# ----------------------------------------------------------------------------- 93libdlext_test_fd_src_files := \ 94 dlext_test_library.cpp \ 95 96libdlext_test_fd_install_to_out_data := true 97module := libdlext_test_fd 98module_tag := optional 99build_type := target 100build_target := SHARED_LIBRARY 101include $(TEST_PATH)/Android.build.mk 102 103# ----------------------------------------------------------------------------- 104# Library used by dlext tests - zipped and aligned 105# ----------------------------------------------------------------------------- 106include $(CLEAR_VARS) 107bionic_2nd_arch_prefix := 108include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 109ifneq ($(TARGET_2ND_ARCH),) 110 bionic_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 111 include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 112endif 113 114# ----------------------------------------------------------------------------- 115# Library used by dlfcn tests 116# ----------------------------------------------------------------------------- 117libtest_simple_src_files := \ 118 dlopen_testlib_simple.cpp 119 120module := libtest_simple 121include $(LOCAL_PATH)/Android.build.testlib.mk 122 123# ----------------------------------------------------------------------------- 124# Libraries used by dlfcn tests to verify correct load order: 125# libtest_check_order_2_right.so 126# ----------------------------------------------------------------------------- 127libtest_check_order_2_right_src_files := \ 128 dlopen_testlib_answer.cpp 129 130libtest_check_order_2_right_cflags := -D__ANSWER=42 131module := libtest_check_order_2_right 132include $(LOCAL_PATH)/Android.build.testlib.mk 133 134# ----------------------------------------------------------------------------- 135# libtest_check_order_a.so 136# ----------------------------------------------------------------------------- 137libtest_check_order_a_src_files := \ 138 dlopen_testlib_answer.cpp 139 140libtest_check_order_a_cflags := -D__ANSWER=1 141module := libtest_check_order_a 142include $(LOCAL_PATH)/Android.build.testlib.mk 143 144# ----------------------------------------------------------------------------- 145# libtest_check_order_b.so 146# ----------------------------------------------------------------------------- 147libtest_check_order_b_src_files := \ 148 dlopen_testlib_answer.cpp 149 150libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43 151module := libtest_check_order_b 152include $(LOCAL_PATH)/Android.build.testlib.mk 153 154# ----------------------------------------------------------------------------- 155# libtest_check_order_c.so 156# ----------------------------------------------------------------------------- 157libtest_check_order_3_c_src_files := \ 158 dlopen_testlib_answer.cpp 159 160libtest_check_order_3_c_cflags := -D__ANSWER=3 161module := libtest_check_order_3_c 162include $(LOCAL_PATH)/Android.build.testlib.mk 163 164# ----------------------------------------------------------------------------- 165# libtest_check_order_d.so 166# ----------------------------------------------------------------------------- 167libtest_check_order_d_src_files := \ 168 dlopen_testlib_answer.cpp 169 170libtest_check_order_d_shared_libraries := libtest_check_order_b 171libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4 172module := libtest_check_order_d 173include $(LOCAL_PATH)/Android.build.testlib.mk 174 175# ----------------------------------------------------------------------------- 176# libtest_check_order_left.so 177# ----------------------------------------------------------------------------- 178libtest_check_order_1_left_src_files := \ 179 empty.cpp 180 181libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b 182 183module := libtest_check_order_1_left 184include $(LOCAL_PATH)/Android.build.testlib.mk 185 186# ----------------------------------------------------------------------------- 187# libtest_check_order.so 188# ----------------------------------------------------------------------------- 189libtest_check_order_src_files := \ 190 empty.cpp 191 192libtest_check_order_shared_libraries := libtest_check_order_1_left \ 193 libtest_check_order_2_right libtest_check_order_3_c 194 195module := libtest_check_order 196include $(LOCAL_PATH)/Android.build.testlib.mk 197 198# ----------------------------------------------------------------------------- 199# Library with dependency loop used by dlfcn tests 200# 201# libtest_with_dependency_loop -> a -> b -> c -> a 202# ----------------------------------------------------------------------------- 203libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp 204 205libtest_with_dependency_loop_shared_libraries := \ 206 libtest_with_dependency_loop_a 207 208module := libtest_with_dependency_loop 209include $(LOCAL_PATH)/Android.build.testlib.mk 210 211# ----------------------------------------------------------------------------- 212# libtest_with_dependency_loop_a.so 213# ----------------------------------------------------------------------------- 214libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp 215 216libtest_with_dependency_loop_a_shared_libraries := \ 217 libtest_with_dependency_loop_b_tmp 218 219module := libtest_with_dependency_loop_a 220include $(LOCAL_PATH)/Android.build.testlib.mk 221 222# ----------------------------------------------------------------------------- 223# libtest_with_dependency_loop_b.so 224# 225# this is temporary placeholder - will be removed 226# ----------------------------------------------------------------------------- 227libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp 228libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so 229 230module := libtest_with_dependency_loop_b_tmp 231include $(LOCAL_PATH)/Android.build.testlib.mk 232 233# ----------------------------------------------------------------------------- 234# libtest_with_dependency_loop_b.so 235# ----------------------------------------------------------------------------- 236libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp 237libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c 238 239module := libtest_with_dependency_loop_b 240include $(LOCAL_PATH)/Android.build.testlib.mk 241 242# ----------------------------------------------------------------------------- 243# libtest_with_dependency_loop_c.so 244# ----------------------------------------------------------------------------- 245libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp 246 247libtest_with_dependency_loop_c_shared_libraries := \ 248 libtest_with_dependency_loop_a 249 250module := libtest_with_dependency_loop_c 251include $(LOCAL_PATH)/Android.build.testlib.mk 252 253# ----------------------------------------------------------------------------- 254# libtest_relo_check_dt_needed_order.so 255# | 256# +-> libtest_relo_check_dt_needed_order_1.so 257# | 258# +-> libtest_relo_check_dt_needed_order_2.so 259# ----------------------------------------------------------------------------- 260libtest_relo_check_dt_needed_order_shared_libraries := \ 261 libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2 262 263libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp 264libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp 265libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp 266 267module := libtest_relo_check_dt_needed_order 268include $(LOCAL_PATH)/Android.build.testlib.mk 269module := libtest_relo_check_dt_needed_order_1 270include $(LOCAL_PATH)/Android.build.testlib.mk 271module := libtest_relo_check_dt_needed_order_2 272include $(LOCAL_PATH)/Android.build.testlib.mk 273 274# ----------------------------------------------------------------------------- 275# Library with dependency used by dlfcn tests 276# ----------------------------------------------------------------------------- 277libtest_with_dependency_src_files := \ 278 dlopen_testlib_simple.cpp 279 280libtest_with_dependency_shared_libraries := libdlext_test 281 282module := libtest_with_dependency 283include $(LOCAL_PATH)/Android.build.testlib.mk 284 285# ----------------------------------------------------------------------------- 286# Library used by ifunc tests 287# ----------------------------------------------------------------------------- 288libtest_ifunc_src_files := \ 289 dlopen_testlib_ifunc.c 290 291libtest_ifunc_clang_host := false 292module := libtest_ifunc 293build_target := SHARED_LIBRARY 294 295build_type := host 296include $(TEST_PATH)/Android.build.mk 297 298ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64)) 299 ifeq ($(TARGET_ARCH),arm64) 300 libtest_ifunc_multilib := 64 301 # TODO: This is a workaround - remove it once gcc 302 # removes its Android ifunc checks 303 libtest_ifunc_cflags := -mglibc 304 endif 305 306 build_type := target 307 include $(TEST_PATH)/Android.build.mk 308endif 309 310# ----------------------------------------------------------------------------- 311# Library used by atexit tests 312# ----------------------------------------------------------------------------- 313 314libtest_atexit_src_files := \ 315 atexit_testlib.cpp 316 317module := libtest_atexit 318include $(LOCAL_PATH)/Android.build.testlib.mk 319 320# ----------------------------------------------------------------------------- 321# Library with weak function 322# ----------------------------------------------------------------------------- 323libtest_dlsym_weak_func_src_files := \ 324 dlsym_weak_function.cpp 325 326module := libtest_dlsym_weak_func 327include $(LOCAL_PATH)/Android.build.testlib.mk 328