diff --git a/core/binary.mk b/core/binary.mk index 04ac90b72a..04e012842b 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -148,6 +148,15 @@ ifeq ($(strip $(LOCAL_NO_FDO_SUPPORT)),) LOCAL_LDFLAGS += $(TARGET_FDO_CFLAGS) endif +#################################################### +## Add profiling flags if aprof is turned on +#################################################### +ifeq ($(strip $(LOCAL_ENABLE_APROF)),true) + # -ffunction-sections and -fomit-frame-pointer are conflict with -pg + LOCAL_CFLAGS += -fno-omit-frame-pointer -fno-function-sections -pg + LOCAL_CPPFLAGS += -fno-omit-frame-pointer -fno-function-sections -pg +endif + ########################################################### ## Explicitly declare assembly-only __ASSEMBLY__ macro for ## assembly source diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 5209a04d86..1fdadaddde 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -79,6 +79,8 @@ LOCAL_COPY_HEADERS_TO:= LOCAL_COPY_HEADERS:= LOCAL_FORCE_STATIC_EXECUTABLE:= LOCAL_ADDITIONAL_DEPENDENCIES:= +LOCAL_ENABLE_APROF:= +LOCAL_ENABLE_APROF_JNI:= LOCAL_COMPRESS_MODULE_SYMBOLS:= LOCAL_STRIP_MODULE:= LOCAL_POST_PROCESS_COMMAND:=true diff --git a/core/executable.mk b/core/executable.mk index 6138adb214..baebc3bdbf 100644 --- a/core/executable.mk +++ b/core/executable.mk @@ -12,6 +12,18 @@ ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),) LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX) endif +#################################################### +## Add profiling libraries if aprof is turned +#################################################### +ifeq ($(strip $(LOCAL_ENABLE_APROF)),true) + ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE), true) + LOCAL_STATIC_LIBRARIES += libaprof libaprof_static libc libcutils + else + LOCAL_SHARED_LIBRARIES += libaprof libaprof_runtime libc + endif + LOCAL_WHOLE_STATIC_LIBRARIES += libaprof_aux +endif + include $(BUILD_SYSTEM)/dynamic_binary.mk ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true) diff --git a/core/shared_library.mk b/core/shared_library.mk index d71534952d..ab7480d56e 100644 --- a/core/shared_library.mk +++ b/core/shared_library.mk @@ -20,12 +20,25 @@ ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) $(error $(LOCAL_PATH): Can not set module stem for a library) endif +#################################################### +## Add profiling libraries if aprof is turned +#################################################### +ifeq ($(strip $(LOCAL_ENABLE_APROF_JNI)),true) + LOCAL_ENABLE_APROF := true + LOCAL_WHOLE_STATIC_LIBRARIES += libaprof_jni +endif + +ifeq ($(strip $(LOCAL_ENABLE_APROF)),true) + LOCAL_SHARED_LIBRARIES += libaprof libaprof_runtime +endif + # 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) my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) diff --git a/core/static_library.mk b/core/static_library.mk index 66e091b262..2a8edfd1ee 100644 --- a/core/static_library.mk +++ b/core/static_library.mk @@ -18,6 +18,13 @@ ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) $(error $(LOCAL_PATH): Can not set module stem for a library) endif +#################################################### +## Add profiling libraries if aprof is turned +#################################################### +ifeq ($(strip $(LOCAL_ENABLE_APROF)),true) + LOCAL_WHOLE_STATIC_LIBRARIES += libaprof +endif + include $(BUILD_SYSTEM)/binary.mk ifeq ($(LOCAL_RAW_STATIC_LIBRARY),true)