Accept TARGET_DEVICE_DIR preserved from previous product load
During a build, we load product configuration three different times -- to dump some initial variables, when parsing the CleanSpec.mk files, and again when we parse the Android.mk files. The BoardConfig.mk find commands use -path, which isn't supported by the Kati find optimizer, so we end up spending ~125ms in each of the above cases (on my machine, internal master -- aosp is closer to 30ms). Instead, do the search during the initial dumping of variables, and pass in TARGET_DEVICE_DIR into the later runs, using that to load the BoardConfig.mk file. Bug: 78020936 Test: out/build-taimen.ninja is identical Test: out/soong.log shows that we're not running these finds again Change-Id: I6f186e1879aa362528b48b8a00be3f7a9f88bfc5
This commit is contained in:
parent
88727e2422
commit
92afd7d1e7
2 changed files with 25 additions and 12 deletions
|
@ -99,6 +99,11 @@ SRC_TEST_API_DIR := $(TOPDIR)prebuilts/sdk/test-api
|
|||
# Some specific paths to tools
|
||||
SRC_DROIDDOC_DIR := $(TOPDIR)build/make/tools/droiddoc
|
||||
|
||||
# Mark some inputs as readonly
|
||||
ifdef TARGET_DEVICE_DIR
|
||||
.KATI_READONLY := TARGET_DEVICE_DIR
|
||||
endif
|
||||
|
||||
# Set up efficient math functions which are used in make.
|
||||
# Here since this file is included by envsetup as well as during build.
|
||||
include $(BUILD_SYSTEM)/math.mk
|
||||
|
|
|
@ -241,17 +241,26 @@ SDK_HOST_ARCH := x86
|
|||
# or under vendor/*/$(TARGET_DEVICE). Search in both places, but
|
||||
# make sure only one exists.
|
||||
# Real boards should always be associated with an OEM vendor.
|
||||
board_config_mk := \
|
||||
$(strip $(sort $(wildcard \
|
||||
$(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \
|
||||
$(shell test -d device && find -L device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
||||
$(shell test -d vendor && find -L vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
||||
)))
|
||||
ifeq ($(board_config_mk),)
|
||||
$(error No config file found for TARGET_DEVICE $(TARGET_DEVICE))
|
||||
endif
|
||||
ifneq ($(words $(board_config_mk)),1)
|
||||
$(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk))
|
||||
ifdef TARGET_DEVICE_DIR
|
||||
ifneq ($(origin TARGET_DEVICE_DIR),command line)
|
||||
$(error TARGET_DEVICE_DIR may not be set manually)
|
||||
endif
|
||||
board_config_mk := $(TARGET_DEVICE_DIR)/BoardConfig.mk
|
||||
else
|
||||
board_config_mk := \
|
||||
$(strip $(sort $(wildcard \
|
||||
$(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \
|
||||
$(shell test -d device && find -L device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
||||
$(shell test -d vendor && find -L vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \
|
||||
)))
|
||||
ifeq ($(board_config_mk),)
|
||||
$(error No config file found for TARGET_DEVICE $(TARGET_DEVICE))
|
||||
endif
|
||||
ifneq ($(words $(board_config_mk)),1)
|
||||
$(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk))
|
||||
endif
|
||||
TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk)))
|
||||
.KATI_READONLY := TARGET_DEVICE_DIR
|
||||
endif
|
||||
include $(board_config_mk)
|
||||
ifeq ($(TARGET_ARCH),)
|
||||
|
@ -261,7 +270,6 @@ ifneq ($(MALLOC_IMPL),)
|
|||
$(warning *** Unsupported option MALLOC_IMPL defined by board config: $(board_config_mk).)
|
||||
$(error Use `MALLOC_SVELTE := true` to configure jemalloc for low-memory)
|
||||
endif
|
||||
TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk)))
|
||||
board_config_mk :=
|
||||
|
||||
###########################################
|
||||
|
|
Loading…
Reference in a new issue