diff options
author | Daniel Stenberg <daniel@haxx.se> | 2008-02-17 23:12:54 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2008-02-17 23:12:54 +0000 |
commit | 4a06c87e7869bb2703c0b0181d3816ba73dff9ff (patch) | |
tree | 5d9c1ea2e534337d548ec97568a23615a56e9d1b | |
parent | 8c81e789cc7da214db5a5c1a3aa3698375a400e3 (diff) | |
download | rockbox-4a06c87e7869bb2703c0b0181d3816ba73dff9ff.tar.gz rockbox-4a06c87e7869bb2703c0b0181d3816ba73dff9ff.zip |
FS#8482:
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
-rw-r--r-- | apps/FILES | 1 | ||||
-rw-r--r-- | apps/lang/Makefile | 37 | ||||
-rw-r--r-- | apps/lang/SOURCES | 35 | ||||
-rw-r--r-- | apps/language.h | 11 | ||||
-rwxr-xr-x | tools/buildzip.pl | 35 | ||||
-rwxr-xr-x | tools/configure | 10 | ||||
-rw-r--r-- | tools/make.inc | 3 | ||||
-rw-r--r-- | tools/makesrc.inc | 4 |
8 files changed, 96 insertions, 40 deletions
diff --git a/apps/FILES b/apps/FILES index 36e3924158..956b12a04c 100644 --- a/apps/FILES +++ b/apps/FILES @@ -41,6 +41,7 @@ codecs/Tremor/* eqs/*.cfg gui/*.[ch] keymaps/*.[ch] +lang/SOURCES lang/*.lang menus/*.[ch] metadata/*.[ch] diff --git a/apps/lang/Makefile b/apps/lang/Makefile new file mode 100644 index 0000000000..31e839c1a1 --- /dev/null +++ b/apps/lang/Makefile @@ -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) diff --git a/apps/lang/SOURCES b/apps/lang/SOURCES new file mode 100644 index 0000000000..af546460a2 --- /dev/null +++ b/apps/lang/SOURCES @@ -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 */ diff --git a/apps/language.h b/apps/language.h index d8f899b573..6787dbb96d 100644 --- a/apps/language.h +++ b/apps/language.h @@ -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 diff --git a/tools/buildzip.pl b/tools/buildzip.pl index 4c21ae819f..4faa38ac54 100755 --- a/tools/buildzip.pl +++ b/tools/buildzip.pl @@ -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/` } diff --git a/tools/configure b/tools/configure index 49773e1a6f..b46f175f6a 100755 --- a/tools/configure +++ b/tools/configure @@ -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 diff --git a/tools/make.inc b/tools/make.inc index 8e125c834e..30d0779b2d 100644 --- a/tools/make.inc +++ b/tools/make.inc @@ -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: diff --git a/tools/makesrc.inc b/tools/makesrc.inc index 78d97f3283..846df8cb9e 100644 --- a/tools/makesrc.inc +++ b/tools/makesrc.inc @@ -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 "^\#") |