Merge "DO NOT MERGE: better late than never: fix build id for JB MR1" into jb-mr1-dev
diff --git a/core/base_rules.mk b/core/base_rules.mk
index bd92b09..186c4db 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -449,7 +449,6 @@
# Propagate local configuration options to this target.
$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_PATH:=$(LOCAL_PATH)
-$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_POST_PROCESS_COMMAND:= $(LOCAL_POST_PROCESS_COMMAND)
$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_AAPT_FLAGS:= $(LOCAL_AAPT_FLAGS)
$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_JAVA_LIBRARIES:= $(LOCAL_JAVA_LIBRARIES)
$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_MANIFEST_PACKAGE_NAME:= $(LOCAL_MANIFEST_PACKAGE_NAME)
diff --git a/core/binary.mk b/core/binary.mk
index ce0fd70..791623b 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -13,10 +13,6 @@
ifdef LOCAL_IS_HOST_MODULE
$(error $(LOCAL_PATH): LOCAL_SDK_VERSION cannot be used in host module)
endif
- ifneq ($(filter-out SHARED_LIBRARIES STATIC_LIBRARIES,$(LOCAL_MODULE_CLASS)),)
- $(error $(LOCAL_PATH): NDK can only be used to build target shared/static libraries, \
- while your module is of class $(LOCAL_MODULE_CLASS))
- endif
my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources
my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_ARCH)
diff --git a/core/cleanspec.mk b/core/cleanspec.mk
index a3eb7cd..444ff98 100644
--- a/core/cleanspec.mk
+++ b/core/cleanspec.mk
@@ -63,8 +63,27 @@
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
+# Get the path of the top of the tree.
+# for example:
+# /home/bob/master/framework/base => /home/bob/master
+# See function gettop in build/envsetup.sh.
+define get-top-dir
+$(if $(1),$(if $(wildcard $(1)/build/core/envsetup.mk),$(1),$(strip \
+ $(call get-top-dir,$(patsubst %/,%,$(dir $(1)))))))
+endef
+
ifneq ($(ONE_SHOT_MAKEFILE),)
-cs_subdirs := $(dir $(ONE_SHOT_MAKEFILE))
+cs_subdirs := $(patsubst %/,%,$(dir $(ONE_SHOT_MAKEFILE)))
+abs_cs_subdirs := $(filter /%,$(cs_subdirs))
+ifneq ($(abs_cs_subdirs),)
+# Convert absolute path to relative path, e.g. when using mm.
+abs_top_path := $(call get-top-dir,$(word 1,$(abs_cs_subdirs)))
+cs_subdirs := $(filter-out /%,$(cs_subdirs)) \
+ $(patsubst $(abs_top_path)/%,%,$(abs_cs_subdirs))
+
+abs_top_path :=
+abs_cs_subdirs :=
+endif
else
cs_subdirs := .
endif
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index 343345f..5d55534 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -83,7 +83,6 @@
LOCAL_ENABLE_APROF_JNI:=
LOCAL_COMPRESS_MODULE_SYMBOLS:=
LOCAL_STRIP_MODULE:=
-LOCAL_POST_PROCESS_COMMAND:=true
LOCAL_JNI_SHARED_LIBRARIES:=
LOCAL_JNI_SHARED_LIBRARIES_ABI:=
LOCAL_JAR_MANIFEST:=
diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk
index 00dc0e8..854037d 100644
--- a/core/combo/TARGET_linux-arm.mk
+++ b/core/combo/TARGET_linux-arm.mk
@@ -276,10 +276,10 @@
-Wl,--gc-sections \
-Wl,-z,nocopyreloc \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_DYNAMIC_O)) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
@@ -287,20 +287,20 @@
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
- $(TARGET_FDO_LIB) \
- $(TARGET_LIBGCC) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(PRIVATE_TARGET_FDO_LIB) \
+ $(PRIVATE_TARGET_LIBGCC) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
define transform-o-to-static-executable-inner
$(hide) $(PRIVATE_CXX) -nostdlib -Bstatic \
-Wl,--gc-sections \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_STATIC_O)) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
@@ -310,8 +310,8 @@
-Wl,--start-group \
$(call normalize-target-libraries,$(filter %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
$(call normalize-target-libraries,$(filter %libc_nomalloc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
- $(TARGET_FDO_LIB) \
- $(TARGET_LIBGCC) \
+ $(PRIVATE_TARGET_FDO_LIB) \
+ $(PRIVATE_TARGET_LIBGCC) \
-Wl,--end-group \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
diff --git a/core/combo/TARGET_linux-mips.mk b/core/combo/TARGET_linux-mips.mk
index 60d7e5b..7c7a9ef 100644
--- a/core/combo/TARGET_linux-mips.mk
+++ b/core/combo/TARGET_linux-mips.mk
@@ -248,36 +248,36 @@
-Wl,--gc-sections \
-Wl,-z,nocopyreloc \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_DYNAMIC_O)) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \
$(PRIVATE_ALL_OBJECTS) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
- $(TARGET_FDO_LIB) \
- $(TARGET_LIBGCC) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(PRIVATE_TARGET_FDO_LIB) \
+ $(PRIVATE_TARGET_LIBGCC) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
define transform-o-to-static-executable-inner
$(hide) $(PRIVATE_CXX) -nostdlib -Bstatic \
-Wl,--gc-sections \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_STATIC_O)) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
$(call normalize-target-libraries,$(filter-out %libc_nomalloc.a,$(filter-out %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES)))) \
-Wl,--start-group \
$(call normalize-target-libraries,$(filter %libc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
$(call normalize-target-libraries,$(filter %libc_nomalloc.a,$(PRIVATE_ALL_STATIC_LIBRARIES))) \
- $(TARGET_FDO_LIB) \
- $(TARGET_LIBGCC) \
+ $(PRIVATE_TARGET_FDO_LIB) \
+ $(PRIVATE_TARGET_LIBGCC) \
-Wl,--end-group \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
diff --git a/core/combo/TARGET_linux-x86.mk b/core/combo/TARGET_linux-x86.mk
index 96577f1..0e7c17d 100644
--- a/core/combo/TARGET_linux-x86.mk
+++ b/core/combo/TARGET_linux-x86.mk
@@ -191,16 +191,16 @@
define transform-o-to-executable-inner
$(hide) $(PRIVATE_CXX) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
-nostdlib -Bdynamic \
-Wl,-dynamic-linker,/system/bin/linker \
-Wl,-z,nocopyreloc \
-fPIE -pie \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
$(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_DYNAMIC_O)) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O)) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
@@ -209,17 +209,17 @@
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
$(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \
$(PRIVATE_LDFLAGS) \
- $(TARGET_LIBGCC) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(PRIVATE_TARGET_LIBGCC) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
define transform-o-to-static-executable-inner
$(hide) $(PRIVATE_CXX) \
- $(TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
-nostdlib -Bstatic \
-o $@ \
- $(TARGET_GLOBAL_LD_DIRS) \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTBEGIN_STATIC_O)) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTBEGIN_STATIC_O)) \
$(PRIVATE_LDFLAGS) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
@@ -227,9 +227,9 @@
-Wl,--no-whole-archive \
-Wl,--start-group \
$(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
- $(TARGET_LIBGCC) \
+ $(PRIVATE_TARGET_LIBGCC) \
-Wl,--end-group \
- $(if $(filter true,$(PRIVATE_NO_CRT)),,$(TARGET_CRTEND_O))
+ $(if $(filter true,$(PRIVATE_NO_CRT)),,$(PRIVATE_TARGET_CRTEND_O))
endef
# Special check for x86 NDK ABI compatibility.
diff --git a/core/definitions.mk b/core/definitions.mk
index 5600779..06db960 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -269,7 +269,7 @@
define all-renderscript-files-under
$(patsubst ./%,%, \
$(shell cd $(LOCAL_PATH) ; \
- find $(1) -name "*.rs" -and -not -name ".*") \
+ find $(1) \( -name "*.rs" -or -name "*.fs" \) -and -not -name ".*") \
)
endef
@@ -1259,13 +1259,11 @@
ifneq ($(TARGET_CUSTOM_LD_COMMAND),true)
define transform-o-to-executable-inner
$(hide) $(PRIVATE_CXX) \
- $(TARGET_GLOBAL_LDFLAGS) \
- -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
- $(TARGET_GLOBAL_LD_DIRS) \
+ $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \
+ $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \
-Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \
-Wl,-rpath,\$$ORIGIN/../lib \
$(PRIVATE_LDFLAGS) \
- $(TARGET_GLOBAL_LD_DIRS) \
$(PRIVATE_ALL_OBJECTS) \
-Wl,--whole-archive \
$(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
diff --git a/core/executable.mk b/core/executable.mk
index baebc3b..d6f383b 100644
--- a/core/executable.mk
+++ b/core/executable.mk
@@ -26,10 +26,38 @@
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)
+my_target_fdo_lib := $(TARGET_FDO_LIB)
+my_target_libgcc := $(TARGET_LIBGCC)
+my_target_crtbegin_dynamic_o := $(TARGET_CRTBEGIN_DYNAMIC_O)
+my_target_crtbegin_static_o := $(TARGET_CRTBEGIN_STATIC_O)
+my_target_crtend_o := $(TARGET_CRTEND_O)
+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.
+my_target_global_ld_dirs := \
+ $(addprefix -L, $(patsubst %/,%,$(dir $(my_ndk_stl_shared_lib_fullpath))) \
+ $(my_ndk_version_root)/usr/lib) \
+ $(my_target_global_ld_dirs)
+my_target_global_ldflags := $(my_ndk_stl_shared_lib) $(my_target_global_ldflags)
+my_target_crtbegin_dynamic_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_dynamic.o)
+my_target_crtbegin_static_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtbegin_static.o)
+my_target_crtend_o := $(wildcard $(my_ndk_version_root)/usr/lib/crtend_android.o)
+endif
+$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $(my_target_global_ld_dirs)
+$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
+$(linked_module): PRIVATE_TARGET_FDO_LIB := $(my_target_fdo_lib)
+$(linked_module): PRIVATE_TARGET_LIBGCC := $(my_target_libgcc)
+$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $(my_target_crtbegin_dynamic_o)
+$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $(my_target_crtbegin_static_o)
+$(linked_module): PRIVATE_TARGET_CRTEND_O := $(my_target_crtend_o)
+
ifeq ($(LOCAL_FORCE_STATIC_EXECUTABLE),true)
-$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $(TARGET_CRTEND_O)
+$(linked_module): $(my_target_crtbegin_static_o) $(all_objects) $(all_libraries) $(my_target_crtend_o)
$(transform-o-to-static-executable)
-else
-$(linked_module): $(TARGET_CRTBEGIN_DYNAMIC_O) $(all_objects) $(all_libraries) $(TARGET_CRTEND_O)
+else
+$(linked_module): $(my_target_crtbegin_dynamic_o) $(all_objects) $(all_libraries) $(my_target_crtend_o)
$(transform-o-to-executable)
endif
diff --git a/core/host_executable.mk b/core/host_executable.mk
index 4d90e6d..93d3f10 100644
--- a/core/host_executable.mk
+++ b/core/host_executable.mk
@@ -17,4 +17,3 @@
$(LOCAL_BUILT_MODULE): $(all_objects) $(all_libraries)
$(transform-host-o-to-executable)
- $(PRIVATE_POST_PROCESS_COMMAND)
diff --git a/core/java.mk b/core/java.mk
index 66f9a02..99e67f4 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -133,8 +133,9 @@
###############################################################
## .rs files: RenderScript sources to .java files and .bc files
+## .fs files: Filterscript sources to .java files and .bc files
###############################################################
-renderscript_sources := $(filter %.rs,$(LOCAL_SRC_FILES))
+renderscript_sources := $(filter %.rs %.fs,$(LOCAL_SRC_FILES))
# Because names of the java files from RenderScript are unknown until the
# .rs file(s) are compiled, we have to depend on a timestamp file.
RenderScript_file_stamp :=
@@ -196,7 +197,7 @@
# include the dependency files (.d) generated by llvm-rs-cc.
renderscript_generated_dep_files := $(addprefix $(renderscript_intermediate)/, \
- $(patsubst %.rs,%.d, $(notdir $(renderscript_sources))))
+ $(patsubst %.fs,%.d, $(patsubst %.rs,%.d, $(notdir $(renderscript_sources)))))
-include $(renderscript_generated_dep_files)
LOCAL_INTERMEDIATE_TARGETS += $(RenderScript_file_stamp)
diff --git a/envsetup.sh b/envsetup.sh
index 3694755..c758fcc 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -616,7 +616,7 @@
local HERE=$PWD
T=
while [ \( ! \( -f $TOPFILE \) \) -a \( $PWD != "/" \) ]; do
- T=$PWD
+ T=`PWD= /bin/pwd`
if [ -f "$T/Android.mk" ]; then
echo $T/Android.mk
cd $HERE > /dev/null
diff --git a/target/product/base.mk b/target/product/base.mk
index 8427448..9d8ef3f 100644
--- a/target/product/base.mk
+++ b/target/product/base.mk
@@ -138,6 +138,7 @@
service \
servicemanager \
services \
+ settings \
surfaceflinger \
svc \
system_server \
diff --git a/tools/droiddoc/templates-sdk/assets/css/default.css b/tools/droiddoc/templates-sdk/assets/css/default.css
index 09e6450..f3a014d 100644
--- a/tools/droiddoc/templates-sdk/assets/css/default.css
+++ b/tools/droiddoc/templates-sdk/assets/css/default.css
@@ -3369,7 +3369,7 @@
}
#header-wrap.quicknav {
- height:170px;
+ height:196px;
}
diff --git a/tools/droiddoc/templates-sdk/components/masthead.cs b/tools/droiddoc/templates-sdk/components/masthead.cs
index d98af85..025d076 100644
--- a/tools/droiddoc/templates-sdk/components/masthead.cs
+++ b/tools/droiddoc/templates-sdk/components/masthead.cs
@@ -119,10 +119,12 @@
<ul>
<li class="design">
<ul>
+ <li><a href="<?cs var:toroot ?>design/index.html">Get Started</a></li>
<li><a href="<?cs var:toroot ?>design/style/index.html">Style</a></li>
<li><a href="<?cs var:toroot ?>design/patterns/index.html">Patterns</a></li>
<li><a href="<?cs var:toroot ?>design/building-blocks/index.html">Building Blocks</a></li>
<li><a href="<?cs var:toroot ?>design/downloads/index.html">Downloads</a></li>
+ <li><a href="<?cs var:toroot ?>design/videos/index.html">Videos</a></li>
</ul>
</li>
<li class="develop">
@@ -169,9 +171,9 @@
<li><a href="<?cs var:toroot ?>distribute/index.html">Google Play</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/publish/index.html">Publishing</a></li>
<li><a href="<?cs var:toroot ?>distribute/googleplay/promote/index.html">Promoting</a></li>
- <!--<li><a href="<?cs var:toroot ?>distribute/googleplay/strategies/index.html">Strategies</a></li> -->
- <li><a href="<?cs var:toroot ?>distribute/open.html">Open
-Distribution</a></li>
+ <li><a href="<?cs var:toroot ?>distribute/googleplay/quality/index.html">App Quality</a></li>
+ <li><a href="<?cs var:toroot ?>distribute/googleplay/spotlight/index.html">Spotlight</a></li>
+ <li><a href="<?cs var:toroot ?>distribute/open.html">Open Distribution</a></li>
</ul>
</li>
</ul>