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