<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rockbox/apps/lang/lang.make, branch quake5</title>
<subtitle>My Rockbox tree</subtitle>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/'/>
<entry>
<title>FS#7704 - Talk support for plugins</title>
<updated>2019-07-20T06:48:35+00:00</updated>
<author>
<name>Solomon Peachy</name>
<email>pizza@shaftnet.org</email>
</author>
<published>2019-02-04T01:12:50+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=55eb1c54ebe33faa8b1eb8c527d5644961ca78dc'/>
<id>55eb1c54ebe33faa8b1eb8c527d5644961ca78dc</id>
<content type='text'>
Original patch by Mario Lang
Heavily updated by Igor Poretsky
Further updated by myself

  This patch breaks binary API compatibility by placing the new
  functions where they make the most logical sense. IMO this is
  the better approach to take given the scope of the changes needed
  for talk support.

  Since binary API is changing, the patch also moves some other
  functions around to more logical locations.

  As well as voice support in plugins, this patch voice-enables several
  simple plugins.  There will be follow-up patches for many plugins that
  build on this one.

Change-Id: I18070c06e77e8a3c016c2eb6b6c5dbe6633b9b54
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Original patch by Mario Lang
Heavily updated by Igor Poretsky
Further updated by myself

  This patch breaks binary API compatibility by placing the new
  functions where they make the most logical sense. IMO this is
  the better approach to take given the scope of the changes needed
  for talk support.

  Since binary API is changing, the patch also moves some other
  functions around to more logical locations.

  As well as voice support in plugins, this patch voice-enables several
  simple plugins.  There will be follow-up patches for many plugins that
  build on this one.

Change-Id: I18070c06e77e8a3c016c2eb6b6c5dbe6633b9b54
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix make race conditions reharding lang.h</title>
<updated>2017-09-24T21:32:47+00:00</updated>
<author>
<name>Amaury Pouly</name>
<email>amaury.pouly@gmail.com</email>
</author>
<published>2017-09-24T21:25:08+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=13364c552548ca15c34f781613762e88f6f2e327'/>
<id>13364c552548ca15c34f781613762e88f6f2e327</id>
<content type='text'>
The bug is due to a stupid make misfeature. The article [1] contains much more
information but in a nutshell, the following code:

a b: c
	bla

is equivalent to:

a: c
	bla
b: c
	bla

This is bad because in parallel runs (make -j typically), "bla" can be run
TWICE and even worse, twice in PARALLEL. Obviously the result will be
completely unexpected. This is a real bummer because on the other hand,
the following code:

%.c %.h: %:in
	bla

actually expresses the fact that bla produces two files. For some reasons,
pattern rules work differently from implicit rules.

This commit attempts to fix the problem with lang.h by rewriting (simplified):

lang.c lang.h: lang.in
	genlang

as

lang.h: lang.in
	genlang
lang.c: lang.h

This works (it correctly expresses the dependency chain and ensures genlang runs
once) but as one drawback: if one manually removes lang.c, then genlang will not
re-run since the second rule does nothing. This is minor drawback since no one
ever removes lang.c manually and "clean" removes lang.h which triggers a rebuild.

[1]: https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html

Change-Id: Ic0bf7c7c203dc599b00fde457946d2316c70474e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The bug is due to a stupid make misfeature. The article [1] contains much more
information but in a nutshell, the following code:

a b: c
	bla

is equivalent to:

a: c
	bla
b: c
	bla

This is bad because in parallel runs (make -j typically), "bla" can be run
TWICE and even worse, twice in PARALLEL. Obviously the result will be
completely unexpected. This is a real bummer because on the other hand,
the following code:

%.c %.h: %:in
	bla

actually expresses the fact that bla produces two files. For some reasons,
pattern rules work differently from implicit rules.

This commit attempts to fix the problem with lang.h by rewriting (simplified):

lang.c lang.h: lang.in
	genlang

as

lang.h: lang.in
	genlang
lang.c: lang.h

