From 491fca98098c228145a4fb6baae4c81049138313 Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Thu, 2 Jul 2015 15:57:45 -0700 Subject: [PATCH] Simplify LOCAL_NO_CRT. Change-Id: If2486e4861071df6b225fe7f387530a38f554484 --- core/binary.mk | 1 - core/clear_vars.mk | 4 ---- core/definitions.mk | 13 ++++++------- core/executable_internal.mk | 6 ++++++ core/shared_library_internal.mk | 5 +++++ 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/core/binary.mk b/core/binary.mk index ba559354f..116e26125 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1067,7 +1067,6 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(my_ldlibs) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_NO_CRT := $(strip $(LOCAL_NO_CRT) $(LOCAL_NO_CRT_$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))) # this is really the way to get the files onto the command line instead # of using $^, because then LOCAL_ADDITIONAL_DEPENDENCIES doesn't work diff --git a/core/clear_vars.mk b/core/clear_vars.mk index bd6902c04..9d6f91b96 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -192,7 +192,6 @@ LOCAL_CLANG_CPPFLAGS_$(TARGET_ARCH):= LOCAL_C_INCLUDES_$(TARGET_ARCH):= LOCAL_ASFLAGS_$(TARGET_ARCH):= LOCAL_CLANG_ASFLAGS_$(TARGET_ARCH):= -LOCAL_NO_CRT_$(TARGET_ARCH):= LOCAL_LDFLAGS_$(TARGET_ARCH):= LOCAL_CLANG_LDFLAGS_$(TARGET_ARCH):= LOCAL_SHARED_LIBRARIES_$(TARGET_ARCH):= @@ -211,7 +210,6 @@ LOCAL_CLANG_CPPFLAGS_$(TARGET_2ND_ARCH):= LOCAL_C_INCLUDES_$(TARGET_2ND_ARCH):= LOCAL_ASFLAGS_$(TARGET_2ND_ARCH):= LOCAL_CLANG_ASFLAGS_$(TARGET_2ND_ARCH):= -LOCAL_NO_CRT_$(TARGET_2ND_ARCH):= LOCAL_LDFLAGS_$(TARGET_2ND_ARCH):= LOCAL_CLANG_LDFLAGS_$(TARGET_2ND_ARCH):= LOCAL_SHARED_LIBRARIES_$(TARGET_2ND_ARCH):= @@ -230,7 +228,6 @@ LOCAL_CLANG_CPPFLAGS_$(HOST_ARCH):= LOCAL_C_INCLUDES_$(HOST_ARCH):= LOCAL_ASFLAGS_$(HOST_ARCH):= LOCAL_CLANG_ASFLAGS_$(HOST_ARCH):= -LOCAL_NO_CRT_$(HOST_ARCH):= LOCAL_LDFLAGS_$(HOST_ARCH):= LOCAL_CLANG_LDFLAGS_$(HOST_ARCH):= LOCAL_SHARED_LIBRARIES_$(HOST_ARCH):= @@ -248,7 +245,6 @@ LOCAL_CLANG_CPPFLAGS_$(HOST_2ND_ARCH):= LOCAL_C_INCLUDES_$(HOST_2ND_ARCH):= LOCAL_ASFLAGS_$(HOST_2ND_ARCH):= LOCAL_CLANG_ASFLAGS_$(HOST_2ND_ARCH):= -LOCAL_NO_CRT_$(HOST_2ND_ARCH):= LOCAL_LDFLAGS_$(HOST_2ND_ARCH):= LOCAL_CLANG_LDFLAGS_$(HOST_2ND_ARCH):= LOCAL_SHARED_LIBRARIES_$(HOST_2ND_ARCH):= diff --git a/core/definitions.mk b/core/definitions.mk index c1841dc2b..442501e81 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -831,7 +831,6 @@ define dump-module-variables @echo PRIVATE_ALL_STATIC_LIBRARIES=$(PRIVATE_ALL_STATIC_LIBRARIES); @echo PRIVATE_ALL_WHOLE_STATIC_LIBRARIES=$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES); @echo PRIVATE_ALL_OBJECTS=$(PRIVATE_ALL_OBJECTS); -@echo PRIVATE_NO_CRT=$(PRIVATE_NO_CRT); endef ########################################################### @@ -1443,7 +1442,7 @@ $(hide) $(PRIVATE_CXX) \ -Wl,--gc-sections \ $(if $(filter true,$(PRIVATE_CLANG)),-shared,-Wl$(comma)-shared) \ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_SO_O)) \ + $(PRIVATE_TARGET_CRTBEGIN_SO_O) \ $(PRIVATE_ALL_OBJECTS) \ -Wl,--whole-archive \ $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ @@ -1459,7 +1458,7 @@ $(hide) $(PRIVATE_CXX) \ -o $@ \ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ $(PRIVATE_LDFLAGS) \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_SO_O)) \ + $(PRIVATE_TARGET_CRTEND_SO_O) \ $(PRIVATE_LDLIBS) endef @@ -1516,7 +1515,7 @@ $(hide) $(PRIVATE_CXX) -pie \ -Wl,-z,nocopyreloc \ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ -Wl,-rpath-link=$(PRIVATE_TARGET_OUT_INTERMEDIATE_LIBRARIES) \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \ + $(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O) \ $(PRIVATE_ALL_OBJECTS) \ -Wl,--whole-archive \ $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ @@ -1532,7 +1531,7 @@ $(hide) $(PRIVATE_CXX) -pie \ -o $@ \ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ $(PRIVATE_LDFLAGS) \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) \ + $(PRIVATE_TARGET_CRTEND_O) \ $(PRIVATE_LDLIBS) endef @@ -1560,7 +1559,7 @@ $(hide) $(PRIVATE_CXX) \ -Wl,--gc-sections \ -o $@ \ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \ + $(PRIVATE_TARGET_CRTBEGIN_STATIC_O) \ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ $(PRIVATE_LDFLAGS) \ $(PRIVATE_ALL_OBJECTS) \ @@ -1577,7 +1576,7 @@ $(hide) $(PRIVATE_CXX) \ $(call normalize-target-libraries,$(filter %libcompiler_rt.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \ $(PRIVATE_TARGET_LIBGCC) \ -Wl,--end-group \ - $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O)) + $(PRIVATE_TARGET_CRTEND_O) endef define transform-o-to-static-executable diff --git a/core/executable_internal.mk b/core/executable_internal.mk index cdaf293d1..1d576a25c 100644 --- a/core/executable_internal.mk +++ b/core/executable_internal.mk @@ -43,9 +43,15 @@ else my_target_libgcc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC) endif my_target_libatomic := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBATOMIC) +ifeq ($(LOCAL_NO_CRT),true) +my_target_crtbegin_dynamic_o := +my_target_crtbegin_static_o := +my_target_crtend_o := +else my_target_crtbegin_dynamic_o := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_DYNAMIC_O) my_target_crtbegin_static_o := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_STATIC_O) my_target_crtend_o := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O) +endif 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. diff --git a/core/shared_library_internal.mk b/core/shared_library_internal.mk index e21cf5d25..150750261 100644 --- a/core/shared_library_internal.mk +++ b/core/shared_library_internal.mk @@ -48,8 +48,13 @@ else my_target_libgcc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC) endif my_target_libatomic := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBATOMIC) +ifeq ($(LOCAL_NO_CRT),true) +my_target_crtbegin_so_o := +my_target_crtend_so_o := +else 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) +endif 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.