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/* | |||
41 | eqs/*.cfg | 41 | eqs/*.cfg |
42 | gui/*.[ch] | 42 | gui/*.[ch] |
43 | keymaps/*.[ch] | 43 | keymaps/*.[ch] |
44 | lang/SOURCES | ||
44 | lang/*.lang | 45 | lang/*.lang |
45 | menus/*.[ch] | 46 | menus/*.[ch] |
46 | metadata/*.[ch] | 47 | 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 @@ | |||
1 | # __________ __ ___. | ||
2 | # Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
3 | # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
4 | # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
5 | # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
6 | # \/ \/ \/ \/ \/ | ||
7 | # $Id: Makefile 15615 2007-11-14 10:31:57Z jethead71 $ | ||
8 | # | ||
9 | |||
10 | # the header we generate | ||
11 | HEADER = $(BUILDDIR)/max_language_size.h | ||
12 | |||
13 | # This sets up 'SRC' based on the files mentioned in SOURCES | ||
14 | include $(TOOLSDIR)/makesrc.inc | ||
15 | SOURCES=$(SRC) | ||
16 | |||
17 | # OUTP is the list of files to depend upon | ||
18 | OUTP = $(patsubst %.lang,$(OBJDIR)/%.lng, $(SOURCES)) | ||
19 | |||
20 | # the generated file with features specified genlang-style | ||
21 | FEATS=$(BUILDDIR)/apps/genlang-features | ||
22 | |||
23 | ifndef V | ||
24 | SILENT=@ | ||
25 | endif | ||
26 | PRINTS=$(SILENT)$(call info,$(1)) | ||
27 | |||
28 | all: $(HEADER) | ||
29 | |||
30 | # generic rule for creating .lng from .lang | ||
31 | $(OBJDIR)/%.lng : %.lang $(FEATS) | ||
32 | $(call PRINTS,GENLANG $<) | ||
33 | $(SILENT)$(TOOLSDIR)/genlang -e=$(APPSDIR)/lang/english.lang -t=$(ARCHOS)`cat $(FEATS)` -i=$(TARGET_ID) -b=$@ $< | ||
34 | |||
35 | $(HEADER): $(OUTP) | ||
36 | $(call PRINTS,Make $(HEADER)) | ||
37 | 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 @@ | |||
1 | #ifdef HAVE_LCD_BITMAP /* Not for the Player */ | ||
2 | *.lang | ||
3 | #else | ||
4 | afrikaans.lang | ||
5 | bulgarian.lang | ||
6 | catala.lang | ||
7 | czech.lang | ||
8 | dansk.lang | ||
9 | deutsch.lang | ||
10 | eesti.lang | ||
11 | english.lang | ||
12 | espanol.lang | ||
13 | esperanto.lang | ||
14 | finnish.lang | ||
15 | francais.lang | ||
16 | galego.lang | ||
17 | greek.lang | ||
18 | hebrew.lang | ||
19 | islenska.lang | ||
20 | italiano.lang | ||
21 | magyar.lang | ||
22 | nederlands.lang | ||
23 | norsk.lang | ||
24 | norsk-nynorsk.lang | ||
25 | polski.lang | ||
26 | portugues-brasileiro.lang | ||
27 | portugues.lang | ||
28 | romaneste.lang | ||
29 | russian.lang | ||
30 | slovenscina.lang | ||
31 | svenska.lang | ||
32 | tagalog.lang | ||
33 | turkce.lang | ||
34 | wallisertitsch.lang | ||
35 | #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 @@ | |||
1 | #ifndef __LANGUAGE_H | ||
2 | #define __LANGUAGE_H | ||
1 | /*************************************************************************** | 3 | /*************************************************************************** |
2 | * __________ __ ___. | 4 | * __________ __ ___. |
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | 5 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
@@ -7,7 +9,7 @@ | |||
7 | * \/ \/ \/ \/ \/ | 9 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | 10 | * $Id$ |
9 | * | 11 | * |
10 | * Copyright (C) 2002 Daniel Stenberg | 12 | * Copyright (C) 2002, 2008 Daniel Stenberg |
11 | * | 13 | * |
12 | * All files in this archive are subject to the GNU General Public License. | 14 | * All files in this archive are subject to the GNU General Public License. |
13 | * See the file COPYING in the source tree root for full license agreement. | 15 | * See the file COPYING in the source tree root for full license agreement. |
@@ -17,6 +19,11 @@ | |||
17 | * | 19 | * |
18 | ****************************************************************************/ | 20 | ****************************************************************************/ |
19 | 21 | ||
22 | /* The following header is generated by the build system and only defines | ||
23 | MAX_LANGUAGE_SIZE to be the size of the largest currently available | ||
24 | language! */ | ||
25 | //#include "max_language_size.h" | ||
26 | |||
20 | /* size of the buffer used for loadable, translated strings */ | 27 | /* size of the buffer used for loadable, translated strings */ |
21 | #define MAX_LANGUAGE_SIZE 23500 | 28 | #define MAX_LANGUAGE_SIZE 23500 |
22 | 29 | ||
@@ -29,3 +36,5 @@ void lang_init(void); | |||
29 | 36 | ||
30 | /* load a given language file */ | 37 | /* load a given language file */ |
31 | int lang_load(const char *filename); | 38 | int lang_load(const char *filename); |
39 | |||
40 | #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 { | |||
154 | return $size; | 154 | return $size; |
155 | } | 155 | } |
156 | 156 | ||
157 | sub buildlangs { | ||
158 | my ($outputlang)=@_; | ||
159 | my $dir = "$ROOT/apps/lang"; | ||
160 | opendir(DIR, $dir); | ||
161 | my @files = grep { /\.lang$/ } readdir(DIR); | ||
162 | closedir(DIR); | ||
163 | |||
164 | # Exclude some bad languages (uncomment and adjust in case of release | ||
165 | # and/or End Times) | ||
166 | # @files = grep(!/(afrikaans|hindi|slovenscina|turkce)\.lang/, @files); | ||
167 | |||
168 | # Exclude more languages on the player which won't work on charcell display | ||
169 | if ($archos =~ /^"?player:/ ) { | ||
170 | @files = grep(!/(chinese-simp|chinese-trad|hindi|japanese|korean|thai)\.lang/, @files); | ||
171 | } | ||
172 | |||
173 | for(@files) { | ||
174 | my $output = $_; | ||
175 | $output =~ s/(.*)\.lang/$1.lng/; | ||
176 | print "$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_\n" if($verbose); | ||
177 | system ("$ROOT/tools/genlang -e=$dir/english.lang -t=$archos -i=$target_id -b=$outputlang/$output $dir/$_ >/dev/null 2>&1"); | ||
178 | } | ||
179 | } | ||
180 | |||
181 | sub buildzip { | 157 | sub buildzip { |
182 | my ($zip, $image, $fonts)=@_; | 158 | my ($zip, $image, $fonts)=@_; |
183 | 159 | ||
@@ -413,15 +389,8 @@ STOP | |||
413 | # and the info file | 389 | # and the info file |
414 | system("cp rockbox-info.txt .rockbox/"); | 390 | system("cp rockbox-info.txt .rockbox/"); |
415 | 391 | ||
416 | # now copy the file made for reading on the unit: | 392 | # copy the already built lng files |
417 | #if($notplayer) { | 393 | `cp apps/lang/*lng .rockbox/langs/` |
418 | # `cp $webroot/docs/Help-JBR.txt .rockbox/docs/`; | ||
419 | #} | ||
420 | #else { | ||
421 | # `cp $webroot/docs/Help-Stu.txt .rockbox/docs/`; | ||
422 | #} | ||
423 | |||
424 | buildlangs(".rockbox/langs"); | ||
425 | 394 | ||
426 | } | 395 | } |
427 | 396 | ||
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@ | |||
1919 | # Do not print "Entering directory ..." | 1919 | # Do not print "Entering directory ..." |
1920 | MAKEFLAGS += --no-print-directory | 1920 | MAKEFLAGS += --no-print-directory |
1921 | 1921 | ||
1922 | .PHONY: all clean tags zip tools manual bin build info | 1922 | .PHONY: all clean tags zip tools manual bin build info langs |
1923 | 1923 | ||
1924 | all: info | 1924 | all: info |
1925 | 1925 | ||
1926 | info: build | 1926 | info: build |
1927 | \$(SILENT)\$(TOOLSDIR)/mkinfo.pl \$(BUILDDIR)/rockbox-info.txt | 1927 | \$(SILENT)\$(TOOLSDIR)/mkinfo.pl \$(BUILDDIR)/rockbox-info.txt |
1928 | 1928 | ||
1929 | build: tools | 1929 | build: tools langs |
1930 | @SIMUL1@ | 1930 | @SIMUL1@ |
1931 | @SIMUL2@ | 1931 | @SIMUL2@ |
1932 | \$(SILENT)\$(MAKE) -C \$(FIRMDIR) OBJDIR=\$(BUILDDIR)/firmware | 1932 | \$(SILENT)\$(MAKE) -C \$(FIRMDIR) OBJDIR=\$(BUILDDIR)/firmware |
@@ -1952,7 +1952,7 @@ clean: | |||
1952 | manual *.pdf *.a credits.raw @OUTPUT@ bitmaps pluginbitmaps \ | 1952 | manual *.pdf *.a credits.raw @OUTPUT@ bitmaps pluginbitmaps \ |
1953 | @ARCHOSROM@ @FLASHFILE@ UI256.bmp rockbox-full.zip \ | 1953 | @ARCHOSROM@ @FLASHFILE@ UI256.bmp rockbox-full.zip \ |
1954 | html txt rockbox-manual*.zip sysfont.h rockbox-info.txt \ | 1954 | html txt rockbox-manual*.zip sysfont.h rockbox-info.txt \ |
1955 | voicefontids *.wav *.mp3 *.voice | 1955 | voicefontids *.wav *.mp3 *.voice max_language_size.h |
1956 | 1956 | ||
1957 | tools: | 1957 | tools: |
1958 | \$(SILENT)\$(MAKE) -C \$(TOOLSDIR) CC=\$(HOSTCC) AR=\$(HOSTAR) @TOOLSET@ | 1958 | \$(SILENT)\$(MAKE) -C \$(TOOLSDIR) CC=\$(HOSTCC) AR=\$(HOSTAR) @TOOLSET@ |
@@ -1996,6 +1996,10 @@ bzip2: tar | |||
1996 | gzip: tar | 1996 | gzip: tar |
1997 | \$(SILENT)gzip -f9 rockbox.tar | 1997 | \$(SILENT)gzip -f9 rockbox.tar |
1998 | 1998 | ||
1999 | langs: features | ||
2000 | \$(SILENT)mkdir -p \$(BUILDDIR)/apps/lang | ||
2001 | \$(SILENT)\$(MAKE) -C \$(APPSDIR)/lang OBJDIR=\$(BUILDDIR)/apps/lang | ||
2002 | |||
1999 | manual: manual-pdf | 2003 | manual: manual-pdf |
2000 | manual-pdf: | 2004 | manual-pdf: |
2001 | \$(SILENT)\$(MAKE) -C \$(MANUALDIR) OBJDIR=\$(BUILDDIR)/manual manual-pdf | 2005 | \$(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) | |||
40 | rm $$del; \ | 40 | rm $$del; \ |
41 | del=""; \ | 41 | del=""; \ |
42 | fi \ | 42 | fi \ |
43 | done | sed -e "s:[^[:space:]]*lang.h:$(OBJDIR)/lang.o:" > $(DEPFILE); \ | 43 | done | sed -e "s:[^[:space:]]*lang.h:$(OBJDIR)/lang.o:" \ |
44 | -e "s:[^[:space:]]*sysfont.h:$(BUILDDIR)/sysfont.h:" > $(DEPFILE); \ | ||
44 | echo "oo" > /dev/null ) | 45 | echo "oo" > /dev/null ) |
45 | 46 | ||
46 | tags: | 47 | 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 @@ | |||
10 | # to make this do right when used on Mac OS X. | 10 | # to make this do right when used on Mac OS X. |
11 | 11 | ||
12 | SRC := $(shell cat SOURCES | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \ | 12 | SRC := $(shell cat SOURCES | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) \ |
13 | $(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -include "config.h" - | \ | 13 | $(TARGET) $(DEFINES) $(EXTRA_DEFINES) -E -P -include "config.h" - 2>/dev/null \ |
14 | grep -v "^\#") | 14 | | grep -v "^\#") |