Index: tools/configure =================================================================== --- tools/configure (revision 16339) +++ tools/configure (working copy) @@ -1919,14 +1919,14 @@ # 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 @@ 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 @@ 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 Index: tools/make.inc =================================================================== --- tools/make.inc (revision 16339) +++ tools/make.inc (working copy) @@ -24,6 +24,11 @@ # play nicely into this as it then adds a dependency to the lang.h file # without the proper path. # +# The trailing sed hack for a range of files is present because how gcc works +# for generating dependencies when the include file doesn't exist. Then it +# makes the dependency without any path, and that breaks how things work for +# us. We thus add the correct path for a few generated files! +# $(DEPFILE): $(SOURCES) $(SILENT)mkdir -p $(dir $(DEPFILE)) $(SILENT)rm -f $(DEPFILE) @@ -40,7 +45,10 @@ 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:" \ + -e "s:[^[:space:]]*max_language_size.h:$(BUILDDIR)/max_language_size.h:" \ + > $(DEPFILE); \ echo "oo" > /dev/null ) tags: Index: tools/buildzip.pl =================================================================== --- tools/buildzip.pl (revision 16339) +++ tools/buildzip.pl (working copy) @@ -154,30 +154,6 @@ 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,16 +389,9 @@ # 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/`; - #} + # copy the already built lng files + `cp apps/lang/*lng .rockbox/langs/` - buildlangs(".rockbox/langs"); - } my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = Index: tools/makesrc.inc =================================================================== --- tools/makesrc.inc (revision 16339) +++ tools/makesrc.inc (working copy) @@ -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 "^\#") Index: apps/language.h =================================================================== --- apps/language.h (revision 16339) +++ apps/language.h (working copy) @@ -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,8 +19,10 @@ * ****************************************************************************/ -/* size of the buffer used for loadable, translated strings */ -#define MAX_LANGUAGE_SIZE 23500 +/* 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" /* both these must match the two initial bytes in the binary lang file */ #define LANGUAGE_COOKIE 0x1a @@ -29,3 +33,5 @@ /* load a given language file */ int lang_load(const char *filename); + +#endif Index: apps/lang/Makefile =================================================================== --- apps/lang/Makefile (revision 16339) +++ apps/lang/Makefile (working copy) @@ -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) Index: apps/lang/SOURCES =================================================================== --- apps/lang/SOURCES (revision 16339) +++ apps/lang/SOURCES (working copy) @@ -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 */ Index: apps/FILES =================================================================== --- apps/FILES (revision 16339) +++ apps/FILES (working copy) @@ -41,6 +41,7 @@ eqs/*.cfg gui/*.[ch] keymaps/*.[ch] +lang/SOURCES lang/*.lang menus/*.[ch] metadata/*.[ch]