This works (it correctly expresses the dependency chain and ensures genlang runs
once) but as one drawback: if one manually removes lang.c, then genlang will not
re-run since the second rule does nothing. This is minor drawback since no one
ever removes lang.c manually and "clean" removes lang.h which triggers a rebuild.

[1]: https://www.gnu.org/software/automake/manual/html_node/Multiple-Outputs.html

Change-Id: Ic0bf7c7c203dc599b00fde457946d2316c70474e
</pre>
</div>
</content>
</entry>
<entry>
<title>Print "GEN lang.h" when generated language header.</title>
<updated>2017-09-22T19:06:30+00:00</updated>
<author>
<name>Amaury Pouly</name>
<email>amaury.pouly@gmail.com</email>
</author>
<published>2017-09-22T19:06:30+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=acc3ef3b6f62510c45ecc55352673ef0aaa2fe11'/>
<id>acc3ef3b6f62510c45ecc55352673ef0aaa2fe11</id>
<content type='text'>
Hopefully this will help narrow down the problem with LANG_* error message,
I have the feeling that lang.h is not generated in time but it's very hard to
reproduce.

Change-Id: I02b6c98ed9c7e7168fad10dcf1142e307fbc6093
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Hopefully this will help narrow down the problem with LANG_* error message,
I have the feeling that lang.h is not generated in time but it's very hard to
reproduce.

Change-Id: I02b6c98ed9c7e7168fad10dcf1142e307fbc6093
</pre>
</div>
</content>
</entry>
<entry>
<title>Attempt to fix dependencies for lang.h, lang_core.c and lang_core.o</title>
<updated>2016-08-21T15:00:25+00:00</updated>
<author>
<name>Frank Gevaerts</name>
<email>frank@gevaerts.be</email>
</author>
<published>2016-08-20T14:25:11+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=45c6785e22f589b6bbc930b20859dc7df102d705'/>
<id>45c6785e22f589b6bbc930b20859dc7df102d705</id>
<content type='text'>
This hopefully fixes occasional build failures

Change-Id: Iff79d2066d6421cca78cc3ecb6cb8db57351ab1f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This hopefully fixes occasional build failures

Change-Id: Iff79d2066d6421cca78cc3ecb6cb8db57351ab1f
</pre>
</div>
</content>
</entry>
<entry>
<title>Only check lng files for MAX_LANGUAGE_SIZE.</title>
<updated>2012-06-09T21:04:42+00:00</updated>
<author>
<name>Dominik Riebeling</name>
<email>Dominik.Riebeling@gmail.com</email>
</author>
<published>2012-06-09T21:04:42+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=4e41c6d9babc293a7b639c53f0687b650999cb60'/>
<id>4e41c6d9babc293a7b639c53f0687b650999cb60</id>
<content type='text'>
Since the build system now creates files holding the voice strings and an
archive holding those creating MAX_LANGUAGE_SIZE needs to be created using a
more specific wildcard.

Change-Id: Ia424533a8053e4817f23b8dd99f6ab3c324d584d
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since the build system now creates files holding the voice strings and an
archive holding those creating MAX_LANGUAGE_SIZE needs to be created using a
more specific wildcard.

Change-Id: Ia424533a8053e4817f23b8dd99f6ab3c324d584d
</pre>
</div>
</content>
</entry>
<entry>
<title>Create binary voice string archive on target.</title>
<updated>2012-06-09T20:44:56+00:00</updated>
<author>
<name>Dominik Riebeling</name>
<email>Dominik.Riebeling@gmail.com</email>
</author>
<published>2012-05-19T15:14:35+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=d6ef5a0d8057bd6a0f9925d1002cc1a3207ff3b7'/>
<id>d6ef5a0d8057bd6a0f9925d1002cc1a3207ff3b7</id>
<content type='text'>
Extend genlang to create files holding the voice strings in a binary format
similar to lng. Create such files for all languages during a normal build, put
them in a zip file and add them to rockbox.zip so they are installed with a
main build.

