]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/tools/genrb/genrbjar.pl
ICU-6.2.15.tar.gz
[apple/icu.git] / icuSources / tools / genrb / genrbjar.pl
index eb1fb2dfdac01963a1a78e33d1c8d7e28da8a43a..12be04dea9714683f2aa9a0a475fca05a0dbcc2a 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl
 #  ********************************************************************
 #  * COPYRIGHT:
 #!/usr/bin/perl
 #  ********************************************************************
 #  * COPYRIGHT:
-#  * Copyright (c) 2002-2003, International Business Machines Corporation and
+#  * Copyright (c) 2002-2004, International Business Machines Corporation and
 #  * others. All Rights Reserved.
 #  ********************************************************************
 
 #  * others. All Rights Reserved.
 #  ********************************************************************
 
@@ -19,21 +19,31 @@ use warnings;
 use File::Path;
 use File::Copy;
 
 use File::Path;
 use File::Copy;
 
-usage() unless (@ARGV >= 3);
+my $isMSWin32 = ($^O eq 'MSWin32');
+usage() unless (@ARGV >= ($isMSWin32 ? 3:2));
 my $ICU_ROOT = shift;
 my $ICU4J_ROOT = shift;
 my $ICU_ROOT = shift;
 my $ICU4J_ROOT = shift;
-my $ldVar = shift;
+my $prefix = ''; # e.g. "LD_LIBRARY_PATH=..."
+my $flavor = ''; # e.g. "Debug/"
+if ($isMSWin32) {
+    $flavor = shift() . '/';
+} else {
+    my $isDarwin = ($^O eq 'darwin');
+    my $ldVar = ($isDarwin ? 'DYLD_LIBRARY_PATH' : 'LD_LIBRARY_PATH');
+    $prefix = ($isMSWin32 ? '' : "$ldVar=$ICU_ROOT/source/common:$ICU_ROOT/source/i18n:$ICU_ROOT/source/tools/toolutil:$ICU_ROOT/source/data/out:$ICU_ROOT/source/data: ");
+}
+checkPlatform();
 
 # Step 1.  Run genrb.
 print "\n[Step 1: Run genrb]\n";
 
 # Step 1.  Run genrb.
 print "\n[Step 1: Run genrb]\n";
-my $genrb = "$ICU_ROOT/source/tools/genrb/genrb";
+my $genrb = "$ICU_ROOT/source/tools/genrb/${flavor}genrb";
 my $dataDir = "$ICU_ROOT/source/data/locales";
 my $javaRootDir = "$dataDir/java";
 my $pkg = "com/ibm/icu/impl/data";
 my $javaDir = "$javaRootDir/$pkg";
 chdir($dataDir);
 mkpath($javaDir);
 my $dataDir = "$ICU_ROOT/source/data/locales";
 my $javaRootDir = "$dataDir/java";
 my $pkg = "com/ibm/icu/impl/data";
 my $javaDir = "$javaRootDir/$pkg";
 chdir($dataDir);
 mkpath($javaDir);
-my $op = "$ldVar=$ICU_ROOT/source/common:$ICU_ROOT/source/i18n:$ICU_ROOT/source/tools/toolutil:$ICU_ROOT/source/data/out:$ICU_ROOT/source/data: $genrb -s. -d$javaDir -j -p com.ibm.icu.impl.data -b LocaleElements ";
+my $op = "$prefix$genrb -s. -d$javaDir -j -p com.ibm.icu.impl.data -b LocaleElements ";
 print "{Command: $op*.txt}\n";
 print "Directory: $dataDir\n";
 my @list;
 print "{Command: $op*.txt}\n";
 print "Directory: $dataDir\n";
 my @list;
@@ -160,6 +170,7 @@ print " $jarFile updated\n";
 
 # Done!
 print "\n[All done]\n";
 
 # Done!
 print "\n[All done]\n";
+checkPlatform();
 exit(0);
 
 #-----------------------------------------------------------------------
 exit(0);
 
 #-----------------------------------------------------------------------
@@ -298,10 +309,25 @@ sub patchIndex {
     print " $file patched (index)\n";
 }
 
     print " $file patched (index)\n";
 }
 
+#-----------------------------------------------------------------------
+sub checkPlatform {
+    my $is_big_endian = unpack("h*", pack("s", 1)) =~ /01/;
+    if (!$is_big_endian) {
+        print "*******\n";
+        print "WARNING: You are running on a LITTLE ENDIAN machine.\n";
+        print "WARNING: You cannot use the resulting ICULocaleData.jar\n";
+        print "WARNING: *.col files will have incorrect byte order.\n";
+        print "*******\n";
+    }
+}
+
 #-----------------------------------------------------------------------
 sub usage {
     print << "END";
 #-----------------------------------------------------------------------
 sub usage {
     print << "END";
-Usage: genrbjar.pl <icu_root_dir> <icu4j_root_dir> <ld_path_variable_name> [<locale>+]
+Usage: genrbjar.pl <icu_root_dir> <icu4j_root_dir> [<locale>+]
+       genrbjar.pl <icu_root_dir> <icu4j_root_dir> ('Debug' | 'Release') [<locale>+]
+
+'Debug' or 'Release' is required on MSWin32, and absent on UNIX.
 
 genrbjar creates the ICULocaleData.jar file in the icu4j project.  It
 uses locale data files in the icu4c directory and processes them with
 
 genrbjar creates the ICULocaleData.jar file in the icu4j project.  It
 uses locale data files in the icu4c directory and processes them with
@@ -316,9 +342,14 @@ are listed, all locales are processed.
 
 Before running this tool, a JDK must be installed and the javac and
 jar binaries for that JDK must be on the system path.
 
 Before running this tool, a JDK must be installed and the javac and
 jar binaries for that JDK must be on the system path.
-e.g: 
-       i)  on MacOSX: ./genrbjar.pl /Users/build/ICU_MACOSX/icu /Users/build/icu4j DYLD_LIBRARY_PATH
-       ii) on Linux: ./genrbjar.pl /Users/build/ICU_MACOSX/icu /Users/build/icu4j LD_LIBRARY_PATH
+Examples:
+ i) on Linux:  ./genrbjar.pl ~/icu ~/icu4j
+ ii) on Win32: perl genrbjar.pl C:\\icu C:\\icu4j Debug
+
+NOTE: You CANNOT use the ICULocaleData.jar created on little endian
+machines (e.g. Win32) because the *.col files will have the wrong byte
+order.  However, you can use the *.class files and look at the *.java
+files.
 END
   exit(0);
 }
 END
   exit(0);
 }