summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile33
1 files changed, 33 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index a7625ba0e..1d7973e96 100644
--- a/Makefile
+++ b/Makefile
@@ -239,6 +239,9 @@ TAR_OPTIONS=$(call qstrip,$(BR2_TAR_OPTIONS)) -xf
# packages compiled for the host go here
HOST_DIR:=$(call qstrip,$(BR2_HOST_DIR))
+# locales to generate
+GENERATE_LOCALE=$(call qstrip,$(BR2_GENERATE_LOCALE))
+
# stamp (dependency) files go here
STAMP_DIR:=$(BASE_DIR)/stamps
@@ -296,6 +299,12 @@ ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
TARGETS+=target-purgelocales
endif
+ifneq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_CTNG_eglibc)$(BR2_TOOLCHAIN_CTNG_glibc),)
+ifneq ($(GENERATE_LOCALE),)
+TARGETS+=target-generatelocales
+endif
+endif
+
include fs/common.mk
TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
@@ -446,6 +455,30 @@ target-purgelocales:
done
endif
+ifneq ($(GENERATE_LOCALE),)
+# Generate locale data. Basically, we call the localedef program
+# (built by the host-localedef package) for each locale. The input
+# data comes preferably from the toolchain, or if the toolchain does
+# not have them (Linaro toolchains), we use the ones available on the
+# host machine.
+target-generatelocales: host-localedef
+ $(Q)mkdir -p $(TARGET_DIR)/usr/lib/locale/
+ $(Q)for locale in $(GENERATE_LOCALE) ; do \
+ inputfile=`echo $${locale} | cut -f1 -d'.'` ; \
+ charmap=`echo $${locale} | cut -f2 -d'.'` ; \
+ if test -z "$${charmap}" ; then \
+ charmap="UTF-8" ; \
+ fi ; \
+ echo "Generating locale $${inputfile}.$${charmap}" ; \
+ I18NPATH=$(STAGING_DIR)/usr/share/i18n:/usr/share/i18n \
+ $(HOST_DIR)/usr/bin/localedef \
+ --prefix=$(TARGET_DIR) \
+ --`echo $(BR2_ENDIAN) | tr [A-Z] [a-z]`-endian \
+ -i $${inputfile} -f $${charmap} \
+ $${locale} ; \
+ done
+endif
+
source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
external-deps: