summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/combo/select.mk1
-rw-r--r--core/definitions.mk10
-rw-r--r--core/dynamic_binary.mk4
-rw-r--r--core/main.mk8
-rw-r--r--core/shared_library.mk82
-rw-r--r--core/shared_library_internal.mk75
6 files changed, 101 insertions, 79 deletions
diff --git a/core/combo/select.mk b/core/combo/select.mk
index ec53423..c1a7cc0 100644
--- a/core/combo/select.mk
+++ b/core/combo/select.mk
@@ -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
diff --git a/core/definitions.mk b/core/definitions.mk
index 37bdc32..96ff445 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -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
diff --git a/core/dynamic_binary.mk b/core/dynamic_binary.mk
index cd08690..38dd0c9 100644
--- a/core/dynamic_binary.mk
+++ b/core/dynamic_binary.mk
@@ -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))
diff --git a/core/main.mk b/core/main.mk
index cc57ae8..e2b93c2 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -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 :=
diff --git a/core/shared_library.mk b/core/shared_library.mk
index bf83c0c..d0d1a51 100644
--- a/core/shared_library.mk
+++ b/core/shared_library.mk
@@ -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
-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
+ifdef TARGET_2ND_ARCH
-# 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)
+OVERRIDE_BUILT_MODULE_PATH :=
+LOCAL_BUILT_MODULE :=
+LOCAL_INSTALLED_MODULE :=
+LOCAL_MODULE_STEM :=
+LOCAL_BUILT_MODULE_STEM :=
+LOCAL_INSTALLED_MODULE_STEM :=
+LOCAL_INTERMEDIATE_TARGETS :=
-include $(BUILD_SYSTEM)/dynamic_binary.mk
+LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX)
+include $(BUILD_SYSTEM)/shared_library_internal.mk
+LOCAL_2ND_ARCH_VAR_PREFIX :=
-# 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
diff --git a/core/shared_library_internal.mk b/core/shared_library_internal.mk
new file mode 100644
index 0000000..1ded4a1
--- /dev/null
+++ b/core/shared_library_internal.mk
@@ -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