summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build-info.pl23
-rw-r--r--tools/builds.pm119
-rwxr-xr-xtools/buildzip.pl1
-rwxr-xr-xtools/configure35
-rwxr-xr-xtools/genlang54
-rwxr-xr-xtools/hibyos_nativepatcher/hibyos_nativepatcher.sh117
-rwxr-xr-xtools/hibyos_nativepatcher/patch_manifest.pl27
-rwxr-xr-xtools/release/manuals.pl2
-rwxr-xr-xtools/rockboxdev.sh8
-rwxr-xr-xtools/updatelang17
-rwxr-xr-xtools/voice.pl40
11 files changed, 343 insertions, 100 deletions
diff --git a/tools/build-info.pl b/tools/build-info.pl
index e4222643a1..fb89a80441 100755
--- a/tools/build-info.pl
+++ b/tools/build-info.pl
@@ -23,16 +23,29 @@ foreach my $b (&stablebuilds) {
23 my $ver; 23 my $ver;
24 if(exists($builds{$b}{release})) { 24 if(exists($builds{$b}{release})) {
25 $ver = $builds{$b}{release}; 25 $ver = $builds{$b}{release};
26 } 26 } else {
27 else {
28 $ver = $publicrelease; 27 $ver = $publicrelease;
29 } 28 }
30# print "$b=$ver,$baseurl/release/$ver/rockbox-$b-$ver.zip\n"; 29 if ($ver <= $publicrelease) {
31 print "$b=$ver\n"; 30 print "$b=$ver\n";
31 }
32} 32}
33 33
34print "[status]\n"; 34print "[status]\n";
35 35
36foreach my $b (&allbuilds) { 36foreach my $b (&allbuilds) {
37 print "$b=$builds{$b}{status}\n"; 37 my $ver;
38 my $status = $builds{$b}{status};
39
40 if(exists($builds{$b}{release})) {
41 $ver = $builds{$b}{release};
42 } else {
43 $ver = $publicrelease;
44 }
45 if ($ver > $publicrelease) {
46 $status=2;
47 }
48 print "$b=$status\n";
38} 49}
50
51print "\n";
diff --git a/tools/builds.pm b/tools/builds.pm
index 75d34dc079..8efd22bbdf 100644
--- a/tools/builds.pm
+++ b/tools/builds.pm
@@ -16,7 +16,7 @@ $releasenotes="/wiki/ReleaseNotes315";
16# icon => 'modelname3', # optional (uses modelname3's icon) 16# icon => 'modelname3', # optional (uses modelname3's icon)
17# voice => 'modelname4' # optional (uses modelname4's voice) 17# voice => 'modelname4' # optional (uses modelname4's voice)
18# release => '3.14', # optional (final release version, if different from above) 18# release => '3.14', # optional (final release version, if different from above)
19# manualok => 1, # optional (builds manual even if target is not stable) 19# manualok => 1, # optional (defaults 1 for status 3 and 0 for rest)
20# } 20# }
21 21
22%builds = ( 22%builds = (
@@ -71,10 +71,12 @@ $releasenotes="/wiki/ReleaseNotes315";
71 }, 71 },
72 'gogearhdd1630' => { 72 'gogearhdd1630' => {
73 name => 'Philips GoGear HDD1630', 73 name => 'Philips GoGear HDD1630',
74 manualok => 0,
74 status => 3, 75 status => 3,
75 }, 76 },
76 'gogearhdd6330' => { 77 'gogearhdd6330' => {
77 name => 'Philips GoGear HDD6330', 78 name => 'Philips GoGear HDD6330',
79 manualok => 0,
78 status => 3, 80 status => 3,
79 }, 81 },
80 'gogearsa9200' => { 82 'gogearsa9200' => {
@@ -369,6 +371,7 @@ $releasenotes="/wiki/ReleaseNotes315";
369 'creativezenxfi3' => { 371 'creativezenxfi3' => {
370 name => 'Creative Zen X-Fi3', 372 name => 'Creative Zen X-Fi3',
371 status => 3, 373 status => 3,
374 manualok => 0,
372 }, 375 },
373 'sonynwze350' => { 376 'sonynwze350' => {
374 name => 'Sony NWZ-E350', 377 name => 'Sony NWZ-E350',
@@ -378,10 +381,12 @@ $releasenotes="/wiki/ReleaseNotes315";
378 'sonynwze360' => { 381 'sonynwze360' => {
379 name => 'Sony NWZ-E360', 382 name => 'Sony NWZ-E360',
380 status => 3, 383 status => 3,
384 manualok => 0,
381 }, 385 },
382 'sonynwze370' => { 386 'sonynwze370' => {
383 name => 'Sony NWZ-E370/E380', 387 name => 'Sony NWZ-E370/E380',
384 status => 3, 388 status => 3,
389 manualok => 0,
385 }, 390 },
386 'sonynwze450' => { 391 'sonynwze450' => {
387 name => 'Sony NWZ-E450', 392 name => 'Sony NWZ-E450',
@@ -424,11 +429,13 @@ $releasenotes="/wiki/ReleaseNotes315";
424 }, 429 },
425 'creativezenxfi' => { 430 'creativezenxfi' => {
426 name => 'Creative Zen X-Fi', 431 name => 'Creative Zen X-Fi',
427 status => 3 432 status => 3,
433 manualok => 0,
428 }, 434 },
429 'creativezenxfistyle' => { 435 'creativezenxfistyle' => {
430 name => 'Creative Zen X-Fi Style', 436 name => 'Creative Zen X-Fi Style',
431 status => 3 437 status => 3,
438 manualok => 0,
432 }, 439 },
433 'creativezen' => { 440 'creativezen' => {
434 name => 'Creative Zen', 441 name => 'Creative Zen',
@@ -436,24 +443,30 @@ $releasenotes="/wiki/ReleaseNotes315";
436 }, 443 },
437 'creativezenmozaic' => { 444 'creativezenmozaic' => {
438 name => 'Creative Zen Mozaic', 445 name => 'Creative Zen Mozaic',
439 status => 3 446 status => 3,
447 manualok => 0,
440 }, 448 },
441 'agptekrocker' => { 449 'agptekrocker' => {
442 name => 'Agptek Rocker', 450 name => 'Agptek Rocker',
443 status => 2, 451 status => 3,
444 manualok => 1, # Remove once status moves to 3 452 release => '4.0', # Remove once 4.0 lands
445 }, 453 },
446 'xduoox3' => { 454 'xduoox3' => {
447 name => 'xDuoo X3', 455 name => 'xDuoo X3',
448 status => 3, 456 status => 3,
457 release => '4.0', # Remove once 4.0 lands
449 }, 458 },
450 'xduoox3ii' => { 459 'xduoox3ii' => {
451 name => 'xDuoo X3ii', 460 name => 'xDuoo X3ii',
452 status => 2, 461 manualok => 0, # Remove when manual is written
462 status => 3,
463 release => '4.0', # Remove once 4.0 lands
453 }, 464 },
454 'xduoox20' => { 465 'xduoox20' => {
455 name => 'xDuoo X20', 466 name => 'xDuoo X20',
456 status => 2, 467 manualok => 0, # Remove when manual is written
468 status => 3,
469 release => '4.0', # Remove once 4.0 lands
457 }, 470 },
458 'fiiom3klinux' => { 471 'fiiom3klinux' => {
459 name => 'FiiO M3K (Linux)', 472 name => 'FiiO M3K (Linux)',
@@ -511,7 +524,18 @@ sub usablebuilds {
511 my @list; 524 my @list;
512 525
513 for my $b (sort byname keys %builds) { 526 for my $b (sort byname keys %builds) {
514 push @list, $b if ($builds{$b}{status} >= 2 || defined($builds{$b}{manualok})); 527 push @list, $b if ($builds{$b}{status} >= 2);
528 }
529
530 return @list;
531}
532
533sub manualbuilds {
534 my @list;
535
536 for my $b (sort byname keys %builds) {
537 push @list, $b if (($builds{$b}{status} > 2 && !defined($builds{$b}{manualok})) ||
538 (defined($builds{$b}{manualok}) && ($builds{$b}{manualok} > 0)));
515 } 539 }
516 540
517 return @list; 541 return @list;
@@ -572,21 +596,45 @@ sub simbuilds {
572 'lang' => 'english', 596 'lang' => 'english',
573 'name' => 'UK English', 597 'name' => 'UK English',
574 'short' => 'en-gb', 598 'short' => 'en-gb',
575 'defengine' => 'espeak', 599 'defengine' => 'piper',
576 'engines' => { 600 'engines' => {
577 'festival' => '--language english', 601 'festival' => '--language english',
578 'espeak' => '-ven-gb -k 5', 602 'espeak' => '-ven-gb -k 5',
579 'gtts' => '-l en -t co.uk', 603 'gtts' => '-l en -t co.uk',
580 'piper' => 'en_GB-cori-high.onnx', 604 'piper' => 'en_GB-semaine-medium.onnx',
581 }, 605 },
582 'enabled' => 1, 606 'enabled' => 1,
583 }, 607 },
584 # Everything else in alphabetical order 608 # Everything else in alphabetical order
609 'bulgarian' => {
610 'lang' => 'bulgarian',
611 'name' => 'Български (Bulgarian)',
612 'short' => 'bg',
613 'defengine' => 'espeak', # XXX Switch to gtts when buildserver is updated
614 'engines' => {
615 'espeak' => '-vbg',
616 'gtts' => '-l bg',
617 # No piper voice yet.
618 },
619 'enabled' => 1,
620 },
621 'chinese-simp' => { # Mandarin?
622 'lang' => 'chinese-simp',
623 'name' => '简体中文 (Chinese Simplified)',
624 'short' => 'zh_cn',
625 'defengine' => 'piper',
626 'engines' => {
627 'espeak' => '-vzh',
628 'gtts' => '-l zh',
629 'piper' => 'zh_CN-huayan-medium.onnx',
630 },
631 'enabled' => 1,
632 },
585 'czech' => { 633 'czech' => {
586 'lang' => 'czech', 634 'lang' => 'czech',
587 'name' => 'Čeština (Czech)', 635 'name' => 'Čeština (Czech)',
588 'short' => 'cs', 636 'short' => 'cs',
589 'defengine' => 'espeak', 637 'defengine' => 'piper',
590 'engines' => { 638 'engines' => {
591 'espeak' => '-vcs', 639 'espeak' => '-vcs',
592 'gtts' => '-l cs', 640 'gtts' => '-l cs',
@@ -598,7 +646,7 @@ sub simbuilds {
598 'lang' => 'dansk', 646 'lang' => 'dansk',
599 'name' => 'Dansk (Danish)', 647 'name' => 'Dansk (Danish)',
600 'short' => 'da', 648 'short' => 'da',
601 'defengine' => 'espeak', 649 'defengine' => 'piper',
602 'engines' => { 650 'engines' => {
603 'espeak' => '-vda', 651 'espeak' => '-vda',
604 'gtts' => '-l da', 652 'gtts' => '-l da',
@@ -610,7 +658,7 @@ sub simbuilds {
610 'lang' => 'deutsch', 658 'lang' => 'deutsch',
611 'name' => 'Deutsch (German)', 659 'name' => 'Deutsch (German)',
612 'short' => 'de', 660 'short' => 'de',
613 'defengine' => 'espeak', 661 'defengine' => 'piper',
614 'engines' => { 662 'engines' => {
615 'espeak' => '-vde', 663 'espeak' => '-vde',
616 'gtts' => '-l de', 664 'gtts' => '-l de',
@@ -634,7 +682,7 @@ sub simbuilds {
634 'lang' => 'english-us', 682 'lang' => 'english-us',
635 'name' => 'American English', 683 'name' => 'American English',
636 'short' => 'en-us', 684 'short' => 'en-us',
637 'defengine' => 'espeak', 685 'defengine' => 'piper',
638 'engines' => { 686 'engines' => {
639 'festival' => '--language english', 687 'festival' => '--language english',
640 'espeak' => '-ven-us -k 5', 688 'espeak' => '-ven-us -k 5',
@@ -647,7 +695,7 @@ sub simbuilds {
647 'lang' => 'espanol', 695 'lang' => 'espanol',
648 'name' => 'Spanish (Peninsular)', 696 'name' => 'Spanish (Peninsular)',
649 'short' => 'es-es', 697 'short' => 'es-es',
650 'defengine' => 'espeak', 698 'defengine' => 'piper',
651 'engines' => { 699 'engines' => {
652 'festival' => '--language spanish', 700 'festival' => '--language spanish',
653 'espeak' => '-ves -k 5', 701 'espeak' => '-ves -k 5',
@@ -672,7 +720,7 @@ sub simbuilds {
672 'lang' => 'francais', 720 'lang' => 'francais',
673 'name' => 'Français (French)', 721 'name' => 'Français (French)',
674 'short' => 'fr', 722 'short' => 'fr',
675 'defengine' => 'espeak', 723 'defengine' => 'piper',
676 'engines' => { 724 'engines' => {
677 'espeak' => '-vfr-fr', 725 'espeak' => '-vfr-fr',
678 'gtts' => '-l fr', 726 'gtts' => '-l fr',
@@ -684,7 +732,7 @@ sub simbuilds {
684 'lang' => 'greek', 732 'lang' => 'greek',
685 'name' => 'Ελληνικά (Greek)', 733 'name' => 'Ελληνικά (Greek)',
686 'short' => 'el', 734 'short' => 'el',
687 'defengine' => 'espeak', 735 'defengine' => 'piper',
688 'engines' => { 736 'engines' => {
689 'espeak' => '-vel', 737 'espeak' => '-vel',
690 'gtts' => '-l el', 738 'gtts' => '-l el',
@@ -696,7 +744,7 @@ sub simbuilds {
696 'lang' => 'italiano', 744 'lang' => 'italiano',
697 'name' => 'Italiano (Italian)', 745 'name' => 'Italiano (Italian)',
698 'short' => 'it', 746 'short' => 'it',
699 'defengine' => 'espeak', 747 'defengine' => 'piper',
700 'engines' => { 748 'engines' => {
701 'espeak' => '-vit', 749 'espeak' => '-vit',
702 'gtts' => '-l it', 750 'gtts' => '-l it',
@@ -704,11 +752,22 @@ sub simbuilds {
704 }, 752 },
705 'enabled' => 1, 753 'enabled' => 1,
706 }, 754 },
755 'korean' => { #
756 'lang' => 'korean',
757 'name' => '한국어 (Korean)',
758 'short' => 'ko',
759 'defengine' => 'espeak',
760 'engines' => {
761 'espeak' => '-vko',
762 'gtts' => '-l ko',
763 },
764 'enabled' => 1,
765 },
707 'nederlands' => { 766 'nederlands' => {
708 'lang' => 'nederlands', 767 'lang' => 'nederlands',
709 'name' => 'Nederlands (Dutch)', 768 'name' => 'Nederlands (Dutch)',
710 'short' => 'nl', 769 'short' => 'nl',
711 'defengine' => 'espeak', 770 'defengine' => 'piper',
712 'engines' => { 771 'engines' => {
713 'espeak' => '-vnl', 772 'espeak' => '-vnl',
714 'gtts' => '-l nl', 773 'gtts' => '-l nl',
@@ -720,7 +779,7 @@ sub simbuilds {
720 'lang' => 'norsk', 779 'lang' => 'norsk',
721 'name' => 'Norsk (Norwegian)', 780 'name' => 'Norsk (Norwegian)',
722 'short' => 'no', 781 'short' => 'no',
723 'defengine' => 'espeak', 782 'defengine' => 'piper',
724 'engines' => { 783 'engines' => {
725 'espeak' => '-vno', 784 'espeak' => '-vno',
726 'gtts' => '-l no', 785 'gtts' => '-l no',
@@ -732,7 +791,7 @@ sub simbuilds {
732 'lang' => 'polski', 791 'lang' => 'polski',
733 'name' => 'Polski (Polish)', 792 'name' => 'Polski (Polish)',
734 'short' => 'pl', 793 'short' => 'pl',
735 'defengine' => 'espeak', 794 'defengine' => 'piper',
736 'engines' => { 795 'engines' => {
737 'espeak' => '-vpl', 796 'espeak' => '-vpl',
738 'gtts' => '-l pl', 797 'gtts' => '-l pl',
@@ -744,7 +803,7 @@ sub simbuilds {
744 'lang' => 'russian', 803 'lang' => 'russian',
745 'name' => 'Русский (Russian)', 804 'name' => 'Русский (Russian)',
746 'short' => 'ru', 805 'short' => 'ru',
747 'defengine' => 'espeak', 806 'defengine' => 'piper',
748 'engines' => { 807 'engines' => {
749 'espeak' => '-vru', 808 'espeak' => '-vru',
750 'gtts' => '-l ru', 809 'gtts' => '-l ru',
@@ -768,7 +827,7 @@ sub simbuilds {
768 'lang' => 'srpski', 827 'lang' => 'srpski',
769 'name' => 'српски (Serbian)', 828 'name' => 'српски (Serbian)',
770 'short' => 'sr', 829 'short' => 'sr',
771 'defengine' => 'espeak', 830 'defengine' => 'piper',
772 'engines' => { 831 'engines' => {
773 'espeak' => '-vsr', 832 'espeak' => '-vsr',
774 'gtts' => '-l sr', 833 'gtts' => '-l sr',
@@ -780,7 +839,7 @@ sub simbuilds {
780 'lang' => 'svenska', 839 'lang' => 'svenska',
781 'name' => 'Svenska (Swedish)', 840 'name' => 'Svenska (Swedish)',
782 'short' => 'sr', 841 'short' => 'sr',
783 'defengine' => 'espeak', 842 'defengine' => 'piper',
784 'engines' => { 843 'engines' => {
785 'espeak' => '-vsv', 844 'espeak' => '-vsv',
786 'gtts' => '-l sv', 845 'gtts' => '-l sv',
@@ -792,7 +851,7 @@ sub simbuilds {
792 'lang' => 'turkce', 851 'lang' => 'turkce',
793 'name' => 'Türkçe (Turkish)', 852 'name' => 'Türkçe (Turkish)',
794 'short' => 'tr', 853 'short' => 'tr',
795 'defengine' => 'espeak', 854 'defengine' => 'piper',
796 'engines' => { 855 'engines' => {
797 'espeak' => '-vtr', 856 'espeak' => '-vtr',
798 'gtts' => '-l tr', 857 'gtts' => '-l tr',
@@ -802,14 +861,14 @@ sub simbuilds {
802 }, 861 },
803); 862);
804 863
805sub bylang { 864sub byshortname {
806 return uc $voices{$a}{lang} cmp uc $voices{$b}{lang}; 865 return uc $voices{$a}{short} cmp uc $voices{$b}{short};
807} 866}
808 867
809sub allvoices { 868sub allvoices {
810 my @list; 869 my @list;
811 870
812 for my $b (sort bylang keys %voices) { 871 for my $b (sort byshortname keys %voices) {
813 push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); 872 push @list, $b if (defined($voices{$b}->{enabled}) && $voices{$b}->{enabled});
814 } 873 }
815 874
@@ -820,7 +879,7 @@ sub voicesforlang($) {
820 my $l = shift @_; 879 my $l = shift @_;
821 my @list; 880 my @list;
822 881
823 for my $b (sort bylang keys %voices) { 882 for my $b (sort byshortname keys %voices) {
824 push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled}); 883 push @list, $b if ($voices{$b}{lang} eq $b && defined($voices{$b}->{enabled}) && $voices{$b}->{enabled});
825 } 884 }
826 885
diff --git a/tools/buildzip.pl b/tools/buildzip.pl
index fb26597290..12ca9de1d9 100755
--- a/tools/buildzip.pl
+++ b/tools/buildzip.pl
@@ -380,6 +380,7 @@ sub buildzip {
380 my $cmd = "$ROOT/tools/convbdf -f $ROOT/fonts/*bdf >/dev/null 2>&1"; 380 my $cmd = "$ROOT/tools/convbdf -f $ROOT/fonts/*bdf >/dev/null 2>&1";
381 print($cmd."\n") if $verbose; 381 print($cmd."\n") if $verbose;
382 system($cmd); 382 system($cmd);
383 copy("$ROOT/fonts/COPYING", "COPYING-fonts.txt");
383 chdir("../../"); 384 chdir("../../");
384 385
385 if($fonts < 2) { 386 if($fonts < 2) {
diff --git a/tools/configure b/tools/configure
index 04699cb3e4..43f119ae17 100755
--- a/tools/configure
+++ b/tools/configure
@@ -843,7 +843,7 @@ androidcc () {
843 endian="little" 843 endian="little"
844 gcctarget="i686-linux-android-" 844 gcctarget="i686-linux-android-"
845 echo "${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain" 845 echo "${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain"
846 ${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain 846 ${make_toolchain} --toolchain=x86-${gccchoice} --platform=android-$ANDROID_PLATFORM_VERSION --install-dir=${pwd}/android-toolchain
847 if [ ${?} != 0 ]; then 847 if [ ${?} != 0 ]; then
848 exit 848 exit
849 fi 849 fi
@@ -1676,6 +1676,8 @@ cat <<EOF
1676 ==AIGO== 244) M3K Linux 1676 ==AIGO== 244) M3K Linux
1677 245) Eros Q / K 246) M3K baremetal ==Shanling== 1677 245) Eros Q / K 246) M3K baremetal ==Shanling==
1678 247) Eros Q / K native 260) Q1 1678 247) Eros Q / K native 260) Q1
1679 248) Eros Q / K native v3
1680 (GC9A01 LCD Controller)
1679EOF 1681EOF
1680 1682
1681 buildfor=`input`; 1683 buildfor=`input`;
@@ -4190,8 +4192,39 @@ fi
4190 t_cpu="mips" 4192 t_cpu="mips"
4191 t_manufacturer="ingenic_x1000" 4193 t_manufacturer="ingenic_x1000"
4192 t_model="erosqnative" 4194 t_model="erosqnative"
4195 # player version, for bootloader usage
4196 # versions 1 and 2 both use 1
4197 extradefines="$extradefines -DEROSQN_VER=1"
4193 ;; 4198 ;;
4194 4199
4200 248|erosqnative_v3)
4201 target_id=117
4202 modelname="erosqnative_v3"
4203 target="EROS_QN"
4204 memory=32
4205 mipsr2elcc
4206 appextra="recorder:gui"
4207 plugins="yes"
4208 tool="$rootdir/tools/scramble -add=erosqnative "
4209 boottool="$rootdir/tools/mkspl-x1000 -type=nand -ppb=2 -bpp=2 "
4210 output="rockbox.erosq"
4211 bootoutput="bootloader.erosq"
4212 sysfontbl="16-Terminus"
4213 # toolset is the tools within the tools directory that we build for
4214 # this particular target.
4215 toolset="$x1000tools"
4216 bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
4217 bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
4218 # architecture, manufacturer and model for the target-tree build
4219 t_cpu="mips"
4220 t_manufacturer="ingenic_x1000"
4221 t_model="erosqnative"
4222 # player version, for bootloader usage
4223 # version 3
4224 extradefines="$extradefines -DEROSQN_VER=3"
4225 ;;
4226
4227
4195 *) 4228 *)
4196 echo "Please select a supported target platform!" 4229 echo "Please select a supported target platform!"
4197 exit 7 4230 exit 7
diff --git a/tools/genlang b/tools/genlang
index 45f7bc82d9..6d0aa12528 100755
--- a/tools/genlang
+++ b/tools/genlang
@@ -21,14 +21,6 @@ my $LANGUAGE_FLAG_UNITS_FIRST = 0x02;
21my $HEADER_SIZE = 4; 21my $HEADER_SIZE = 4;
22my $SUBHEADER_SIZE = 6; 22my $SUBHEADER_SIZE = 6;
23 23
24# A note for future users and readers: The original v1 language system allowed
25# the build to create and use a different language than english built-in. We
26# removed that feature from our build-system, but the build scripts still had
27# the ability. But, starting now, this ability is no longer provided since I
28# figured it was boring and unnecessary to write support for now since we
29# don't use it anymore.
30
31
32if(!$ARGV[0]) { 24if(!$ARGV[0]) {
33 print <<MOO 25 print <<MOO
34Usage: genlang [options] <langv2 file> 26Usage: genlang [options] <langv2 file>
@@ -46,11 +38,7 @@ Usage: genlang [options] <langv2 file>
46 38
47 -e=<english lang file> 39 -e=<english lang file>
48 Point out the english (original source) file, to use that as master 40 Point out the english (original source) file, to use that as master
49 language template. Used in combination with -b, -u or -s. 41 language template. Used in combination with -b.
50
51 -s
52 Sort the Update language file in the same order as the strings in the
53 English file.
54 42
55 -t=<target> 43 -t=<target>
56 Specify which target you want the translations/phrases for. Required when 44 Specify which target you want the translations/phrases for. Required when
@@ -73,41 +61,26 @@ MOO
73 exit; 61 exit;
74} 62}
75 63
76# How update works:
77#
78# 1) scan the english file, keep the whole <phrase> for each phrase.
79# 2) read the translated file, for each end of phrase, compare:
80# A) all source strings, if there's any change there should be a comment about
81# it output
82# B) the desc fields
83#
84# 3) output the phrase with the comments from above
85# 4) check which phrases that the translated version didn't have, and spit out
86# the english version of those
87#
88
89my $prefix = $p; 64my $prefix = $p;
90my $binary = $b; 65my $binary = $b;
91my $sortfile = $s;
92my $binvoice = $c; 66my $binvoice = $c;
93 67
94my $english = $e; 68my $english = $e;
95my $voiceout = $o; 69my $voiceout = $o;
96 70
97my $check = ($binary?.5:0) + ($prefix?1:0) + ($voiceout?1:0) + ($sortfile?1:0) + ($binvoice?.5:0); 71my $check = ($binary?.5:0) + ($prefix?1:0) + ($voiceout?1:0) + ($binvoice?.5:0);
98 72
99if($check > 1) { 73if($check > 1) {
100 print STDERR "Please use only one of -p, -o, -b, -c and -s\n"; 74 print STDERR "Please use only one of -p, -o, -b, and -c\n";
101 exit; 75 exit;
102} 76}
103if(!$check) { 77if(!$check) {
104 print STDERR "Please use at least one of -p, -o, -c, -e and -s\n"; 78 print STDERR "Please use at least one of -p, -o, -c, and -e\n";
105 exit; 79 exit;
106} 80}
107 81
108 82if(($binary || $voiceout) && !$english) {
109if(($binary || $voiceout || $sortfile) && !$english) { 83 print STDERR "Please use -e too when you use -b, or -o\n";
110 print STDERR "Please use -e too when you use -b, -o, -u or -s\n";
111 exit; 84 exit;
112} 85}
113 86
@@ -118,7 +91,7 @@ if($binary && !$target_id) {
118} 91}
119 92
120my $target = $t; 93my $target = $t;
121if(!$target && !$sortfile) { 94if(!$target) {
122 print STDERR "Please specify a target (with -t)!\n"; 95 print STDERR "Please specify a target (with -t)!\n";
123 exit; 96 exit;
124} 97}
@@ -234,9 +207,8 @@ if($english) {
234} 207}
235 208
236sub readenglish { 209sub readenglish {
237 # For the cases where the english file needs to be scanned/read, we do 210 # For the cases where the english file needs to be scanned/read, we must
238 # it before we read the translated file. For -b it isn't necessary, but for 211 # do it before we read the translated file.
239 # -u it is convenient.
240 212
241 my @idnum = ((0)); # start with a true number 213 my @idnum = ((0)); # start with a true number
242 my @vidnum = ((0x8000)); # first voice id 214 my @vidnum = ((0x8000)); # first voice id
@@ -318,7 +290,7 @@ sub readenglish {
318 elsif($withindest && ($_ =~ / *([^:]+): *(.*)/)) { 290 elsif($withindest && ($_ =~ / *([^:]+): *(.*)/)) {
319 my ($name, $val)=($1, $2); 291 my ($name, $val)=($1, $2);
320 $dest=""; # in case it is left untouched for when the 292 $dest=""; # in case it is left untouched for when the
321 # model name isn't "our" 293 # model name isn't "ours"
322 dest($_, $name, $val); 294 dest($_, $name, $val);
323 295
324 if($dest) { 296 if($dest) {
@@ -358,7 +330,6 @@ for (keys %users) {
358 330
359open(LANG, "<$input") || die "Error: couldn't read language file named $input\n"; 331open(LANG, "<$input") || die "Error: couldn't read language file named $input\n";
360my @phrase; 332my @phrase;
361my $header = 1;
362my $langoptions = 0; 333my $langoptions = 0;
363 334
364while(<LANG>) { 335while(<LANG>) {
@@ -376,13 +347,8 @@ while(<LANG>) {
376 if ($_ =~ /LANGUAGE_UNITS_FIRST/) { 347 if ($_ =~ /LANGUAGE_UNITS_FIRST/) {
377 $langoptions |= $LANGUAGE_FLAG_UNITS_FIRST; 348 $langoptions |= $LANGUAGE_FLAG_UNITS_FIRST;
378 } 349 }
379
380 if ($header and $sortfile) {
381 print($_);
382 }
383 next; 350 next;
384 } 351 }
385 $header = 0;
386 352
387 my $ll = $_; 353 my $ll = $_;
388 354
diff --git a/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh b/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh
new file mode 100755
index 0000000000..e0a76da5c2
--- /dev/null
+++ b/tools/hibyos_nativepatcher/hibyos_nativepatcher.sh
@@ -0,0 +1,117 @@
1#!/bin/bash
2# USAGE: ./hibyos_nativepatcher.sh <path/to/updatefile.upt> <path/to/bootloader.erosq>
3# NOTE: THIS SCRIPT IS NOT TOLERANT OF WHITESPACE IN FILENAMES OR PATHS
4
5if [[ "$OSTYPE" == "darwin"* ]]; then
6 echo "$OSTYPE DETECTED"
7elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
8 echo "$OSTYPE DETECTED"
9 if !(which 7z > /dev/null); then
10 echo "PLEASE INSTALL 7z (usually part of p7zip-full package)"
11 exit 1
12 fi
13 if !(which genisoimage > /dev/null); then
14 echo "PLEASE INSTALL genisoimage"
15 exit 1
16 fi
17else
18 echo "SCRIPT NOT IMPLEMENTED ON $OSTYPE YET!"
19 exit 1
20fi
21
22SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
23if !(which $SCRIPT_DIR/patch_manifest.pl > /dev/null); then
24 echo "couldn't find patch_manifest.pl!"
25 exit 1
26fi
27
28updatefile=$(realpath --relative-base=$(pwd) $1)
29updatefile_path=$(echo "$updatefile" | perl -ne "s/\/[\w\.\_\-]*$// && print")
30updatefile_name=$(basename $updatefile)
31updatefile_name_noext=$(echo "$updatefile_name" | perl -ne "s/\.\w*$// && print")
32bootfile=$(realpath --relative-base=$(pwd) $2)
33echo "This will patch $updatefile with $bootfile..."
34
35echo "MAKE WORKING DIR..."
36mkdir $updatefile_path/working_dir
37working_dir=$(realpath $updatefile_path/working_dir)
38
39# copy update.upt to update.iso
40cp $updatefile $working_dir/$updatefile_name_noext\_cpy.iso
41
42mkdir $working_dir/image_contents
43
44# attach/mount iso
45echo "mount/extract/unmount original iso..."
46if [[ "$OSTYPE" == "darwin"* ]]; then
47 # macos
48 hdiutil attach $working_dir/$updatefile_name_noext\_cpy.iso -mountpoint $working_dir/contentsiso
49
50 # copy out iso contents
51 cp $working_dir/contentsiso/* $working_dir/image_contents
52
53 # unmount iso
54 hdiutil detach $working_dir/contentsiso
55elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
56 # linux-gnu
57 7z -o$working_dir/image_contents x $working_dir/$updatefile_name_noext\_cpy.iso
58fi
59
60chmod 777 $working_dir/image_contents/*
61
62# extract spl, bootloader
63echo "extract bootloader..."
64mkdir $working_dir/bootloader
65
66if [[ "$OSTYPE" == "darwin"* ]]; then
67 # macos
68 tar -xvf $bootfile --cd $working_dir/bootloader
69elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
70 # linux-gnu
71 tar -xvf $bootfile -C $working_dir/bootloader
72fi
73
74bootver=$(cat $working_dir/bootloader/bootloader-info.txt)
75if [ -z "$bootver" ]; then
76 echo "COULDN'T FIND BOOTLOADER-INFO!"
77 echo "cleaning up..."
78 rm -rf $working_dir
79 exit 1
80fi
81echo "FOUND VERSION $bootver"
82
83# patch uboot.bin
84echo "PATCH!"
85dd if=$working_dir/bootloader/spl.erosq of=$working_dir/image_contents/uboot.bin obs=1 seek=0 conv=notrunc
86dd if=$working_dir/bootloader/bootloader.ucl of=$working_dir/image_contents/uboot.bin obs=1 seek=26624 conv=notrunc
87
88# modify update.txt
89md5=($(md5sum $working_dir/image_contents/uboot.bin))
90if [ -z "$md5" ]; then
91 echo "COULDN'T MD5SUM UBOOT.BIN!"
92 echo "cleaning up..."
93 rm -rf $working_dir
94 exit 1
95fi
96echo "add to update manifest with md5sum $md5"
97$SCRIPT_DIR/patch_manifest.pl $md5 $working_dir/image_contents/update.txt
98
99# modify version.txt?
100
101# create iso
102echo "make new iso..."
103if [[ "$OSTYPE" == "darwin"* ]]; then
104 # macos
105 hdiutil makehybrid -iso -joliet -o $working_dir/$updatefile_name_noext\_patched_$bootver.iso $working_dir/image_contents/
106elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
107 # linux-gnu
108 genisoimage -o $working_dir/$updatefile_name_noext\_patched_$bootver.iso $working_dir/image_contents/
109fi
110
111# rename to something.upt and put in original directory
112echo "final output file $updatefile_name_noext\_patched_$bootver.upt"
113mv $working_dir/$updatefile_name_noext\_patched_$bootver.iso $updatefile_path/$updatefile_name_noext\_patched_$bootver.upt
114
115# clean up
116echo "cleaning up..."
117rm -rf $working_dir
diff --git a/tools/hibyos_nativepatcher/patch_manifest.pl b/tools/hibyos_nativepatcher/patch_manifest.pl
new file mode 100755
index 0000000000..82c6378c65
--- /dev/null
+++ b/tools/hibyos_nativepatcher/patch_manifest.pl
@@ -0,0 +1,27 @@
1#!/usr/bin/perl
2# add bootloader info to update manifest
3# usage: ./patch_manifest.pl <md5sum> <path/to/update.txt>
4
5my $md5 = $ARGV[0];
6my $updatefile = $ARGV[1];
7my $bootloader_manif =
8"bootloader={
9 name=uboot
10 file_path=autoupdate/uboot.bin
11 md5=$md5
12}\n";
13
14# read in existing manifest
15open(FH, '<', "$updatefile");
16read(FH, my $manifest, -s FH);
17close(FH);
18
19# delete existing bootloader entry if exists
20$manifest =~ s/bootloader\s*=\s*{[^}]*}//;
21
22# add our own bootloader entry
23$manifest = "$bootloader_manif$manifest";
24
25open(FH, '>', "$updatefile");
26print FH $manifest;
27close(FH);
diff --git a/tools/release/manuals.pl b/tools/release/manuals.pl
index d85ed48ff2..3493aac86d 100755
--- a/tools/release/manuals.pl
+++ b/tools/release/manuals.pl
@@ -74,6 +74,6 @@ sub buildit {
74 74
75`mkdir -p $outdir`; 75`mkdir -p $outdir`;
76 76
77for my $b (&usablebuilds) { 77for my $b (&manualbuilds) {
78 runone($b); 78 runone($b);
79} 79}
diff --git a/tools/rockboxdev.sh b/tools/rockboxdev.sh
index 63b1a1f5a1..f8e9ab2140 100755
--- a/tools/rockboxdev.sh
+++ b/tools/rockboxdev.sh
@@ -378,8 +378,14 @@ buildtool() {
378 $config_opt 378 $config_opt
379 elif [ "$config_opt" != "NO_CONFIGURE" ]; then 379 elif [ "$config_opt" != "NO_CONFIGURE" ]; then
380 echo "ROCKBOXDEV: $toolname/configure" 380 echo "ROCKBOXDEV: $toolname/configure"
381 cflags='-U_FORTIFY_SOURCE -fgnu89-inline -O2'
382 if [ "$tool" == "glib" ]; then
383 run_cmd "$logfile" sed -i -e 's/m4_copy/m4_copy_force/g' "$cfg_dir/m4macros/glib-gettext.m4"
384 run_cmd "$logfile" autoreconf -fiv "$cfg_dir"
385 cflags="$cflags -Wno-format-nonliteral -Wno-format-overflow"
386 fi
381 # NOTE glibc requires to be compiled with optimization 387 # NOTE glibc requires to be compiled with optimization
382 CFLAGS='-U_FORTIFY_SOURCE -fgnu89-inline -O2' CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \ 388 CFLAGS="$cflags" CXXFLAGS="$CXXFLAGS" run_cmd "$logfile" \
383 "$cfg_dir/configure" "--prefix=$prefix" \ 389 "$cfg_dir/configure" "--prefix=$prefix" \
384 --disable-docs $config_opt 390 --disable-docs $config_opt
385 fi 391 fi
diff --git a/tools/updatelang b/tools/updatelang
index a05011e645..28f259bdbb 100755
--- a/tools/updatelang
+++ b/tools/updatelang
@@ -158,7 +158,7 @@ sub reduceformat($) {
158################## 158##################
159 159
160if($#ARGV != 2) { 160if($#ARGV != 2) {
161 print "Usage: updatelang <english.lang> <otherlang> <outfile|->\n"; 161 print "Usage: [ENGLISHORDER=1] updatelang <english.lang> <otherlang> <outfile|->\n";
162 exit; 162 exit;
163} 163}
164 164
@@ -476,9 +476,9 @@ foreach my $id (@langorder) {
476 } 476 }
477 my $sane = $lang{$id}{'voice'}{$tgt}; 477 my $sane = $lang{$id}{'voice'}{$tgt};
478 $sane =~ s/^~?(.*)/$1/; # Strip off leading ~ if it's there as it's not a legal character otherwise 478 $sane =~ s/^~?(.*)/$1/; # Strip off leading ~ if it's there as it's not a legal character otherwise
479 if ($sane =~ tr/%"~//) { 479 if ($sane =~ tr/%"~://) {
480 # If it has suspicious characters that are not normally voiced.. 480 # Suspicious characters that are not typically voiced..
481 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' has some suspicious characters (eg '%' or '~'), please double-check!\n"; 481 $lang{$id}{'notes'} .= "### The <voice> section for '$id:$tgt' has some suspicious characters (eg '%' or '~' or ':'), please correct!\n";
482# print "#!! '$id:$tgt' suspicious characters\n"; 482# print "#!! '$id:$tgt' suspicious characters\n";
483 } 483 }
484 if ($lang{$id}{'voice'}{$tgt} =~ /\.\.\./) { 484 if ($lang{$id}{'voice'}{$tgt} =~ /\.\.\./) {
@@ -502,7 +502,14 @@ foreach (@langheader) {
502 print $fh $_; 502 print $fh $_;
503} 503}
504 504
505my @finalorder = @langorder; # TODO make configurable vs @englishorder 505my @finalorder;
506
507if ($ENV{'ENGLISHORDER'}) {
508 @finalorder = @englishorder;
509} else {
510 @finalorder = @langorder;
511}
512
506foreach my $id (@finalorder) { 513foreach my $id (@finalorder) {
507 if (!defined($english{$id})) { 514 if (!defined($english{$id})) {
508 next; 515 next;
diff --git a/tools/voice.pl b/tools/voice.pl
index 1c547c7d96..1180565b64 100755
--- a/tools/voice.pl
+++ b/tools/voice.pl
@@ -8,6 +8,7 @@
8# $Id$ 8# $Id$
9# 9#
10# Copyright (C) 2007 Jonas Häggqvist 10# Copyright (C) 2007 Jonas Häggqvist
11# Copyright (C) 2020 Solomon Peachy
11# 12#
12# All files in this archive are subject to the GNU General Public License. 13# 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. 14# See the file COPYING in the source tree root for full license agreement.
@@ -87,6 +88,8 @@ my %festival_lang_map = (
87 88
88my %gtts_lang_map = ( 89my %gtts_lang_map = (
89 'english' => '-l en -t co.uk', # Always first, it's the golden master 90 'english' => '-l en -t co.uk', # Always first, it's the golden master
91 'bulgarian' => '-l bg',
92 'chinese-simp' => '-l zh',
90 'czech' => '-l cs', 93 'czech' => '-l cs',
91 'dansk' => '-l da', 94 'dansk' => '-l da',
92 'deutsch' => '-l de', 95 'deutsch' => '-l de',
@@ -95,8 +98,9 @@ my %gtts_lang_map = (
95 'espanol' => '-l es', 98 'espanol' => '-l es',
96 'francais' => '-l fr', 99 'francais' => '-l fr',
97 'greek' => '-l el', 100 'greek' => '-l el',
98 'magyar' => '-l hu',
99 'italiano' => '-l it', 101 'italiano' => '-l it',
102 'korean' => '-l ko',
103 'magyar' => '-l hu',
100 'nederlands' => '-l nl', 104 'nederlands' => '-l nl',
101 'norsk' => '-l no', 105 'norsk' => '-l no',
102 'polski' => '-l pl', 106 'polski' => '-l pl',
@@ -109,6 +113,8 @@ my %gtts_lang_map = (
109 113
110my %espeak_lang_map = ( 114my %espeak_lang_map = (
111 'english' => '-ven-gb -k 5', # Always first, it's the golden master 115 'english' => '-ven-gb -k 5', # Always first, it's the golden master
116 'bulgarian' => '-vbg',
117 'chinese-simp' => '-vzh',
112 'czech' => '-vcs', 118 'czech' => '-vcs',
113 'dansk' => '-vda', 119 'dansk' => '-vda',
114 'deutsch' => '-vde', 120 'deutsch' => '-vde',
@@ -117,9 +123,10 @@ my %espeak_lang_map = (
117 'espanol' => '-ves', 123 'espanol' => '-ves',
118 'francais' => '-vfr-fr', 124 'francais' => '-vfr-fr',
119 'greek' => '-vel', 125 'greek' => '-vel',
120 'magyar' => '-vhu',
121 'italiano' => '-vit', 126 'italiano' => '-vit',
122 'japanese' => '-vja', 127 'japanese' => '-vja',
128 'korean' => '-vko',
129 'magyar' => '-vhu',
123 'nederlands' => '-vnl', 130 'nederlands' => '-vnl',
124 'norsk' => '-vno', 131 'norsk' => '-vno',
125 'polski' => '-vpl', 132 'polski' => '-vpl',
@@ -131,7 +138,9 @@ my %espeak_lang_map = (
131 ); 138 );
132 139
133my %piper_lang_map = ( 140my %piper_lang_map = (
134 'english' => 'en_GB-cori-high.onnx', # Always first, it's the golden master 141 'english' => 'en_GB-semaine-medium.onnx', # Always first, it's the golden master
142# 'bulgarian' => '-vbg',
143 'chinese-simp' => 'zh_CN-huayan-medium.onnx',
135 'czech' => 'cs_CZ-jirka-medium.onnx', 144 'czech' => 'cs_CZ-jirka-medium.onnx',
136 'dansk' => 'da_DK-talesyntese-medium.onnx', 145 'dansk' => 'da_DK-talesyntese-medium.onnx',
137 'deutsch' => 'de_DE-thorsten-high.onnx', 146 'deutsch' => 'de_DE-thorsten-high.onnx',
@@ -140,9 +149,10 @@ my %piper_lang_map = (
140 'espanol' => 'es_ES-sharvard-medium.onnx', 149 'espanol' => 'es_ES-sharvard-medium.onnx',
141 'francais' => 'fr_FR-siwis-medium.onnx', 150 'francais' => 'fr_FR-siwis-medium.onnx',
142 'greek' => 'el_GR-rapunzelina-low.onnx', 151 'greek' => 'el_GR-rapunzelina-low.onnx',
143 'magyar' => 'hu_HU-anna-medium.onnx',
144 'italiano' => 'it_IT-paola-medium.onnx', 152 'italiano' => 'it_IT-paola-medium.onnx',
145# 'japanese' => '-vja', 153# 'japanese' => '-vja',
154# 'korean' => '-vko',
155 'magyar' => 'hu_HU-anna-medium.onnx',
146 'nederlands' => 'nl_NL-mls-medium.onnx', 156 'nederlands' => 'nl_NL-mls-medium.onnx',
147 'norsk' => 'no_NO-talesyntese-medium.onnx', 157 'norsk' => 'no_NO-talesyntese-medium.onnx',
148 'polski' => 'pl_PL-gosia-medium.onnx', 158 'polski' => 'pl_PL-gosia-medium.onnx',
@@ -153,7 +163,7 @@ my %piper_lang_map = (
153 'turkce' => 'tr_TR-fettah-medium.onnx', 163 'turkce' => 'tr_TR-fettah-medium.onnx',
154); 164);
155 165
156my $trim_thresh = 500; # Trim silence if over this, in ms 166my $trim_thresh = 250; # Trim silence if over this, in ms
157my $force = 0; # Don't regenerate files already present 167my $force = 0; # Don't regenerate files already present
158 168
159# Initialize TTS engine. May return an object or value which will be passed 169# Initialize TTS engine. May return an object or value which will be passed
@@ -476,7 +486,7 @@ sub generateclips {
476 # If we have a pool of snippets, see if the string exists there first 486 # If we have a pool of snippets, see if the string exists there first
477 if (defined($ENV{'POOL'})) { 487 if (defined($ENV{'POOL'})) {
478 $pool_file = sprintf("%s/%s-%s.enc", $ENV{'POOL'}, 488 $pool_file = sprintf("%s/%s-%s.enc", $ENV{'POOL'},
479 md5_hex(Encode::encode_utf8("$voice ". $tts_object->{"name"}." $tts_engine_opts $encoder_opts")), 489 md5_hex(Encode::encode_utf8("$voice ". $tts_object->{"name"}." $tts_engine_opts ".$tts_object->{"ttsoptions"}." $encoder_opts")),
480 $language); 490 $language);
481 if (-f $pool_file) { 491 if (-f $pool_file) {
482 printf("Re-using %s (%s) from pool\n", $id, $voice) if $verbose; 492 printf("Re-using %s (%s) from pool\n", $id, $voice) if $verbose;
@@ -585,17 +595,21 @@ sub gentalkclips {
585 print("."); 595 print(".");
586 } 596 }
587 597
588 # Convert to a complete path
589 my $path = sprintf("%s/%s", $dir, $file);
590
591 $voice = $file;
592 $wav = sprintf("%s.talk.wav", $path);
593
594 # Ignore dot-dirs and talk files 598 # Ignore dot-dirs and talk files
595 if ($file eq '.' || $file eq '..' || $file =~ /\.talk$/) { 599 if ($file eq '.' || $file eq '..' || $file =~ /\.talk$/) {
596 next; 600 next;
597 } 601 }
598 602
603 $voice = $file;
604
605 # Convert some symbols to spaces
606 $voice =~ tr/_-/ /;
607
608 # Convert to a complete path
609 my $path = sprintf("%s/%s", $dir, $file);
610
611 $wav = sprintf("%s.talk.wav", $path);
612
599 if ( -d $path) { # Element is a dir 613 if ( -d $path) { # Element is a dir
600 $enc = sprintf("%s/_dirname.talk", $path); 614 $enc = sprintf("%s/_dirname.talk", $path);
601 if (! -e "$path/talkclips.ignore") { # Skip directories containing "talkclips.ignore" 615 if (! -e "$path/talkclips.ignore") { # Skip directories containing "talkclips.ignore"
@@ -670,7 +684,7 @@ if ($V == 1) {
670 684
671 printf("Generating voice\n Target: %s\n Language: %s\n Encoder (options): %s (%s)\n TTS Engine (options): %s (%s)\n Pool directory: %s\n", 685 printf("Generating voice\n Target: %s\n Language: %s\n Encoder (options): %s (%s)\n TTS Engine (options): %s (%s)\n Pool directory: %s\n",
672 defined($t) ? $t : "unknown", 686 defined($t) ? $t : "unknown",
673 $l, $e, $E, $s, $S, defined($ENV{'POOL'}) ? $ENV{'POOL'} : "<none>"); 687 $l, $e, $E, $s, "$S $tts_object->{ttsoptions}", defined($ENV{'POOL'}) ? $ENV{'POOL'} : "<none>");
674 generateclips($l, $t, $e, $E, $tts_object, $S, $f); 688 generateclips($l, $t, $e, $E, $tts_object, $S, $f);
675 shutdown_tts($tts_object); 689 shutdown_tts($tts_object);
676 createvoice($l, $i, $f); 690 createvoice($l, $i, $f);