Record module type statistics
Creates a build_system_stats.txt build artifact that contains statistics on how many BUILD_* modules are defined in a build. Also writes out information about the Soong module types sent from the Soong build. Change-Id: Iaf0c7062f542dc6942b5349854f3d49267cac4a5
This commit is contained in:
parent
854dd1ffcf
commit
1684b32620
30 changed files with 82 additions and 0 deletions
|
@ -386,7 +386,15 @@ ifneq (,$(TARGET_BUILD_APPS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
# build system stats
|
||||||
|
BUILD_SYSTEM_STATS := $(PRODUCT_OUT)/build_system_stats.txt
|
||||||
|
$(BUILD_SYSTEM_STATS):
|
||||||
|
@rm -f $@
|
||||||
|
@$(foreach s,$(STATS.MODULE_TYPE),echo "modules_type_make,$(s),$(words $(STATS.MODULE_TYPE.$(s)))" >>$@;)
|
||||||
|
@$(foreach s,$(STATS.SOONG_MODULE_TYPE),echo "modules_type_soong,$(s),$(STATS.SOONG_MODULE_TYPE.$(s))" >>$@;)
|
||||||
|
$(call dist-for-goals,droidcore,$(BUILD_SYSTEM_STATS))
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
# The dev key is used to sign this package, and as the key required
|
# The dev key is used to sign this package, and as the key required
|
||||||
# for future OTA packages installed by this system. Actual product
|
# for future OTA packages installed by this system. Actual product
|
||||||
# deliverables will be re-signed by hand. We expect this file to
|
# deliverables will be re-signed by hand. We expect this file to
|
||||||
|
|
|
@ -14,6 +14,9 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Catch users that directly include base_rules.mk
|
||||||
|
$(call record-module-type,base_rules)
|
||||||
|
|
||||||
# Users can define base-rules-hook in their buildspec.mk to perform
|
# Users can define base-rules-hook in their buildspec.mk to perform
|
||||||
# arbitrary operations as each module is included.
|
# arbitrary operations as each module is included.
|
||||||
ifdef base-rules-hook
|
ifdef base-rules-hook
|
||||||
|
|
|
@ -215,6 +215,7 @@ LOCAL_COPY_TO_INTERMEDIATE_LIBRARIES:=
|
||||||
LOCAL_LOGTAGS_FILES:=
|
LOCAL_LOGTAGS_FILES:=
|
||||||
LOCAL_EXTRACT_APK:=
|
LOCAL_EXTRACT_APK:=
|
||||||
LOCAL_EXTRACT_DPI_APK:=
|
LOCAL_EXTRACT_DPI_APK:=
|
||||||
|
LOCAL_RECORDED_MODULE_TYPE:=
|
||||||
|
|
||||||
# arch specific variables
|
# arch specific variables
|
||||||
LOCAL_SRC_FILES_$(TARGET_ARCH):=
|
LOCAL_SRC_FILES_$(TARGET_ARCH):=
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
###########################################################
|
###########################################################
|
||||||
## Copy headers to the install tree
|
## Copy headers to the install tree
|
||||||
###########################################################
|
###########################################################
|
||||||
|
$(call record-module-type,COPY_HEADERS)
|
||||||
ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),)
|
ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),)
|
||||||
my_prefix := HOST_
|
my_prefix := HOST_
|
||||||
else
|
else
|
||||||
|
|
|
@ -3022,6 +3022,48 @@ $(strip $(if $(filter $(TARGET_ARCH),$(1)),$(TARGET_ARCH),\
|
||||||
$(if $(filter $(TARGET_2ND_ARCH),$(1)),$(TARGET_2ND_ARCH),$(if $(1),none))))
|
$(if $(filter $(TARGET_2ND_ARCH),$(1)),$(TARGET_2ND_ARCH),$(if $(1),none))))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
# ###############################################################
|
||||||
|
# Set up statistics gathering
|
||||||
|
# ###############################################################
|
||||||
|
STATS.MODULE_TYPE := \
|
||||||
|
HOST_STATIC_LIBRARY \
|
||||||
|
HOST_SHARED_LIBRARY \
|
||||||
|
STATIC_LIBRARY \
|
||||||
|
SHARED_LIBRARY \
|
||||||
|
EXECUTABLE \
|
||||||
|
HOST_EXECUTABLE \
|
||||||
|
PACKAGE \
|
||||||
|
PHONY_PACKAGE \
|
||||||
|
HOST_PREBUILT \
|
||||||
|
PREBUILT \
|
||||||
|
MULTI_PREBUILT \
|
||||||
|
JAVA_LIBRARY \
|
||||||
|
STATIC_JAVA_LIBRARY \
|
||||||
|
HOST_JAVA_LIBRARY \
|
||||||
|
DROIDDOC \
|
||||||
|
COPY_HEADERS \
|
||||||
|
NATIVE_TEST \
|
||||||
|
NATIVE_BENCHMARK \
|
||||||
|
HOST_NATIVE_TEST \
|
||||||
|
FUZZ_TEST \
|
||||||
|
HOST_FUZZ_TEST \
|
||||||
|
STATIC_TEST_LIBRARY \
|
||||||
|
HOST_STATIC_TEST_LIBRARY \
|
||||||
|
NOTICE_FILE \
|
||||||
|
HOST_DALVIK_JAVA_LIBRARY \
|
||||||
|
HOST_DALVIK_STATIC_JAVA_LIBRARY \
|
||||||
|
base_rules
|
||||||
|
|
||||||
|
$(foreach $(s),$(STATS.MODULE_TYPE),$(eval STATS.MODULE_TYPE.$(s) :=))
|
||||||
|
define record-module-type
|
||||||
|
$(strip $(if $(LOCAL_RECORDED_MODULE_TYPE),,
|
||||||
|
$(if $(filter-out $(SOONG_ANDROID_MK),$(LOCAL_MODULE_MAKEFILE)),
|
||||||
|
$(if $(filter $(1),$(STATS.MODULE_TYPE)),
|
||||||
|
$(eval LOCAL_RECORDED_MODULE_TYPE := true)
|
||||||
|
$(eval STATS.MODULE_TYPE.$(1) += 1),
|
||||||
|
$(error Invalid module type: $(1))))))
|
||||||
|
endef
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
## Other includes
|
## Other includes
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
$(call record-module-type,DROIDDOC)
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
## Common to both droiddoc and javadoc
|
## Common to both droiddoc and javadoc
|
||||||
|
|
|
@ -16,6 +16,7 @@ ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (true,$(my_skip_this_target))
|
ifneq (true,$(my_skip_this_target))
|
||||||
|
$(call record-module-type,EXECUTABLE)
|
||||||
|
|
||||||
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
||||||
# If a native test explicity specifies to build only for the translation arch,
|
# If a native test explicity specifies to build only for the translation arch,
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_EXECUTABLE
|
## A thin wrapper around BUILD_EXECUTABLE
|
||||||
## Common flags for fuzz tests are added.
|
## Common flags for fuzz tests are added.
|
||||||
###########################################
|
###########################################
|
||||||
|
$(call record-module-type,FUZZ_TEST)
|
||||||
|
|
||||||
ifdef LOCAL_SDK_VERSION
|
ifdef LOCAL_SDK_VERSION
|
||||||
$(error $(LOCAL_PATH): $(LOCAL_MODULE): NDK fuzz tests are not supported.)
|
$(error $(LOCAL_PATH): $(LOCAL_MODULE): NDK fuzz tests are not supported.)
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
$(call record-module-type,HOST_DALVIK_JAVA_LIBRARY)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules for building a host dalvik java library. These libraries
|
# Rules for building a host dalvik java library. These libraries
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
$(call record-module-type,HOST_DALVIK_STATIC_JAVA_LIBRARY)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules for building a host dalvik static java library.
|
# Rules for building a host dalvik static java library.
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,HOST_EXECUTABLE)
|
||||||
LOCAL_IS_HOST_MODULE := true
|
LOCAL_IS_HOST_MODULE := true
|
||||||
my_prefix := HOST_
|
my_prefix := HOST_
|
||||||
LOCAL_HOST_PREFIX :=
|
LOCAL_HOST_PREFIX :=
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_HOST_EXECUTABLE
|
## A thin wrapper around BUILD_HOST_EXECUTABLE
|
||||||
## Common flags for host fuzz tests are added.
|
## Common flags for host fuzz tests are added.
|
||||||
################################################
|
################################################
|
||||||
|
$(call record-module-type,HOST_FUZZ_TEST)
|
||||||
|
|
||||||
LOCAL_CFLAGS += -fsanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
LOCAL_CFLAGS += -fsanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp
|
||||||
LOCAL_STATIC_LIBRARIES += libLLVMFuzzer
|
LOCAL_STATIC_LIBRARIES += libLLVMFuzzer
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
$(call record-module-type,HOST_JAVA_LIBRARY)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Standard rules for building a host java library.
|
# Standard rules for building a host java library.
|
||||||
#
|
#
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_HOST_EXECUTABLE
|
## A thin wrapper around BUILD_HOST_EXECUTABLE
|
||||||
## Common flags for host native tests are added.
|
## Common flags for host native tests are added.
|
||||||
################################################
|
################################################
|
||||||
|
$(call record-module-type,HOST_NATIVE_TEST)
|
||||||
|
|
||||||
ifdef LOCAL_MODULE_CLASS
|
ifdef LOCAL_MODULE_CLASS
|
||||||
ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS)
|
ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS)
|
||||||
|
|
|
@ -14,5 +14,6 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
$(call record-module-type,HOST_PREBUILT)
|
||||||
LOCAL_IS_HOST_MODULE := true
|
LOCAL_IS_HOST_MODULE := true
|
||||||
include $(BUILD_MULTI_PREBUILT)
|
include $(BUILD_MULTI_PREBUILT)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,HOST_SHARED_LIBRARY)
|
||||||
LOCAL_IS_HOST_MODULE := true
|
LOCAL_IS_HOST_MODULE := true
|
||||||
my_prefix := HOST_
|
my_prefix := HOST_
|
||||||
LOCAL_HOST_PREFIX :=
|
LOCAL_HOST_PREFIX :=
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,HOST_STATIC_LIBRARY)
|
||||||
LOCAL_IS_HOST_MODULE := true
|
LOCAL_IS_HOST_MODULE := true
|
||||||
my_prefix := HOST_
|
my_prefix := HOST_
|
||||||
LOCAL_HOST_PREFIX :=
|
LOCAL_HOST_PREFIX :=
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_HOST_STATIC_LIBRARY
|
## A thin wrapper around BUILD_HOST_STATIC_LIBRARY
|
||||||
## Common flags for host native tests are added.
|
## Common flags for host native tests are added.
|
||||||
##################################################
|
##################################################
|
||||||
|
$(call record-module-type,HOST_STATIC_TEST_LIBRARY)
|
||||||
|
|
||||||
include $(BUILD_SYSTEM)/host_test_internal.mk
|
include $(BUILD_SYSTEM)/host_test_internal.mk
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## Standard rules for building a java library.
|
## Standard rules for building a java library.
|
||||||
##
|
##
|
||||||
###########################################################
|
###########################################################
|
||||||
|
$(call record-module-type,JAVA_LIBRARY)
|
||||||
|
|
||||||
ifdef LOCAL_IS_HOST_MODULE
|
ifdef LOCAL_IS_HOST_MODULE
|
||||||
$(error $(LOCAL_PATH): Host java libraries must use BUILD_HOST_JAVA_LIBRARY)
|
$(error $(LOCAL_PATH): Host java libraries must use BUILD_HOST_JAVA_LIBRARY)
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
$(call record-module-type,MULTI_PREBUILT)
|
||||||
ifneq ($(LOCAL_MODULE)$(LOCAL_MODULE_CLASS),)
|
ifneq ($(LOCAL_MODULE)$(LOCAL_MODULE_CLASS),)
|
||||||
$(error $(LOCAL_PATH): LOCAL_MODULE or LOCAL_MODULE_CLASS not needed by \
|
$(error $(LOCAL_PATH): LOCAL_MODULE or LOCAL_MODULE_CLASS not needed by \
|
||||||
BUILD_MULTI_PREBUILT, use BUILD_PREBUILT instead!)
|
BUILD_MULTI_PREBUILT, use BUILD_PREBUILT instead!)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_EXECUTABLE
|
## A thin wrapper around BUILD_EXECUTABLE
|
||||||
## Common flags for native benchmarks are added.
|
## Common flags for native benchmarks are added.
|
||||||
###########################################
|
###########################################
|
||||||
|
$(call record-module-type,NATIVE_BENCHMARK)
|
||||||
|
|
||||||
LOCAL_STATIC_LIBRARIES += libgoogle-benchmark
|
LOCAL_STATIC_LIBRARIES += libgoogle-benchmark
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_EXECUTABLE
|
## A thin wrapper around BUILD_EXECUTABLE
|
||||||
## Common flags for native tests are added.
|
## Common flags for native tests are added.
|
||||||
###########################################
|
###########################################
|
||||||
|
$(call record-module-type,NATIVE_TEST)
|
||||||
|
|
||||||
ifdef LOCAL_MODULE_CLASS
|
ifdef LOCAL_MODULE_CLASS
|
||||||
ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS)
|
ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
###########################################################
|
###########################################################
|
||||||
## Track NOTICE files
|
## Track NOTICE files
|
||||||
###########################################################
|
###########################################################
|
||||||
|
$(call record-module-type,NOTICE_FILE)
|
||||||
|
|
||||||
ifneq ($(LOCAL_NOTICE_FILE),)
|
ifneq ($(LOCAL_NOTICE_FILE),)
|
||||||
notice_file:=$(strip $(LOCAL_NOTICE_FILE))
|
notice_file:=$(strip $(LOCAL_NOTICE_FILE))
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# TARGET_ARCH and TARGET_2ND_ARCH.
|
# TARGET_ARCH and TARGET_2ND_ARCH.
|
||||||
# To build it for TARGET_2ND_ARCH in a 64bit product, use "LOCAL_MULTILIB := 32".
|
# To build it for TARGET_2ND_ARCH in a 64bit product, use "LOCAL_MULTILIB := 32".
|
||||||
|
|
||||||
|
$(call record-module-type,PACKAGE)
|
||||||
|
|
||||||
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
||||||
LOCAL_MULTILIB := first
|
LOCAL_MULTILIB := first
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,PHONY_PACKAGE)
|
||||||
ifneq ($(strip $(LOCAL_SRC_FILES)),)
|
ifneq ($(strip $(LOCAL_SRC_FILES)),)
|
||||||
$(error LOCAL_SRC_FILES are not allowed for phony packages)
|
$(error LOCAL_SRC_FILES are not allowed for phony packages)
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
## None.
|
## None.
|
||||||
##
|
##
|
||||||
###########################################################
|
###########################################################
|
||||||
|
$(call record-module-type,PREBUILT)
|
||||||
|
|
||||||
ifdef LOCAL_IS_HOST_MODULE
|
ifdef LOCAL_IS_HOST_MODULE
|
||||||
my_prefix := HOST_
|
my_prefix := HOST_
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,SHARED_LIBRARY)
|
||||||
my_prefix := TARGET_
|
my_prefix := TARGET_
|
||||||
include $(BUILD_SYSTEM)/multilib.mk
|
include $(BUILD_SYSTEM)/multilib.mk
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
# classpaths. They can, however, be included wholesale in
|
# classpaths. They can, however, be included wholesale in
|
||||||
# other java modules.
|
# other java modules.
|
||||||
|
|
||||||
|
$(call record-module-type,STATIC_JAVA_LIBRARY)
|
||||||
LOCAL_UNINSTALLABLE_MODULE := true
|
LOCAL_UNINSTALLABLE_MODULE := true
|
||||||
LOCAL_IS_STATIC_JAVA_LIBRARY := true
|
LOCAL_IS_STATIC_JAVA_LIBRARY := true
|
||||||
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
|
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
$(call record-module-type,STATIC_LIBRARY)
|
||||||
my_prefix := TARGET_
|
my_prefix := TARGET_
|
||||||
include $(BUILD_SYSTEM)/multilib.mk
|
include $(BUILD_SYSTEM)/multilib.mk
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
## A thin wrapper around BUILD_STATIC_LIBRARY
|
## A thin wrapper around BUILD_STATIC_LIBRARY
|
||||||
## Common flags for native tests are added.
|
## Common flags for native tests are added.
|
||||||
#############################################
|
#############################################
|
||||||
|
$(call record-module-type,STATIC_TEST_LIBRARY)
|
||||||
|
|
||||||
include $(BUILD_SYSTEM)/target_test_internal.mk
|
include $(BUILD_SYSTEM)/target_test_internal.mk
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue