Build system tweak that builds all languages first, to make the system able
to use a buffer size that fits the larger language only. Parts of this work
done by Jonas Haggqvist, but all the mistakes are my own!


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16337 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Daniel Stenberg 2008-02-17 23:12:54 +00:00
parent 8c81e789cc
commit 4a06c87e78
8 changed files with 96 additions and 40 deletions

View file

@ -41,6 +41,7 @@ codecs/Tremor/*
eqs/*.cfg
gui/*.[ch]
keymaps/*.[ch]
lang/SOURCES
lang/*.lang
menus/*.[ch]
metadata/*.[ch]

37
apps/lang/Makefile Normal file
View file

@ -0,0 +1,37 @@
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id: Makefile 15615 2007-11-14 10:31:57Z jethead71 $
#
# the header we generate
HEADER = $(BUILDDIR)/max_language_size.h
# This sets up 'SRC' based on the files mentioned in SOURCES
include $(TOOLSDIR)/makesrc.inc
SOURCES=$(SRC)
# OUTP is the list of files to depend upon
OUTP = $(patsubst %.lang,$(OBJDIR)/%.lng, $(SOURCES))
# the generated file with features specified genlang-style
FEATS=$(BUILDDIR)/apps/genlang-features
ifndef V
SILENT=@
endif
PRINTS=$(SILENT)$(call info,$(1))
all: $(HEADER)
# generic rule for creating .lng from .lang
$(OBJDIR)/%.lng : %.lang $(FEATS)
$(call PRINTS,GENLANG $<)
$(SILENT)$(TOOLSDIR)/genlang -e=$(APPSDIR)/lang/english.lang -t=$(ARCHOS)`cat $(FEATS)` -i=$(TARGET_ID) -b=$@ $<
$(HEADER): $(OUTP)
$(call PRINTS,Make $(HEADER))
echo "#define MAX_LANGUAGE_SIZE `du -b $(OBJDIR)/* |sort -n |tail -n 1 |cut -f 1`" > $(HEADER)

35
apps/lang/SOURCES Normal file
View file

@ -0,0 +1,35 @@
#ifdef HAVE_LCD_BITMAP /* Not for the Player */
*.lang
#else
afrikaans.lang
bulgarian.lang
catala.lang
czech.lang
dansk.lang
deutsch.lang
eesti.lang
english.lang
espanol.lang
esperanto.lang
finnish.lang
francais.lang
galego.lang
greek.lang
hebrew.lang
islenska.lang
italiano.lang
magyar.lang
nederlands.lang
norsk.lang
norsk-nynorsk.lang
polski.lang
portugues-brasileiro.lang
portugues.lang
romaneste.lang
russian.lang
slovenscina.lang
svenska.lang
tagalog.lang
turkce.lang
wallisertitsch.lang
#endif /* HAVE_LCD_BITMAP */

View file

@ -1,3 +1,5 @@
#ifndef __LANGUAGE_H
#define __LANGUAGE_H
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
@ -7,7 +9,7 @@
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 Daniel Stenberg
* Copyright (C) 2002, 2008 Daniel Stenberg
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
@ -17,6 +19,11 @@
*
****************************************************************************/
/* The following header is generated by the build system and only defines
MAX_LANGUAGE_SIZE to be the size of the largest currently available
language! */
//#include "max_language_size.h"
/* size of the buffer used for loadable, translated strings */
#define MAX_LANGUAGE_SIZE 23500
@ -29,3 +36,5 @@ void lang_init(void);
/* load a given language file */
int lang_load(const char *filename);
#endif

View file

@ -154,30 +154,6 @@ sub filesize {
return $size;
}
sub buildlangs {
my ($outputlang)=@_;
my $dir = "$ROOT/apps/lang";
opendir(DIR, $dir);
my @files = grep { /\.lang$/ } readdir(DIR);
closedir(DIR);
# Exclude some bad languages (uncomment and adjust in case of release
# and/or End Times)
# @files = grep(!/(afrikaans|hindi|slovenscina|turkce)\.lang/, @files);
# Exclude more languages on the player which won't work on charcell display
if ($archos =~ /^"?player:/ ) {
@files = grep(!/(chinese-simp|chinese-trad|hindi|japanese|korean|thai)\.lang/, @files);
}
for(@files) {
my $output = $_;
$output =~ s/(.*)\.lang/$1.lng/;
print "$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_\n" if($verbose);
system ("$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_ >/dev/null 2>&1");
}
}
sub buildzip {
my ($zip, $image, $fonts)=@_;
@ -413,15 +389,8 @@ STOP
# and the info file
system("cp rockbox-info.txt .rockbox/");
# now copy the file made for reading on the unit:
#if($notplayer) {
# `cp $webroot/docs/Help-JBR.txt .rockbox/docs/`;
#}
#else {
# `cp $webroot/docs/Help-Stu.txt .rockbox/docs/`;
#}
buildlangs(".rockbox/langs");
# copy the already built lng files
`cp apps/lang/*lng .rockbox/langs/`
}

10
tools/configure vendored
View file

@ -1919,14 +1919,14 @@ export ENCODER=@ENCODER@
# Do not print "Entering directory ..."
MAKEFLAGS += --no-print-directory
.PHONY: all clean tags zip tools manual bin build info
.PHONY: all clean tags zip tools manual bin build info langs
all: info
info: build
\$(SILENT)\$(TOOLSDIR)/mkinfo.pl \$(BUILDDIR)/rockbox-info.txt
build: tools
build: tools langs
@SIMUL1@
@SIMUL2@
\$(SILENT)\$(MAKE) -C \$(FIRMDIR) OBJDIR=\$(BUILDDIR)/firmware
@ -1952,7 +1952,7 @@ clean:
manual *.pdf *.a credits.raw @OUTPUT@ bitmaps pluginbitmaps \
@ARCHOSROM@ @FLASHFILE@ UI256.bmp rockbox-full.zip \
html txt rockbox-manual*.zip sysfont.h rockbox-info.txt \
voicefontids *.wav *.mp3 *.voice
voicefontids *.wav *.mp3 *.voice max_language_size.h
tools:
\$(SILENT)\$(MAKE) -C \$(TOOLSDIR) CC=\$(HOSTCC) AR=\$(HOSTAR) @TOOLSET@
@ -1996,6 +1996,10 @@ bzip2: tar
gzip: tar
\$(SILENT)gzip -f9 rockbox.tar
langs: features
\$(SILENT)mkdir -p \$(BUILDDIR)/apps/lang
\$(SILENT)\$(MAKE) -C \$(APPSDIR)/lang OBJDIR=\$(BUILDDIR)/apps/lang
manual: manual-pdf
manual-pdf:
\$(SILENT)\$(MAKE) -C \$(MANUALDIR) OBJDIR=\$(BUILDDIR)/manual manual-pdf

View file

@ -40,7 +40,8 @@ $(DEPFILE): $(SOURCES)
rm $$del; \
del=""; \
fi \
done | sed -e "s:[^[:space:]]*lang.h:$(OBJDIR)/lang.o:" > $(DEPFILE); \
done | sed -e "s:[^[:space:]]*lang.h:$(OBJDIR)/lang.o:" \
-e "s:[^[:space:]]*sysfont.h:$(BUILDDIR)/sysfont.h:" > $(DEPFILE); \
echo "oo" > /dev/null )
tags:

View file

@ -10,5 +10,5 @@
# to make this do right when used on Mac OS X.
SRC := $(shell cat SOURCES | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \
$(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -include "config.h" - | \
grep -v "^\#")
$(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -include "config.h" - 2>/dev/null \
| grep -v "^\#")