Android.mk revision bf50e2645d84bec481cb42da5f2ff4096061cbf8
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 dlfcn tests 99# ----------------------------------------------------------------------------- 100libtest_simple_src_files := \ 101 dlopen_testlib_simple.cpp 102 103module := libtest_simple 104include $(LOCAL_PATH)/Android.build.testlib.mk 105 106# ----------------------------------------------------------------------------- 107# Libraries used by dlfcn tests to verify correct load order: 108# libtest_check_order_2_right.so 109# ----------------------------------------------------------------------------- 110libtest_check_order_2_right_src_files := \ 111 dlopen_testlib_answer.cpp 112 113libtest_check_order_2_right_cflags := -D__ANSWER=42 114module := libtest_check_order_2_right 115include $(LOCAL_PATH)/Android.build.testlib.mk 116 117# ----------------------------------------------------------------------------- 118# libtest_check_order_a.so 119# ----------------------------------------------------------------------------- 120libtest_check_order_a_src_files := \ 121 dlopen_testlib_answer.cpp 122 123libtest_check_order_a_cflags := -D__ANSWER=1 124module := libtest_check_order_a 125include $(LOCAL_PATH)/Android.build.testlib.mk 126 127# ----------------------------------------------------------------------------- 128# libtest_check_order_b.so 129# ----------------------------------------------------------------------------- 130libtest_check_order_b_src_files := \ 131 dlopen_testlib_answer.cpp 132 133libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43 134module := libtest_check_order_b 135include $(LOCAL_PATH)/Android.build.testlib.mk 136 137# ----------------------------------------------------------------------------- 138# libtest_check_order_c.so 139# ----------------------------------------------------------------------------- 140libtest_check_order_3_c_src_files := \ 141 dlopen_testlib_answer.cpp 142 143libtest_check_order_3_c_cflags := -D__ANSWER=3 144module := libtest_check_order_3_c 145include $(LOCAL_PATH)/Android.build.testlib.mk 146 147# ----------------------------------------------------------------------------- 148# libtest_check_order_d.so 149# ----------------------------------------------------------------------------- 150libtest_check_order_d_src_files := \ 151 dlopen_testlib_answer.cpp 152 153libtest_check_order_d_shared_libraries := libtest_check_order_b 154libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4 155module := libtest_check_order_d 156include $(LOCAL_PATH)/Android.build.testlib.mk 157 158# ----------------------------------------------------------------------------- 159# libtest_check_order_left.so 160# ----------------------------------------------------------------------------- 161libtest_check_order_1_left_src_files := \ 162 empty.cpp 163 164libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b 165 166module := libtest_check_order_1_left 167include $(LOCAL_PATH)/Android.build.testlib.mk 168 169# ----------------------------------------------------------------------------- 170# libtest_check_order.so 171# ----------------------------------------------------------------------------- 172libtest_check_order_src_files := \ 173 empty.cpp 174 175libtest_check_order_shared_libraries := libtest_check_order_1_left \ 176 libtest_check_order_2_right libtest_check_order_3_c 177 178module := libtest_check_order 179include $(LOCAL_PATH)/Android.build.testlib.mk 180 181# ----------------------------------------------------------------------------- 182# Library with dependency loop used by dlfcn tests 183# 184# libtest_with_dependency_loop -> a -> b -> c -> a 185# ----------------------------------------------------------------------------- 186libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp 187 188libtest_with_dependency_loop_shared_libraries := \ 189 libtest_with_dependency_loop_a 190 191module := libtest_with_dependency_loop 192include $(LOCAL_PATH)/Android.build.testlib.mk 193 194# ----------------------------------------------------------------------------- 195# libtest_with_dependency_loop_a.so 196# ----------------------------------------------------------------------------- 197libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp 198 199libtest_with_dependency_loop_a_shared_libraries := \ 200 libtest_with_dependency_loop_b_tmp 201 202module := libtest_with_dependency_loop_a 203include $(LOCAL_PATH)/Android.build.testlib.mk 204 205# ----------------------------------------------------------------------------- 206# libtest_with_dependency_loop_b.so 207# 208# this is temporary placeholder - will be removed 209# ----------------------------------------------------------------------------- 210libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp 211libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so 212 213module := libtest_with_dependency_loop_b_tmp 214include $(LOCAL_PATH)/Android.build.testlib.mk 215 216# ----------------------------------------------------------------------------- 217# libtest_with_dependency_loop_b.so 218# ----------------------------------------------------------------------------- 219libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp 220libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c 221 222module := libtest_with_dependency_loop_b 223include $(LOCAL_PATH)/Android.build.testlib.mk 224 225# ----------------------------------------------------------------------------- 226# libtest_with_dependency_loop_c.so 227# ----------------------------------------------------------------------------- 228libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp 229 230libtest_with_dependency_loop_c_shared_libraries := \ 231 libtest_with_dependency_loop_a 232 233module := libtest_with_dependency_loop_c 234include $(LOCAL_PATH)/Android.build.testlib.mk 235 236# ----------------------------------------------------------------------------- 237# libtest_relo_check_dt_needed_order.so 238# | 239# +-> libtest_relo_check_dt_needed_order_1.so 240# | 241# +-> libtest_relo_check_dt_needed_order_2.so 242# ----------------------------------------------------------------------------- 243libtest_relo_check_dt_needed_order_shared_libraries := \ 244 libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2 245 246libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp 247libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp 248libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp 249 250module := libtest_relo_check_dt_needed_order 251include $(LOCAL_PATH)/Android.build.testlib.mk 252module := libtest_relo_check_dt_needed_order_1 253include $(LOCAL_PATH)/Android.build.testlib.mk 254module := libtest_relo_check_dt_needed_order_2 255include $(LOCAL_PATH)/Android.build.testlib.mk 256 257# ----------------------------------------------------------------------------- 258# Library with dependency used by dlfcn tests 259# ----------------------------------------------------------------------------- 260libtest_with_dependency_src_files := \ 261 dlopen_testlib_simple.cpp 262 263libtest_with_dependency_shared_libraries := libdlext_test 264 265module := libtest_with_dependency 266include $(LOCAL_PATH)/Android.build.testlib.mk 267 268# ----------------------------------------------------------------------------- 269# Library used by ifunc tests 270# ----------------------------------------------------------------------------- 271libtest_ifunc_src_files := \ 272 dlopen_testlib_ifunc.c 273 274libtest_ifunc_clang_host := false 275module := libtest_ifunc 276build_target := SHARED_LIBRARY 277 278build_type := host 279include $(TEST_PATH)/Android.build.mk 280 281ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),arm64 x86 x86_64)) 282 ifeq ($(TARGET_ARCH),arm64) 283 libtest_ifunc_multilib := 64 284 # TODO: This is a workaround - remove it once gcc 285 # removes its Android ifunc checks 286 libtest_ifunc_cflags := -mglibc 287 endif 288 289 build_type := target 290 include $(TEST_PATH)/Android.build.mk 291endif 292 293# ----------------------------------------------------------------------------- 294# Library used by atexit tests 295# ----------------------------------------------------------------------------- 296 297libtest_atexit_src_files := \ 298 atexit_testlib.cpp 299 300module := libtest_atexit 301include $(LOCAL_PATH)/Android.build.testlib.mk 302 303# ----------------------------------------------------------------------------- 304# Library with weak function 305# ----------------------------------------------------------------------------- 306libtest_dlsym_weak_func_src_files := \ 307 dlsym_weak_function.cpp 308 309module := libtest_dlsym_weak_func 310include $(LOCAL_PATH)/Android.build.testlib.mk 311 312LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk $(LOCAL_PATH)/Android.build.testlib.mk $(TEST_PATH)/Android.build.mk 313