Bug 1439742 - Pre: Lift AB_rCD to ambient Make environment. r=ted.mielczarek
I wanted to lift this next to the definition of AB_CD, but that
doesn't allow to use it in a backend.mk file, due to the order in
which Makefile, config.mk, rules.mk, and backend.mk are processed.
Therefore, I've put it in a tiny include file, so that it can be used
by a Makefile and a backend.mk file.
This allows the `RecursiveMake` backend to owning defining AB_rCD in
backend.mk files, while not requiring consumers to arrange for AB_rCD
in a sibling Makefile.in file.
Other build backends will need to arrange for AB_rCD themselves: see
following commits.
MozReview-Commit-ID: I7GIzRbCCtf
new file mode 100644
--- /dev/null
+++ b/config/AB_rCD.mk
@@ -0,0 +1,20 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Turn 'en-US' into '' and general 'ab-CD' into '-ab-rCD' -- note
+# leading hyphen.
+#
+# For example, 'res{AB_rCD}' is 'res' for 'en-US' and 'res-en-rGB' for
+# 'en-GB'.
+#
+# Some locale codes are special, namely 'he' and 'id'. See
+# http://code.google.com/p/android/issues/detail?id=3639.
+#
+# This is for use in Android resource directories, which uses a
+# somewhat non-standard resource naming scheme for localized
+# resources: see
+# https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources.
+# Android 24+ uses the standard BCP-47 naming scheme, and Bug 1441305
+# tracks migrating to that naming scheme.
+AB_rCD = $(if $(filter en-US,$(AB_CD)),,-$(if $(filter he, $(AB_CD)),iw,$(if $(filter id, $(AB_CD)),in,$(subst -,-r,$(AB_CD)))))
--- a/config/config.mk
+++ b/config/config.mk
@@ -333,16 +333,19 @@ sysinstall_cmd = install_cmd
#
# Localization build automation
#
# Because you might wish to "make locales AB_CD=ab-CD", we don't hardcode
# MOZ_UI_LOCALE directly, but use an intermediate variable that can be
# overridden by the command line. (Besides, AB_CD is prettier).
AB_CD = $(MOZ_UI_LOCALE)
+
+include $(topsrcdir)/config/AB_rCD.mk
+
# Many locales directories want this definition.
ACDEFINES += -DAB_CD=$(AB_CD)
ifndef L10NBASEDIR
L10NBASEDIR = $(error L10NBASEDIR not defined by configure)
endif
EXPAND_LOCALE_SRCDIR = $(if $(filter en-US,$(AB_CD)),$(LOCALE_TOPDIR)/$(1)/en-US,$(or $(realpath $(L10NBASEDIR)),$(abspath $(L10NBASEDIR)))/$(AB_CD)/$(subst /locales,,$(1)))
--- a/mobile/android/base/locales/Makefile.in
+++ b/mobile/android/base/locales/Makefile.in
@@ -1,17 +1,13 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-include $(topsrcdir)/config/config.mk
-
-# special case some locale codes, he and id
-# http://code.google.com/p/android/issues/detail?id=3639
-AB_rCD = $(if $(filter he, $(AB_CD)),iw,$(if $(filter id, $(AB_CD)),in,$(subst -,-r,$(AB_CD))))
+include $(topsrcdir)/config/AB_rCD.mk
SYNCSTRINGSPATH = $(abspath $(call MERGE_FILE,sync_strings.dtd))
STRINGSPATH = $(abspath $(call MERGE_FILE,android_strings.dtd))
# Fennec branding is en-US only: see $(MOZ_BRANDING_DIRECTORY)/locales/jar.mn.
BRANDPATH := $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/locales/en-US/brand.dtd
$(warnIfEmpty,AB_CD) # todo: $(errorIfEmpty )
dir-res-values := ../res/values
@@ -26,19 +22,19 @@ browsersearch := $(dir-res-raw)/browsers
libs realchrome:: \
$(strings-xml) \
$(NULL)
chrome-%:: AB_CD=$*
chrome-%::
@$(MAKE) \
- $(dir-res-values)-$(AB_rCD)/strings.xml \
- $(dir-res-raw)-$(AB_rCD)/suggestedsites.json \
- $(dir-res-raw)-$(AB_rCD)/browsersearch.json \
+ ../res/values$(AB_rCD)/strings.xml \
+ ../res/raw$(AB_rCD)/suggestedsites.json \
+ ../res/raw$(AB_rCD)/browsersearch.json \
AB_CD=$*
# Determine the ../res/values[-*]/ path
strings-xml-bypath = $(filter %/strings.xml,$(MAKECMDGOALS))
ifeq (,$(strip $(strings-xml-bypath)))
strings-xml-bypath = $(strings-xml)
endif
dir-strings-xml = $(patsubst %/,%,$(dir $(strings-xml-bypath)))