scuffed-code/tools/multi/proj/provider
Steven R. Loomis eb4ddeedb4 ICU-9329 update provider for 49, 50
X-SVN-Rev: 32211
2012-08-21 20:23:19 +00:00
..
glue ICU-8157 fe 2012-02-19 06:36:53 +00:00
check-icu2symver.sh ICU-9329 update provider for 49, 50 2012-08-21 20:23:19 +00:00
coldiff.cpp ICU-8157 update, support dateformat 2011-07-13 01:26:20 +00:00
datediff.cpp ICU-8157 update to glue code 2012-02-18 21:45:19 +00:00
export.txt ICU-7583 builds OK on mac. Ready to try clean build. 2010-09-24 00:45:01 +00:00
icu2symver.sh ICU-9329 update provider for 49, 50 2012-08-21 20:23:19 +00:00
icu-config.sed ICU-6631 checkpoint 2009-10-19 16:35:26 +00:00
Makefile ICU-9329 update provider for 49, 50 2012-08-21 20:23:19 +00:00
Makefile.local-sample ICU-7583 checkin for source drop 2010-10-06 15:13:14 +00:00
makegluren.sh ICU-9329 update provider for 49, 50 2012-08-21 20:23:19 +00:00
readme.txt ICU-8157 update to glue code 2012-02-18 21:45:19 +00:00

#!/bin/cat
# Copyright (c) 2009-2012 IBM Corp. and Others. All Rights Reserved

# ICU Provider Feature. - $Id$

* Note, as of ICU49 this is a technology preview.

BUILDING:

1a. Download the ICU source (.tgz) you wish to TARGET (i.e. link your
application against).  This must be the ICU49 branch
http://source.icu-project.org/repos/icu/icu/branches/srl/ucol8157 at
this writing.

1b. Download one or more ICUs (.tgz) you wish to have AVAILABLE (via
the provider interface).  As of this writing, 49, 4.8.1.1, 4.6.x, 4.4.x, 4.2.0.1, 3.8.1, 3.6, 3.4.1, and 3.2.1 have been tested.

   Note that the MAJOR+MINOR version numbers must not conflict between the TARGET  and AVAILABLE ICUs. Only one ICU of each major+minor is allowed. 
   So, only one 4.4.X, one 3.8.X, etc.  This is due to ICU binary compatibility rules.


1c. Copy the ICUs (named as they were downloaded) into the ../../packages/ directory relative to this readme.

2a. Copy the file "Makefile-local.sample" into a new file "Makefile.local".

2b. Edit the Makefile.local to modify the PROVIDER_TARGET and
PROVIDER_AVAILABLE settings.

   Note that if you have a special installation of the current ICU
   (ICU 49) that you want to be the target, you can set PLUGLIB_INST
   to the installed ICU path. You must still set PROVIDER_TARGET.

3. Check the makefile settings by running 'make info', you should see output similar to the following:

   ICU Provider Build
 Targetting Provider against ICU 49 (49, major 49)
  Available plugins: 3.8.1 4.2.0.1  (3_8_1 4_2_0_1)
   Available keywords:
      ...@provider=icu38
      ...@provider=icu42
   Plugin library will be libicuprov.49.so

   Available ICU tarballs: icu4c-3_8_1-src.tgz icu4c-4_2_0_1-src.tgz icu4c-4_4_2-src.tgz 
   Available ICU versions: 3.8.1 4.2.0.1 4.4.2 


 The last two lines show which ICU .tgz files are available. If a version is not listed, make sure the filename is as above.

4. Now, you are ready to build and test.

(Note: you can set the variables CC, CXX, CXXFLAGS, and CFLAGS to set
the compiler options. )

     make check

   This will take quite a while as it has to build N copies of ICU.

   When done, it should show a list of collation keys, and indicate that there were differences between ICU 3.8, 4.4, 4.2.   You may need to modify coldiff.cpp if you are using a different set of ICU versions.

5. You can test in an 'installed' ICU (not the system install) with this command:

      make install-check

DEPLOYING:

6.  To install the plugin in your own ICU, copy  out/icuplugins44.txt into your lib/icu,  and out/lib/libicuprov.44.so into your lib/ directories where ICU is installed. 

 Note that running 'icuinfo' will tell you where the plugin file is expected to be located, and 'icuinfo -L' will debug any load issues.

USING:

Collators opened with an id such as that shown in 'make info', such as  'en_US@provider=icu38' will load, for example, an ICU 3.8 collator.

Date Formats opened (udat_open) will also load a different date
format, but only through 'udat_open'.