Creating a voice file requires access to the voice strings, which are currently
not distributed with Rockbox. Therefore it is necessary to either have access
to the source code of the installed build or to use a build the genlang service
on rockbox.org can retrieve the strings for, making it impossible for normal
users to generate a voice file for custom builds, test builds and older builds
that aren't supported by the rockbox.org script. It also requires a network
connection when creating voice files with Rockbox Utility even if creating a
voice file by itself isn't network related.

Furthermore, putting the voice strings on the target is also a prerequisite for
eventually supporting a TTS on the player.

Strip voice strings path.

Change-Id: Ic2f86130909b3b257986a348e5cfcf618c4500c3
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Extend genlang to create files holding the voice strings in a binary format
similar to lng. Create such files for all languages during a normal build, put
them in a zip file and add them to rockbox.zip so they are installed with a
main build.

Creating a voice file requires access to the voice strings, which are currently
not distributed with Rockbox. Therefore it is necessary to either have access
to the source code of the installed build or to use a build the genlang service
on rockbox.org can retrieve the strings for, making it impossible for normal
users to generate a voice file for custom builds, test builds and older builds
that aren't supported by the rockbox.org script. It also requires a network
connection when creating voice files with Rockbox Utility even if creating a
voice file by itself isn't network related.

Furthermore, putting the voice strings on the target is also a prerequisite for
eventually supporting a TTS on the player.

Strip voice strings path.

Change-Id: Ic2f86130909b3b257986a348e5cfcf618c4500c3
</pre>
</div>
</content>
</entry>
<entry>
<title>Prettier genlang-features output. Use the same style for max_language_size.h.</title>
<updated>2010-07-17T15:33:35+00:00</updated>
<author>
<name>Thomas Martitz</name>
<email>kugel@rockbox.org</email>
</author>
<published>2010-07-17T15:33:35+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=3b84012d637d3f1caad3f2cf7ed6b5d3e16ef54f'/>
<id>3b84012d637d3f1caad3f2cf7ed6b5d3e16ef54f</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27469 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27469 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Oops, one explicit colon is enough (though an extra one doesn't hurt).</title>
<updated>2010-07-13T18:19:33+00:00</updated>
<author>
<name>Jens Arnold</name>
<email>amiconn@rockbox.org</email>
</author>
<published>2010-07-13T18:19:33+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=78fc9844a9ec83b5e3dbb9289ccf8ff2b64b2d56'/>
<id>78fc9844a9ec83b5e3dbb9289ccf8ff2b64b2d56</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27411 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27411 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>The simplification from r27406 changed the format of 'genlang-features': it used to have a leading colon. Fix missing target and feature specific strings resulting from that (mashed target name and first feature) by inserting a colon into the command line explicitly.</title>
<updated>2010-07-13T18:16:17+00:00</updated>
<author>
<name>Jens Arnold</name>
<email>amiconn@rockbox.org</email>
</author>
<published>2010-07-13T18:16:17+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=9c4ba5e44d91325731b2ac3c83e139b5f7990449'/>
<id>9c4ba5e44d91325731b2ac3c83e139b5f7990449</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27410 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27410 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>change dependencies in make files:</title>
<updated>2010-01-17T13:03:10+00:00</updated>
<author>
<name>Teruaki Kawashima</name>
<email>teru@rockbox.org</email>
</author>
<published>2010-01-17T13:03:10+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=e3fc65cfff31bf71dc648280ad714d214b9666a1'/>
<id>e3fc65cfff31bf71dc648280ad714d214b9666a1</id>
<content type='text'>
* apps.make: depends on ctype.o instead of errno.o to depend on config-*.h so that it works for simulator.
* lang.make: add dependency of lang.h to make it sure that the file is updated properly when needed.
* plugins.make: object files don't depend on libpluginbitmaps.a.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24256 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* apps.make: depends on ctype.o instead of errno.o to depend on config-*.h so that it works for simulator.
* lang.make: add dependency of lang.h to make it sure that the file is updated properly when needed.
* plugins.make: object files don't depend on libpluginbitmaps.a.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24256 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
</feed>
