Home | History | Annotate | Download | only in core
      1 ###########################################################
      2 ## Standard rules for building a normal shared library.
      3 ##
      4 ## Additional inputs from base_rules.make:
      5 ## None.
      6 ##
      7 ## LOCAL_MODULE_SUFFIX will be set for you.
      8 ###########################################################
      9 
     10 ifeq ($(strip $(LOCAL_MODULE_CLASS)),)
     11 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
     12 endif
     13 ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),)
     14 LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX)
     15 endif
     16 ifneq ($(strip $(OVERRIDE_BUILT_MODULE_PATH)),)
     17 $(error $(LOCAL_PATH): Illegal use of OVERRIDE_BUILT_MODULE_PATH)
     18 endif
     19 
     20 # Put the built targets of all shared libraries in a common directory
     21 # to simplify the link line.
     22 OVERRIDE_BUILT_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
     23 
     24 include $(BUILD_SYSTEM)/dynamic_binary.mk
     25 
     26 # Define PRIVATE_ variables from global vars
     27 my_target_global_ld_dirs := $(TARGET_GLOBAL_LD_DIRS)
     28 my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS)
     29 my_target_fdo_lib := $(TARGET_FDO_LIB)
     30 my_target_libgcc := $(TARGET_LIBGCC)
     31 my_target_crtbegin_so_o := $(TARGET_CRTBEGIN_SO_O)
     32 my_target_crtend_so_o := $(TARGET_CRTEND_SO_O)
     33 ifdef LOCAL_NDK_VERSION
     34 # Make sure the prebuilt NDK paths are put ahead of the TARGET_GLOBAL_LD_DIRS,
     35 # so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
     36 my_target_global_ld_dirs := \
     37     $(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
     38     $(my_ndk_version_root)/usr/lib) \
     39     $(my_target_global_ld_dirs)
     40 my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
     41 my_target_crtbegin_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_so.o)
     42 my_target_crtend_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_so.o)
     43 endif
     44 $(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
     45 $(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
     46 $(linked_module): PRIVATE_TARGET_FDO_LIB := $(my_target_fdo_lib)
     47 $(linked_module): PRIVATE_TARGET_LIBGCC := $(my_target_libgcc)
     48 $(linked_module): PRIVATE_TARGET_CRTBEGIN_SO_O := $(my_target_crtbegin_so_o)
     49 $(linked_module): PRIVATE_TARGET_CRTEND_SO_O := $(my_target_crtend_so_o)
     50 
     51 $(linked_module): $(all_objects) $(all_libraries) \
     52                   $(LOCAL_ADDITIONAL_DEPENDENCIES) \
     53                   $(my_target_crtbegin_so_o) $(my_target_crtend_so_o)
     54 	$(transform-o-to-shared-lib)
     55