* commit '52afa28f315a3ad5a8dffb3c98df5e77e579e529': Set up rules to build shared libraries for TARGET_2ND_ARCH
This commit is contained in:
commit
778c138b25
6 changed files with 104 additions and 82 deletions
|
@ -58,6 +58,7 @@ $(combo_var_prefix)RELEASE_CFLAGS := -O2 -g -fno-strict-aliasing
|
|||
$(combo_var_prefix)GLOBAL_CPPFLAGS :=
|
||||
$(combo_var_prefix)GLOBAL_LDFLAGS :=
|
||||
$(combo_var_prefix)GLOBAL_ARFLAGS := crsPD
|
||||
$(combo_var_prefix)GLOBAL_LD_DIRS :=
|
||||
|
||||
$(combo_var_prefix)EXECUTABLE_SUFFIX :=
|
||||
$(combo_var_prefix)SHLIB_SUFFIX := .so
|
||||
|
|
|
@ -1280,13 +1280,7 @@ endif
|
|||
define transform-o-to-shared-lib
|
||||
@mkdir -p $(dir $@)
|
||||
@echo "target SharedLib: $(PRIVATE_MODULE) ($@)"
|
||||
$(transform-o-to-shared-lib-inner)
|
||||
endef
|
||||
|
||||
define transform-o-to-package
|
||||
@mkdir -p $(dir $@)
|
||||
@echo "target Package: $(PRIVATE_MODULE) ($@)"
|
||||
$(transform-o-to-shared-lib-inner)
|
||||
$($(PRIVATE_2ND_ARCH_VAR_PREFIX)transform-o-to-shared-lib-inner)
|
||||
endef
|
||||
|
||||
|
||||
|
@ -1297,7 +1291,7 @@ endef
|
|||
define transform-to-stripped
|
||||
@mkdir -p $(dir $@)
|
||||
@echo "target Strip: $(PRIVATE_MODULE) ($@)"
|
||||
$(hide) $(TARGET_STRIP_COMMAND)
|
||||
$(hide) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_STRIP_COMMAND)
|
||||
endef
|
||||
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ endif
|
|||
# base_rules.make defines $(intermediates), but we need its value
|
||||
# before we include base_rules. Make a guess, and verify that
|
||||
# it's correct once the real value is defined.
|
||||
guessed_intermediates := $(call local-intermediates-dir)
|
||||
guessed_intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX))
|
||||
|
||||
# Define the target that is the unmodified output of the linker.
|
||||
# The basename of this target must be the same as the final output
|
||||
|
@ -52,6 +52,8 @@ LOCAL_INTERMEDIATE_TARGETS := $(linked_module)
|
|||
include $(BUILD_SYSTEM)/binary.mk
|
||||
###################################
|
||||
|
||||
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX)
|
||||
|
||||
# Make sure that our guess at the value of intermediates was correct.
|
||||
ifneq ($(intermediates),$(guessed_intermediates))
|
||||
$(error Internal error: guessed path '$(guessed_intermediates)' doesn't match '$(intermediates))
|
||||
|
|
|
@ -603,6 +603,14 @@ $(foreach m,$(HOST_DEPENDENCIES_ON_SHARED_LIBRARIES), \
|
|||
$(eval r := $(filter $(HOST_OUT_ROOT)/%,$(call module-installed-files,\
|
||||
$(subst $(comma),$(space),$(lastword $(p)))))) \
|
||||
$(eval $(call add-required-deps,$(word 2,$(p)),$(r))))
|
||||
ifdef TARGET_2ND_ARCH
|
||||
$(foreach m,$($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_DEPENDENCIES_ON_SHARED_LIBRARIES), \
|
||||
$(eval p := $(subst :,$(space),$(m))) \
|
||||
$(eval r := $(filter $(TARGET_OUT_ROOT)/%,$(call module-installed-files,\
|
||||
$(addsuffix $(TARGET_2ND_ARCH_MODULE_SUFFIX), \
|
||||
$(subst $(comma),$(space),$(lastword $(p))))))) \
|
||||
$(eval $(call add-required-deps,$(word 2,$(p)),$(r))))
|
||||
endif
|
||||
|
||||
m :=
|
||||
r :=
|
||||
|
|
|
@ -1,75 +1,17 @@
|
|||
###########################################################
|
||||
## Standard rules for building a normal shared library.
|
||||
##
|
||||
## Additional inputs from base_rules.make:
|
||||
## None.
|
||||
##
|
||||
## LOCAL_MODULE_SUFFIX will be set for you.
|
||||
###########################################################
|
||||
include $(BUILD_SYSTEM)/shared_library_internal.mk
|
||||
|
||||
ifdef TARGET_2ND_ARCH
|
||||
|
||||
OVERRIDE_BUILT_MODULE_PATH :=
|
||||
LOCAL_BUILT_MODULE :=
|
||||
LOCAL_INSTALLED_MODULE :=
|
||||
LOCAL_MODULE_STEM :=
|
||||
LOCAL_BUILT_MODULE_STEM :=
|
||||
LOCAL_INSTALLED_MODULE_STEM :=
|
||||
LOCAL_INTERMEDIATE_TARGETS :=
|
||||
|
||||
LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
|
||||
include $(BUILD_SYSTEM)/shared_library_internal.mk
|
||||
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
||||
|
||||
ifeq ($(strip $(LOCAL_MODULE_CLASS)),)
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
endif
|
||||
ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),)
|
||||
LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX)
|
||||
endif
|
||||
ifneq ($(strip $(OVERRIDE_BUILT_MODULE_PATH)),)
|
||||
$(error $(LOCAL_PATH): Illegal use of OVERRIDE_BUILT_MODULE_PATH)
|
||||
endif
|
||||
ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),)
|
||||
$(error $(LOCAL_PATH): Cannot set module stem for a library)
|
||||
endif
|
||||
|
||||
$(call target-shared-library-hook)
|
||||
|
||||
skip_build_from_source :=
|
||||
ifdef LOCAL_PREBUILT_MODULE_FILE
|
||||
ifeq (,$(call if-build-from-source,$(LOCAL_MODULE),$(LOCAL_PATH)))
|
||||
include $(BUILD_PREBUILT)
|
||||
skip_build_from_source := true
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef skip_build_from_source
|
||||
|
||||
# Put the built targets of all shared libraries in a common directory
|
||||
# to simplify the link line.
|
||||
OVERRIDE_BUILT_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
|
||||
|
||||
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
||||
|
||||
# Define PRIVATE_ variables from global vars
|
||||
my_target_global_ld_dirs := $(TARGET_GLOBAL_LD_DIRS)
|
||||
ifeq ($(LOCAL_CLANG),true)
|
||||
my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS)
|
||||
else
|
||||
my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS)
|
||||
endif
|
||||
my_target_fdo_lib := $(TARGET_FDO_LIB)
|
||||
my_target_libgcc := $(TARGET_LIBGCC)
|
||||
my_target_crtbegin_so_o := $(TARGET_CRTBEGIN_SO_O)
|
||||
my_target_crtend_so_o := $(TARGET_CRTEND_SO_O)
|
||||
ifdef LOCAL_SDK_VERSION
|
||||
# Make sure the prebuilt NDK paths are put ahead of the TARGET_GLOBAL_LD_DIRS,
|
||||
# so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
|
||||
my_target_global_ld_dirs := \
|
||||
$(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
|
||||
$(my_ndk_version_root)/usr/lib) \
|
||||
$(my_target_global_ld_dirs)
|
||||
my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
|
||||
my_target_crtbegin_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_so.o)
|
||||
my_target_crtend_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_so.o)
|
||||
endif
|
||||
$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
|
||||
$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
|
||||
$(linked_module): PRIVATE_TARGET_FDO_LIB := $(my_target_fdo_lib)
|
||||
$(linked_module): PRIVATE_TARGET_LIBGCC := $(my_target_libgcc)
|
||||
$(linked_module): PRIVATE_TARGET_CRTBEGIN_SO_O := $(my_target_crtbegin_so_o)
|
||||
$(linked_module): PRIVATE_TARGET_CRTEND_SO_O := $(my_target_crtend_so_o)
|
||||
|
||||
$(linked_module): $(all_objects) $(all_libraries) \
|
||||
$(LOCAL_ADDITIONAL_DEPENDENCIES) \
|
||||
$(my_target_crtbegin_so_o) $(my_target_crtend_so_o)
|
||||
$(transform-o-to-shared-lib)
|
||||
|
||||
endif # skip_build_from_source
|
||||
|
|
75
core/shared_library_internal.mk
Normal file
75
core/shared_library_internal.mk
Normal file
|
@ -0,0 +1,75 @@
|
|||
###########################################################
|
||||
## Standard rules for building a normal shared library.
|
||||
##
|
||||
## Additional inputs from base_rules.make:
|
||||
## None.
|
||||
##
|
||||
## LOCAL_MODULE_SUFFIX will be set for you.
|
||||
###########################################################
|
||||
|
||||
ifeq ($(strip $(LOCAL_MODULE_CLASS)),)
|
||||
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
endif
|
||||
ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),)
|
||||
LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX)
|
||||
endif
|
||||
ifneq ($(strip $(OVERRIDE_BUILT_MODULE_PATH)),)
|
||||
$(error $(LOCAL_PATH): Illegal use of OVERRIDE_BUILT_MODULE_PATH)
|
||||
endif
|
||||
ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),)
|
||||
$(error $(LOCAL_PATH): Cannot set module stem for a library)
|
||||
endif
|
||||
|
||||
$(call target-shared-library-hook)
|
||||
|
||||
skip_build_from_source :=
|
||||
ifdef LOCAL_PREBUILT_MODULE_FILE
|
||||
ifeq (,$(call if-build-from-source,$(LOCAL_MODULE),$(LOCAL_PATH)))
|
||||
include $(BUILD_PREBUILT)
|
||||
skip_build_from_source := true
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef skip_build_from_source
|
||||
|
||||
# Put the built targets of all shared libraries in a common directory
|
||||
# to simplify the link line.
|
||||
OVERRIDE_BUILT_MODULE_PATH := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES)
|
||||
|
||||
include $(BUILD_SYSTEM)/dynamic_binary.mk
|
||||
|
||||
# Define PRIVATE_ variables from global vars
|
||||
my_target_global_ld_dirs := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LD_DIRS)
|
||||
ifeq ($(LOCAL_CLANG),true)
|
||||
my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS)
|
||||
else
|
||||
my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
|
||||
endif
|
||||
my_target_fdo_lib := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_LIB)
|
||||
my_target_libgcc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC)
|
||||
my_target_crtbegin_so_o := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_SO_O)
|
||||
my_target_crtend_so_o := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_SO_O)
|
||||
ifdef LOCAL_SDK_VERSION
|
||||
# Make sure the prebuilt NDK paths are put ahead of the TARGET_GLOBAL_LD_DIRS,
|
||||
# so we don't have race condition when the system libraries (such as libc, libstdc++) are also built in the tree.
|
||||
my_target_global_ld_dirs := \
|
||||
$(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
|
||||
$(my_ndk_version_root)/usr/lib) \
|
||||
$(my_target_global_ld_dirs)
|
||||
my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
|
||||
my_target_crtbegin_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_so.o)
|
||||
my_target_crtend_so_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_so.o)
|
||||
endif
|
||||
$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
|
||||
$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
|
||||
$(linked_module): PRIVATE_TARGET_FDO_LIB := $(my_target_fdo_lib)
|
||||
$(linked_module): PRIVATE_TARGET_LIBGCC := $(my_target_libgcc)
|
||||
$(linked_module): PRIVATE_TARGET_CRTBEGIN_SO_O := $(my_target_crtbegin_so_o)
|
||||
$(linked_module): PRIVATE_TARGET_CRTEND_SO_O := $(my_target_crtend_so_o)
|
||||
|
||||
$(linked_module): $(all_objects) $(all_libraries) \
|
||||
$(LOCAL_ADDITIONAL_DEPENDENCIES) \
|
||||
$(my_target_crtbegin_so_o) $(my_target_crtend_so_o)
|
||||
$(transform-o-to-shared-lib)
|
||||
|
||||
endif # skip_build_from_source
|
Loading…
Reference in a new issue