bump product version to 4.1.6.2
[LibreOffice.git] / scp2 / macros / macro.pl
blob3ebeabeeea76d837cf955f60fa4fb7ee9ea47b99
2 # This file is part of the LibreOffice project.
4 # This Source Code Form is subject to the terms of the Mozilla Public
5 # License, v. 2.0. If a copy of the MPL was not distributed with this
6 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 # This file incorporates work covered by the following license notice:
10 # Licensed to the Apache Software Foundation (ASF) under one or more
11 # contributor license agreements. See the NOTICE file distributed
12 # with this work for additional information regarding copyright
13 # ownership. The ASF licenses this file to you under the Apache
14 # License, Version 2.0 (the "License"); you may not use this file
15 # except in compliance with the License. You may obtain a copy of
16 # the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 my $outfile;
20 my $destfile;
21 my $config_stamp;
22 my $lastcompletelangiso_var;
23 my $completelangiso_var = $ENV{COMPLETELANGISO_VAR};
24 my $help_langs_var = $ENV{HELP_LANGS};
26 if ( !defined $completelangiso_var) {
27 print STDERR "ERROR: No language defined!\n";
28 exit 1;
31 if (!args_require_build()) {
32 print STDERR "No new languages, or config. Keeping old file\n";
33 exit 0;
36 my @completelangiso = split " +", $completelangiso_var;
37 my @helplangs = split " +", $help_langs_var;
39 open OUTFILE, ">$outfile" or die "$0 ERROR: cannot open $outfile for writing!\n";
41 print OUTFILE "// generated file, do not edit\n\n";
42 print OUTFILE "// languages used for last time generation\n";
43 print OUTFILE "// completelangiso: $completelangiso_var\n\n";
44 print OUTFILE "// help_langs: $help_langs_var\n\n";
45 write_ITERATE_ALL_LANG();
46 write_ALL_LANG();
47 write_OTHER_LANGS();
48 write_DIR_ISOLANGUAGE_ALL_LANG_2();
49 write_DIR_ISOLANGUAGE_ALL_LANG();
50 write_DIR_ISOLANGUAGE_ALL_LANG_LPROJ();
51 write_EXTRA_ALL_LANG();
52 write_EXTRA_ALL_LANG_BUT_EN_US();
53 write_EXTRA_ALL_GOOD_HELP_LOCALIZATIONS_LANG();
54 write_RESFILE_ALL_LANG();
55 write_README_ALL_LANG();
56 write_README_TXT_ALL_LANG();
57 write_FILE_ALL_LANG_LETTER();
59 close OUTFILE;
61 rename $outfile, $destfile;
63 sub write_ITERATE_ALL_LANG
65 print OUTFILE "#define ITERATE_ALL_LANG_FILE(gid,dir,macro,name,ext) ";
66 foreach $lang (@helplangs) {
67 my $shortlang = $lang;
68 $shortlang = "en" if $shortlang eq "en-US";
69 my $speciallang = $lang;
70 $speciallang =~ s/-/_/;
71 print OUTFILE "\\\nFile CONCAT3(gid_File_,gid,_$speciallang)";
72 print OUTFILE "\\\n\tDir = CONCAT3(gid_Dir_,dir,_$speciallang);";
73 print OUTFILE "\\\n\tmacro;";
74 print OUTFILE "\\\n\tName = STRING(CONCAT3(name,_$lang,ext)); ";
75 print OUTFILE "\\\nEnd ";
76 print OUTFILE "\\\n";
78 print OUTFILE "\n\n";
80 print OUTFILE "#define ITERATE_ALL_LANG_DIR_LPROJ(gid,parent) ";
81 foreach $lang (@helplangs) {
82 my $shortlang = $lang;
83 $shortlang = "en" if $shortlang eq "en-US";
84 my $speciallang = $lang;
85 $speciallang =~ s/-/_/;
86 print OUTFILE "\\\nDirectory CONCAT3(gid_Dir_,gid,_$speciallang)";
87 print OUTFILE "\\\n\tParentID = CONCAT2(gid_Dir_,parent);";
88 print OUTFILE "\\\n\tDosName = \"$shortlang.lproj\"; ";
89 print OUTFILE "\\\nEnd ";
90 print OUTFILE "\\\n";
92 print OUTFILE "\n\n";
95 sub write_ALL_LANG
97 print OUTFILE "#define ALL_LANG(ident, resid) ";
98 foreach $lang (@completelangiso) {
99 print OUTFILE "\\\n\tident ($lang) = resid";
100 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
102 print OUTFILE "\n\n";
105 sub write_OTHER_LANGS
107 print OUTFILE "#define OTHER_LANGS ";
108 foreach $lang (@completelangiso) {
109 next if ( $lang eq "en-US");
110 print OUTFILE "\\\n\tDosName ($lang) = \"$lang\"";
111 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
113 print OUTFILE "\n\n";
116 sub write_DIR_ISOLANGUAGE_ALL_LANG_2
118 print OUTFILE "#define DIR_ISOLANGUAGE_ALL_LANG_2 ";
119 print OUTFILE "\\\n\tDosName (en-US) = \"en-US\"; \\\n\t";
120 print OUTFILE "OTHER_LANGS";
121 print OUTFILE "\n\n";
124 sub write_DIR_ISOLANGUAGE_ALL_LANG
126 print OUTFILE "#define DIR_ISOLANGUAGE_ALL_LANG ";
127 print OUTFILE "\\\n\tDosName (en-US) = \"en\"; \\\n\t";
128 print OUTFILE "OTHER_LANGS";
129 print OUTFILE "\n\n";
132 sub write_DIR_ISOLANGUAGE_ALL_LANG_LPROJ
134 print OUTFILE "#define DIR_ISOLANGUAGE_ALL_LANG_LPROJ ";
135 foreach $lang (@completelangiso) {
136 my $speciallang = $lang;
137 if ( $speciallang eq "en-US" ) { $speciallang = "en"; }
138 print OUTFILE "\\\n\tDosName ($lang) = \"$speciallang.lproj\"";
139 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
141 print OUTFILE "\n\n";
144 sub write_EXTRA_ALL_LANG
146 print OUTFILE "#define EXTRA_ALL_LANG(name,ext) ";
147 foreach $lang (@completelangiso) {
148 print OUTFILE "\\\n\tName ($lang) = CONFIGLANGFILENAME(name,_$lang,ext)";
149 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
151 print OUTFILE "\n\n";
154 sub write_EXTRA_ALL_LANG_BUT_EN_US
156 print OUTFILE "#define EXTRA_ALL_LANG_BUT_EN_US(name,ext) ";
157 my $first = 1;
158 foreach $lang (@completelangiso) {
159 if ($lang ne "en-US") {
160 print OUTFILE "; " unless $first;
161 $first = 0;
162 print OUTFILE
163 "\\\n\tName ($lang) = CONFIGLANGFILENAME(name,_$lang,ext)";
166 print OUTFILE "\n\n";
169 sub write_EXTRA_ALL_GOOD_HELP_LOCALIZATIONS_LANG
171 my $first = 1;
172 print OUTFILE "#define EXTRA_ALL_GOOD_HELP_LOCALIZATIONS_LANG(name) ";
173 foreach $lang (@helplangs) {
174 print OUTFILE ";" unless $first;
175 $first = 0;
176 print OUTFILE "\\\n\tName ($lang) = EXTRAFILELISTNAME(HelpTarget/,name,/$lang)";
178 print OUTFILE "\n\n";
181 sub write_RESFILE_ALL_LANG
183 print OUTFILE "#define RESFILE_ALL_LANG(name) ";
184 foreach $lang (@completelangiso) {
185 print OUTFILE "\\\n\tName ($lang) = RESFILENAME(name,$lang)";
186 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
188 print OUTFILE "\n\n";
191 sub write_README_ALL_LANG
193 print OUTFILE "#define README_ALL_LANG(key, name) ";
194 foreach $lang (@completelangiso) {
195 print OUTFILE "\\\n\tkey ($lang) = READMEFILENAME(name,_$lang)";
196 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
198 print OUTFILE "\n\n";
201 sub write_README_TXT_ALL_LANG
203 print OUTFILE "#define README_TXT_ALL_LANG(key, name, ext) ";
204 foreach $lang (@completelangiso) {
205 print OUTFILE "\\\n\tkey ($lang) = READMETXTFILENAME(name,_$lang,ext)";
206 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
208 print OUTFILE "\n\n";
211 sub write_FILE_ALL_LANG_LETTER
213 print OUTFILE "#define FILE_ALL_LANG_LETTER(name, ext) ";
214 foreach $lang (@completelangiso) {
215 print OUTFILE "\\\n\tName ($lang) = CONFIGLANGFILENAME(name,$lang,ext)";
216 print OUTFILE "; " if ( $lang ne $completelangiso[$#completelangiso]);
218 print OUTFILE "\n\n";
221 sub args_require_build
223 while (@ARGV) {
224 $opt = shift @ARGV;
225 $destfile = shift @ARGV if ($opt eq '-o');
226 $config_stamp = shift @ARGV if ($opt eq '-c');
228 usage() if (!defined ($destfile) || !defined ($config_stamp));
229 $outfile = "$destfile.tmp";
231 if ( -f "$destfile" ) {
232 # changed script - run always
233 return 1 if (stat($0))[9] > (stat("$destfile"))[9] ;
235 # changed config timestamp - run always
236 if (-f "$config_stamp") {
237 return 1 if (stat($config_stamp))[9] > (stat($destfile))[9];
240 open OLDFILE, "$destfile" or die "$0 - ERROR: $outfile exists but isn't readable.\n";
241 while ( $line = <OLDFILE> ) {
242 if ( $line =~ /^\/\/.*completelangiso:/ ) {
243 $lastcompletelangiso_var = $line;
244 chomp $lastcompletelangiso_var;
245 $lastcompletelangiso_var =~ s/^\/\/.*completelangiso:\s*//;
246 last;
250 close OLDFILE;
252 return 0 if ( "$completelangiso_var" eq "$lastcompletelangiso_var" );
254 return 1;
257 sub usage
259 print STDERR "Generate language dependend macros use in *.scp files\n";
260 print STDERR "perl $0 -o <outputfile> -c <config_stamp_file>\n";
261 exit 1;