Home | History | Annotate | Download | only in libs
      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 
     17 LOCAL_PATH := $(call my-dir)
     18 TEST_PATH := $(LOCAL_PATH)/..
     19 
     20 common_cppflags += -std=gnu++11
     21 common_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 # -----------------------------------------------------------------------------
     30 ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64))
     31 no-elf-hash-table-library_src_files := \
     32     empty.cpp \
     33 
     34 no-elf-hash-table-library_ldflags := \
     35     -Wl,--hash-style=gnu \
     36 
     37 module := no-elf-hash-table-library
     38 module_tag := optional
     39 include $(LOCAL_PATH)/Android.build.testlib.mk
     40 endif
     41 
     42 # -----------------------------------------------------------------------------
     43 # Library used by dlext tests - with GNU RELRO program header
     44 # -----------------------------------------------------------------------------
     45 libdlext_test_src_files := \
     46     dlext_test_library.cpp \
     47 
     48 libdlext_test_ldflags := \
     49     -Wl,-z,relro \
     50 
     51 module := libdlext_test
     52 module_tag := optional
     53 include $(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 
     62 ifneq ($(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
     66 endif
     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 # -----------------------------------------------------------------------------
     78 libdlext_test_norelro_src_files := \
     79     dlext_test_library.cpp \
     80 
     81 libdlext_test_norelro_ldflags := \
     82     -Wl,-z,norelro \
     83 
     84 module := libdlext_test_norelro
     85 module_tag := optional
     86 build_type := target
     87 build_target := SHARED_LIBRARY
     88 include $(TEST_PATH)/Android.build.mk
     89 
     90 # -----------------------------------------------------------------------------
     91 # Library used by dlext tests - different name non-default location
     92 # -----------------------------------------------------------------------------
     93 libdlext_test_fd_src_files := \
     94     dlext_test_library.cpp \
     95 
     96 libdlext_test_fd_install_to_out_data := true
     97 module := libdlext_test_fd
     98 module_tag := optional
     99 build_type := target
    100 build_target := SHARED_LIBRARY
    101 include $(TEST_PATH)/Android.build.mk
    102 
    103 # -----------------------------------------------------------------------------
    104 # Library used by dlext tests - zipped and aligned
    105 # -----------------------------------------------------------------------------
    106 include $(CLEAR_VARS)
    107 bionic_2nd_arch_prefix :=
    108 include $(LOCAL_PATH)/Android.build.dlext_testzip.mk
    109 ifneq ($(TARGET_2ND_ARCH),)
    110   bionic_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
    111   include $(LOCAL_PATH)/Android.build.dlext_testzip.mk
    112 endif
    113 
    114 # -----------------------------------------------------------------------------
    115 # Library used by dlfcn tests
    116 # -----------------------------------------------------------------------------
    117 libtest_simple_src_files := \
    118     dlopen_testlib_simple.cpp
    119 
    120 module := libtest_simple
    121 include $(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 # -----------------------------------------------------------------------------
    127 libtest_check_order_2_right_src_files := \
    128     dlopen_testlib_answer.cpp
    129 
    130 libtest_check_order_2_right_cflags := -D__ANSWER=42
    131 module := libtest_check_order_2_right
    132 include $(LOCAL_PATH)/Android.build.testlib.mk
    133 
    134 # -----------------------------------------------------------------------------
    135 # libtest_check_order_a.so
    136 # -----------------------------------------------------------------------------
    137 libtest_check_order_a_src_files := \
    138     dlopen_testlib_answer.cpp
    139 
    140 libtest_check_order_a_cflags := -D__ANSWER=1
    141 module := libtest_check_order_a
    142 include $(LOCAL_PATH)/Android.build.testlib.mk
    143 
    144 # -----------------------------------------------------------------------------
    145 # libtest_check_order_b.so
    146 # -----------------------------------------------------------------------------
    147 libtest_check_order_b_src_files := \
    148     dlopen_testlib_answer.cpp
    149 
    150 libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43
    151 module := libtest_check_order_b
    152 include $(LOCAL_PATH)/Android.build.testlib.mk
    153 
    154 # -----------------------------------------------------------------------------
    155 # libtest_check_order_c.so
    156 # -----------------------------------------------------------------------------
    157 libtest_check_order_3_c_src_files := \
    158     dlopen_testlib_answer.cpp
    159 
    160 libtest_check_order_3_c_cflags := -D__ANSWER=3
    161 module := libtest_check_order_3_c
    162 include $(LOCAL_PATH)/Android.build.testlib.mk
    163 
    164 # -----------------------------------------------------------------------------
    165 # libtest_check_order_d.so
    166 # -----------------------------------------------------------------------------
    167 libtest_check_order_d_src_files := \
    168    dlopen_testlib_answer.cpp
    169 
    170 libtest_check_order_d_shared_libraries := libtest_check_order_b
    171 libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4
    172 module := libtest_check_order_d
    173 include $(LOCAL_PATH)/Android.build.testlib.mk
    174 
    175 # -----------------------------------------------------------------------------
    176 # libtest_check_order_left.so
    177 # -----------------------------------------------------------------------------
    178 libtest_check_order_1_left_src_files := \
    179     empty.cpp
    180 
    181 libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b
    182 
    183 module := libtest_check_order_1_left
    184 include $(LOCAL_PATH)/Android.build.testlib.mk
    185 
    186 # -----------------------------------------------------------------------------
    187 # libtest_check_order.so
    188 # -----------------------------------------------------------------------------
    189 libtest_check_order_src_files := \
    190     empty.cpp
    191 
    192 libtest_check_order_shared_libraries := libtest_check_order_1_left \
    193   libtest_check_order_2_right libtest_check_order_3_c
    194 
    195 module := libtest_check_order
    196 include $(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 # -----------------------------------------------------------------------------
    203 libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp
    204 
    205 libtest_with_dependency_loop_shared_libraries := \
    206     libtest_with_dependency_loop_a
    207 
    208 module := libtest_with_dependency_loop
    209 include $(LOCAL_PATH)/Android.build.testlib.mk
    210 
    211 # -----------------------------------------------------------------------------
    212 # libtest_with_dependency_loop_a.so
    213 # -----------------------------------------------------------------------------
    214 libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp
    215 
    216 libtest_with_dependency_loop_a_shared_libraries := \
    217     libtest_with_dependency_loop_b_tmp
    218 
    219 module := libtest_with_dependency_loop_a
    220 include $(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 # -----------------------------------------------------------------------------
    227 libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp
    228 libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so
    229 
    230 module := libtest_with_dependency_loop_b_tmp
    231 include $(LOCAL_PATH)/Android.build.testlib.mk
    232 
    233 # -----------------------------------------------------------------------------
    234 # libtest_with_dependency_loop_b.so
    235 # -----------------------------------------------------------------------------
    236 libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp
    237 libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c
    238 
    239 module := libtest_with_dependency_loop_b
    240 include $(LOCAL_PATH)/Android.build.testlib.mk
    241 
    242 # -----------------------------------------------------------------------------
    243 # libtest_with_dependency_loop_c.so
    244 # -----------------------------------------------------------------------------
    245 libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp
    246 
    247 libtest_with_dependency_loop_c_shared_libraries := \
    248     libtest_with_dependency_loop_a
    249 
    250 module := libtest_with_dependency_loop_c
    251 include $(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 # -----------------------------------------------------------------------------
    260 libtest_relo_check_dt_needed_order_shared_libraries := \
    261     libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2
    262 
    263 libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp
    264 libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp
    265 libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp
    266 
    267 module := libtest_relo_check_dt_needed_order
    268 include $(LOCAL_PATH)/Android.build.testlib.mk
    269 module := libtest_relo_check_dt_needed_order_1
    270 include $(LOCAL_PATH)/Android.build.testlib.mk
    271 module := libtest_relo_check_dt_needed_order_2
    272 include $(LOCAL_PATH)/Android.build.testlib.mk
    273 
    274 # -----------------------------------------------------------------------------
    275 # Library with dependency used by dlfcn tests
    276 # -----------------------------------------------------------------------------
    277 libtest_with_dependency_src_files := \
    278     dlopen_testlib_simple.cpp
    279 
    280 libtest_with_dependency_shared_libraries := libdlext_test
    281 
    282 module := libtest_with_dependency
    283 include $(LOCAL_PATH)/Android.build.testlib.mk
    284 
    285 # -----------------------------------------------------------------------------
    286 # Library used by ifunc tests
    287 # -----------------------------------------------------------------------------
    288 libtest_ifunc_src_files := \
    289     dlopen_testlib_ifunc.c
    290 
    291 libtest_ifunc_clang_host := false
    292 module := libtest_ifunc
    293 build_target := SHARED_LIBRARY
    294 
    295 build_type := host
    296 include $(TEST_PATH)/Android.build.mk
    297 
    298 ifeq ($(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
    308 endif
    309 
    310 # -----------------------------------------------------------------------------
    311 # Library used by atexit tests
    312 # -----------------------------------------------------------------------------
    313 
    314 libtest_atexit_src_files := \
    315     atexit_testlib.cpp
    316 
    317 module := libtest_atexit
    318 include $(LOCAL_PATH)/Android.build.testlib.mk
    319 
    320 # -----------------------------------------------------------------------------
    321 # Library with weak function
    322 # -----------------------------------------------------------------------------
    323 libtest_dlsym_weak_func_src_files := \
    324     dlsym_weak_function.cpp
    325 
    326 module := libtest_dlsym_weak_func
    327 include $(LOCAL_PATH)/Android.build.testlib.mk
    328