Merge "Fix comma in $(if ...)."
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 52a1b1f..4591fb7 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -315,6 +315,10 @@
# an ABI change since the names will mangle differently.
$(call add-clean-step, rm -rf $(OUT_DIR))
+# Remove ro.product.locale.language/country and add ro.product.locale
+# instead.
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/build.prop)
+
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/core/Makefile b/core/Makefile
index 0d07423..49f48fc 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -156,29 +156,12 @@
BUILD_DISPLAY_ID := $(build_desc)
endif
-# Whether there is default locale set in PRODUCT_PROPERTY_OVERRIDES
-product_property_override_locale_language := $(strip \
- $(patsubst ro.product.locale.language=%,%,\
- $(filter ro.product.locale.language=%,$(PRODUCT_PROPERTY_OVERRIDES))))
-product_property_overrides_locale_region := $(strip \
- $(patsubst ro.product.locale.region=%,%,\
- $(filter ro.product.locale.region=%,$(PRODUCT_PROPERTY_OVERRIDES))))
-
-# Selects the first locale in the list given as the argument,
-# and splits it into language and region, which each may be
-# empty.
-define default-locale
-$(subst _, , $(firstword $(1)))
-endef
-
-# Selects the first locale in the list given as the argument
-# and returns the language (or the region), if it's not set in PRODUCT_PROPERTY_OVERRIDES;
-# Return empty string if it's already set in PRODUCT_PROPERTY_OVERRIDES.
-define default-locale-language
-$(if $(product_property_override_locale_language),,$(word 1, $(call default-locale, $(1))))
-endef
-define default-locale-region
-$(if $(product_property_overrides_locale_region),,$(word 2, $(call default-locale, $(1))))
+# Accepts a whitespace separated list of product locales such as
+# (en_US en_AU en_GB...) and returns the first locale in the list with
+# underscores replaced with hyphens. In the example above, this will
+# return "en-US".
+define get-default-product-locale
+$(strip $(subst _,-, $(firstword $(1))))
endef
BUILDINFO_SH := build/tools/buildinfo.sh
@@ -203,8 +186,7 @@
TARGET_DEVICE="$(TARGET_DEVICE)" \
PRODUCT_NAME="$(TARGET_PRODUCT)" \
PRODUCT_BRAND="$(PRODUCT_BRAND)" \
- PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \
- PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \
+ PRODUCT_DEFAULT_LOCALE="$(call get-default-product-locale,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_WIFI_CHANNELS="$(PRODUCT_DEFAULT_WIFI_CHANNELS)" \
PRODUCT_MODEL="$(PRODUCT_MODEL)" \
PRODUCT_MANUFACTURER="$(PRODUCT_MANUFACTURER)" \
diff --git a/core/binary.mk b/core/binary.mk
index d020846..02b72b6 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -251,33 +251,6 @@
my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
endif # my_clang
-# To enable coverage for a given module, set LOCAL_NATIVE_COVERAGE=true and
-# build with NATIVE_COVERAGE=true in your enviornment. Note that the build
-# system is not sensitive to changes to NATIVE_COVERAGE, so you should do a
-# clean build of your module after toggling it.
-ifeq ($(NATIVE_COVERAGE),true)
- ifeq ($(my_native_coverage),true)
- # We can't currently generate coverage for clang binaries for two
- # reasons:
- #
- # 1) b/17574078 We currently don't have a prebuilt
- # libclang_rt.profile-<ARCH>.a, which clang is hardcoded to link if
- # --coverage is passed in the link stage. For now we manually link
- # libprofile_rt (which is the name it is built as from
- # external/compiler-rt).
- #
- # 2) b/17583330 Clang doesn't generate .gcno files when using
- # -no-integrated-as. Since most of the assembly in our tree is
- # incompatible with clang's assembler, we can't turn off this flag.
- ifneq ($(my_clang),true)
- my_cflags += --coverage -O0
- my_ldflags += --coverage
- endif
- endif
-else
- my_native_coverage := false
-endif
-
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags)
@@ -308,6 +281,35 @@
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_LDFLAGS := $(my_host_global_ldflags)
endif # LOCAL_IS_HOST_MODULE
+# To enable coverage for a given module, set LOCAL_NATIVE_COVERAGE=true and
+# build with NATIVE_COVERAGE=true in your enviornment. Note that the build
+# system is not sensitive to changes to NATIVE_COVERAGE, so you should do a
+# clean build of your module after toggling it.
+ifeq ($(NATIVE_COVERAGE),true)
+ ifeq ($(my_native_coverage),true)
+ my_cflags += --coverage -O0
+ ifeq ($(my_clang),true)
+ # b/17574078
+ # We currently don't have a prebuilt libclang_rt.profile-<ARCH>.a,
+ # which clang is hardcoded to link if --coverage is passed in the
+ # link stage. For now we manually link libprofile_rt (which is the
+ # name it is built as from external/compiler-rt).
+ #
+ # Note that clang coverage doesn't play nicely with acov out of the
+ # box. Clang apparently generates .gcno files that aren't compatible
+ # with gcov-4.8. This can be solved by installing gcc-4.6 and
+ # invoking lcov with `--gcov-tool /usr/bin/gcov-4.6`.
+ #
+ # http://stackoverflow.com/questions/17758126/clang-code-coverage-invalid-output
+ my_static_libraries += libprofile_rt
+ else
+ my_ldflags += --coverage
+ endif
+ endif
+else
+ my_native_coverage := false
+endif
+
###########################################################
## Define PRIVATE_ variables used by multiple module types
###########################################################
@@ -840,11 +842,12 @@
$(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes) \
$(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \
$(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes))
-$(import_includes) : $(import_includes_deps)
+$(import_includes): PRIVATE_IMPORT_EXPORT_INCLUDES := $(import_includes_deps)
+$(import_includes) : $(LOCAL_MODULE_MAKEFILE) $(import_includes_deps)
@echo Import includes file: $@
$(hide) mkdir -p $(dir $@) && rm -f $@
ifdef import_includes_deps
- $(hide) for f in $^; do \
+ $(hide) for f in $(PRIVATE_IMPORT_EXPORT_INCLUDES); do \
cat $$f >> $@; \
done
else
diff --git a/core/definitions.mk b/core/definitions.mk
index 3d9a73a..e276887 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -1302,6 +1302,7 @@
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
+ $(if $(filter true,$(NATIVE_COVERAGE)),-lgcov) \
$(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
-o $@ \
$(PRIVATE_LDLIBS)
@@ -1425,11 +1426,16 @@
## Commands for linking a static executable. In practice,
## we only use this on arm, so the other platforms don't
## have transform-o-to-static-executable defined.
+## Clang driver needs -static to create static executable.
+## However, bionic/linker uses -shared to overwrite.
+## Linker for x86 targets does not allow coexistance of -static and -shared,
+## so we add -static only if -shared is not used.
###########################################################
define transform-o-to-static-executable-inner
$(hide) $(PRIVATE_CXX) \
-nostdlib -Bstatic \
+ $(if $(filter $(PRIVATE_LDFLAGS),-shared),,-static) \
-Wl,--gc-sections \
-o $@ \
$(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
@@ -1482,6 +1488,7 @@
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
+ $(if $(filter true,$(NATIVE_COVERAGE)),-lgcov) \
$(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
-Wl,-rpath-link=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATE_LIBRARIES) \
-Wl,-rpath,\$$ORIGIN/../$(notdir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)) \
diff --git a/envsetup.sh b/envsetup.sh
index b6b62ea..45c4067 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -1041,11 +1041,18 @@
if [ -z "$PID" ]; then
echo "Error: couldn't resolve pid by process name: $PROCESS_NAME"
return -4
+ else
+ echo "Resolved pid for $PROCESS_NAME is $PID"
fi
fi
local EXE=`adb shell readlink /proc/$PID/exe | sed s/.$//`
- # TODO: print error in case there is no such pid
+
+ if [ -z "$EXE" ]; then
+ echo "Error: no such pid=$PID - is process still alive?"
+ return -4
+ fi
+
local LOCAL_EXE_PATH=$SYMBOLS_DIR$EXE
if [ ! -f $LOCAL_EXE_PATH ]; then
diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh
index ed6bd87..b191b2c 100755
--- a/tools/buildinfo.sh
+++ b/tools/buildinfo.sh
@@ -35,11 +35,8 @@
echo "ro.product.cpu.abilist64=$TARGET_CPU_ABI_LIST_64_BIT"
echo "ro.product.manufacturer=$PRODUCT_MANUFACTURER"
-if [ -n "$PRODUCT_DEFAULT_LANGUAGE" ] ; then
- echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
-fi
-if [ -n "$PRODUCT_DEFAULT_REGION" ] ; then
- echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
+if [ -n "$PRODUCT_DEFAULT_LOCALE" ] ; then
+ echo "ro.product.locale=$PRODUCT_DEFAULT_LOCALE"
fi
echo "ro.wifi.channels=$PRODUCT_DEFAULT_WIFI_CHANNELS"
echo "ro.board.platform=$TARGET_BOARD_PLATFORM"