icu4c/source/common/*.plg
icu4c/source/common/*.vcxproj.user
icu4c/source/common/Debug
+icu4c/source/common/Generated[!!-~]Files
icu4c/source/common/Makefile
icu4c/source/common/Makefile.local
icu4c/source/common/Release
icu4c/source/i18n/*.plg
icu4c/source/i18n/*.vcxproj.user
icu4c/source/i18n/Debug
+icu4c/source/i18n/Generated[!!-~]Files
icu4c/source/i18n/Makefile
icu4c/source/i18n/Makefile.local
icu4c/source/i18n/Release
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\samples\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcxproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplug", "..\tools\icuinfo\testplug.vcxproj", "{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata_uwp", "..\data\makedata_uwp.vcxproj", "{B1D53358-37BD-48BC-B27C-68BAF1E78508}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n_uwp", "..\i18n\i18n_uwp.vcxproj", "{6786C051-383B-47E0-9E82-B8B994E06A25}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common_uwp", "..\common\common_uwp.vcxproj", "{C10CF34B-3F79-430E-AD38-5A32DC0589C2}"
+EndProject
Global
- GlobalSection(SubversionScc) = preSolution
- Svn-Managed = True
- Manager = AnkhSVN - Subversion Support for Visual Studio
- EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|ARM = Debug|ARM
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
+ Release|ARM = Release|ARM
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|ARM.ActiveCfg = Debug|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
+ {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|ARM.ActiveCfg = Release|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
+ {3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
+ {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
+ {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
+ {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|ARM.ActiveCfg = Debug|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
+ {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|ARM.ActiveCfg = Release|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
+ {D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
+ {C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
+ {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
+ {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
+ {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
+ {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
+ {77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
+ {0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
+ {0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
+ {73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
- {C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
- {C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
- {C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
- {C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
- {C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
- {C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
- {C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
- {C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
- {37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
+ {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
+ {D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
+ {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
+ {203EC78A-0531-43F0-A636-285439BDE025}.Debug|ARM.ActiveCfg = Debug|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
+ {203EC78A-0531-43F0-A636-285439BDE025}.Release|ARM.ActiveCfg = Release|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
+ {6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
+ {DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
+ {C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
+ {631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
+ {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
+ {E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
+ {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.ActiveCfg = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.Build.0 = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.ActiveCfg = Debug|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.Build.0 = Debug|x64
+ {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.ActiveCfg = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.Build.0 = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.ActiveCfg = Release|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.Build.0 = Release|x64
+ {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.ActiveCfg = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.Build.0 = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.ActiveCfg = Debug|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.Build.0 = Debug|x64
+ {9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.ActiveCfg = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.Build.0 = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.ActiveCfg = Release|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.Build.0 = Release|x64
+ {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.ActiveCfg = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.Build.0 = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.ActiveCfg = Debug|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.Build.0 = Debug|x64
+ {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.ActiveCfg = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.Build.0 = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.ActiveCfg = Release|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.Build.0 = Release|x64
+ {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.ActiveCfg = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.Build.0 = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.ActiveCfg = Debug|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.Build.0 = Debug|x64
+ {C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.ActiveCfg = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.Build.0 = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.ActiveCfg = Release|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.Build.0 = Release|x64
+ {E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.ActiveCfg = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.Build.0 = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.ActiveCfg = Debug|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.Build.0 = Debug|x64
+ {E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.ActiveCfg = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.Build.0 = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.ActiveCfg = Release|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.Build.0 = Release|x64
+ {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.ActiveCfg = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.Build.0 = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.ActiveCfg = Debug|x64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.Build.0 = Debug|x64
+ {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.ActiveCfg = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.Build.0 = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.ActiveCfg = Release|x64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.Build.0 = Release|x64
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.ActiveCfg = Debug|ARM
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|ARM.Build.0 = Debug|ARM
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|Win32.Build.0 = Debug|Win32
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.ActiveCfg = Debug|x64
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Debug|x64.Build.0 = Debug|x64
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.ActiveCfg = Release|ARM
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|ARM.Build.0 = Release|ARM
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.ActiveCfg = Release|Win32
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|Win32.Build.0 = Release|Win32
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.ActiveCfg = Release|x64
+ {B1D53358-37BD-48BC-B27C-68BAF1E78508}.Release|x64.Build.0 = Release|x64
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.ActiveCfg = Debug|ARM
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|ARM.Build.0 = Debug|ARM
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|Win32.Build.0 = Debug|Win32
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.ActiveCfg = Debug|x64
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Debug|x64.Build.0 = Debug|x64
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.ActiveCfg = Release|ARM
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|ARM.Build.0 = Release|ARM
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.ActiveCfg = Release|Win32
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|Win32.Build.0 = Release|Win32
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.ActiveCfg = Release|x64
+ {6786C051-383B-47E0-9E82-B8B994E06A25}.Release|x64.Build.0 = Release|x64
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.ActiveCfg = Debug|ARM
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|ARM.Build.0 = Debug|ARM
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|Win32.Build.0 = Debug|Win32
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.ActiveCfg = Debug|x64
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Debug|x64.Build.0 = Debug|x64
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.ActiveCfg = Release|ARM
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|ARM.Build.0 = Release|ARM
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.ActiveCfg = Release|Win32
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|Win32.Build.0 = Release|Win32
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.ActiveCfg = Release|x64
+ {C10CF34B-3F79-430E-AD38-5A32DC0589C2}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(SubversionScc) = preSolution
+ Svn-Managed = True
+ Manager = AnkhSVN - Subversion Support for Visual Studio
+ EndGlobalSection
EndGlobal
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|ARM">
+ <Configuration>Debug</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|ARM">
+ <Configuration>Release</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C10CF34B-3F79-430E-AD38-5A32DC0589C2}</ProjectGuid>
+ <Keyword>DynamicLibrary</Keyword>
+ <DefaultLanguage>en-US</DefaultLanguage>
+ <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+ <AppContainerApplication>true</AppContainerApplication>
+ <ApplicationType>Windows Store</ApplicationType>
+ <WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
+ <ApplicationTypeRevision>10.0</ApplicationTypeRevision>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <Midl>
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Midl>
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\include;..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <!-- U_HIDE_DRAFT_API & U_HIDE_DEPRECATED_API -->
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;U_ATTRIBUTE_DEPRECATED=;_CRT_SECURE_NO_DEPRECATE;U_COMMON_IMPLEMENTATION;U_PLATFORM_USES_ONLY_WIN32_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <CompileAsWinRT>false</CompileAsWinRT>
+ <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
+ <IgnoreSpecificDefaultLibraries>vccorlib.lib;msvcrt.lib</IgnoreSpecificDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <Optimization>Disabled</Optimization>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+ <Midl>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>WIN64;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='ARM'">
+ <Midl>
+ <TargetEnvironment>ARM</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>ARM;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <TargetMachine>MachineARM</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib32uwp\icuuc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x86\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin32uwp\icuuc.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib32uwp\icuuc.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib32uwp\icuuc.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib32uwp\icuucd.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x86\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin32uwp\icuucd.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib32uwp\icuucd.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib32uwp\icuucd.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlibd.lib;WindowsApp.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib64uwp\icuuc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x64\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin64uwp\icuuc.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib64uwp\icuuc.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib64uwp\icuuc.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib64uwp\icuucd.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x64\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin64uwp\icuucd.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib64uwp\icuucd.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib64uwp\icuucd.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlibd.lib;WindowsApp.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <Midl>
+ <TypeLibraryName>.\..\..\libARMuwp\icuuc.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\ARM\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\ARM\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\ARM\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\ARM\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\binARMuwp\icuuc.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\libARMuwp\icuuc.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\libARMuwp\icuuc.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlib.lib;WindowsApp.lib;msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <Midl>
+ <TypeLibraryName>.\..\..\libARMuwp\icuucd.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\ARM\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\ARM\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\ARM\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\ARM\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\binARMuwp\icuucd.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\libARMuwp\icuucd.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\libARMuwp\icuucd.lib</ImportLibrary>
+ <AdditionalDependencies>vccorlibd.lib;WindowsApp.lib;msvcrtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="edits.cpp" />
+ <ClCompile Include="filteredbrk.cpp" />
+ <ClCompile Include="ubidi.cpp" />
+ <ClCompile Include="ubidi_props.cpp" />
+ <ClCompile Include="ubiditransform.cpp" />
+ <ClCompile Include="ubidiln.cpp" />
+ <ClCompile Include="ubidiwrt.cpp" />
+ <ClCompile Include="uloc_keytype.cpp" />
+ <ClCompile Include="ushape.cpp" />
+ <ClCompile Include="brkeng.cpp">
+ </ClCompile>
+ <ClCompile Include="brkiter.cpp">
+ </ClCompile>
+ <ClCompile Include="dictbe.cpp" />
+ <ClCompile Include="pluralmap.cpp" />
+ <ClCompile Include="rbbi.cpp">
+ </ClCompile>
+ <ClCompile Include="rbbidata.cpp">
+ </ClCompile>
+ <ClCompile Include="rbbinode.cpp" />
+ <ClCompile Include="rbbirb.cpp">
+ </ClCompile>
+ <ClCompile Include="rbbiscan.cpp" />
+ <ClCompile Include="rbbisetb.cpp" />
+ <ClCompile Include="rbbistbl.cpp">
+ </ClCompile>
+ <ClCompile Include="rbbitblb.cpp">
+ </ClCompile>
+ <ClCompile Include="dictionarydata.cpp" />
+ <ClCompile Include="ubrk.cpp" />
+ <ClCompile Include="ucol_swp.cpp">
+ <AdditionalIncludeDirectories>..\i18n;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <ClCompile Include="propsvec.cpp" />
+ <ClCompile Include="uarrsort.cpp" />
+ <ClCompile Include="uenum.cpp" />
+ <ClCompile Include="uhash.cpp" />
+ <ClCompile Include="uhash_us.cpp" />
+ <ClCompile Include="ulist.cpp" />
+ <ClCompile Include="ustack.cpp" />
+ <ClCompile Include="ustrenum.cpp" />
+ <ClCompile Include="utrie.cpp" />
+ <ClCompile Include="utrie2.cpp" />
+ <ClCompile Include="utrie2_builder.cpp" />
+ <ClCompile Include="uvector.cpp" />
+ <ClCompile Include="uvectr32.cpp" />
+ <ClCompile Include="uvectr64.cpp" />
+ <ClCompile Include="errorcode.cpp" />
+ <ClCompile Include="icudataver.cpp" />
+ <ClCompile Include="locmap.cpp">
+ </ClCompile>
+ <ClCompile Include="putil.cpp">
+ <CompileAsWinRT>true</CompileAsWinRT>
+ </ClCompile>
+ <ClCompile Include="umath.cpp" />
+ <ClCompile Include="umutex.cpp">
+ </ClCompile>
+ <ClCompile Include="utrace.cpp" />
+ <ClCompile Include="utypes.cpp" />
+ <ClCompile Include="wintz.cpp">
+ <ExcludedFromBuild>true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="ucnv.cpp" />
+ <ClCompile Include="ucnv2022.cpp" />
+ <ClCompile Include="ucnv_bld.cpp">
+ </ClCompile>
+ <ClCompile Include="ucnv_cb.cpp" />
+ <ClCompile Include="ucnv_cnv.cpp" />
+ <ClCompile Include="ucnv_ct.cpp" />
+ <ClCompile Include="ucnv_err.cpp" />
+ <ClCompile Include="ucnv_ext.cpp" />
+ <ClCompile Include="ucnv_io.cpp">
+ </ClCompile>
+ <ClCompile Include="ucnv_lmb.cpp" />
+ <ClCompile Include="ucnv_set.cpp" />
+ <ClCompile Include="ucnv_u16.cpp" />
+ <ClCompile Include="ucnv_u32.cpp" />
+ <ClCompile Include="ucnv_u7.cpp" />
+ <ClCompile Include="ucnv_u8.cpp" />
+ <ClCompile Include="ucnvbocu.cpp" />
+ <ClCompile Include="ucnvdisp.cpp" />
+ <ClCompile Include="ucnvhz.cpp" />
+ <ClCompile Include="ucnvisci.cpp" />
+ <ClCompile Include="ucnvlat1.cpp" />
+ <ClCompile Include="ucnvmbcs.cpp" />
+ <ClCompile Include="ucnvscsu.cpp" />
+ <ClCompile Include="ucnvsel.cpp">
+ </ClCompile>
+ <ClCompile Include="cmemory.cpp" />
+ <ClCompile Include="ucln_cmn.cpp">
+ </ClCompile>
+ <ClCompile Include="ucmndata.cpp" />
+ <ClCompile Include="udata.cpp" />
+ <ClCompile Include="udatamem.cpp" />
+ <ClCompile Include="udataswp.cpp" />
+ <ClCompile Include="uinit.cpp">
+ </ClCompile>
+ <ClCompile Include="umapfile.cpp">
+ </ClCompile>
+ <ClCompile Include="uobject.cpp" />
+ <ClCompile Include="dtintrv.cpp" />
+ <ClCompile Include="parsepos.cpp" />
+ <ClCompile Include="ustrfmt.cpp" />
+ <ClCompile Include="util.cpp" />
+ <ClCompile Include="util_props.cpp" />
+ <ClCompile Include="punycode.cpp" />
+ <ClCompile Include="uidna.cpp" />
+ <ClCompile Include="uts46.cpp" />
+ <ClCompile Include="locavailable.cpp">
+ </ClCompile>
+ <ClCompile Include="locbased.cpp" />
+ <ClCompile Include="locdispnames.cpp" />
+ <ClCompile Include="locdspnm.cpp" />
+ <ClCompile Include="locid.cpp">
+ </ClCompile>
+ <ClCompile Include="loclikely.cpp" />
+ <ClCompile Include="locresdata.cpp" />
+ <ClCompile Include="locutil.cpp">
+ </ClCompile>
+ <ClCompile Include="resbund.cpp">
+ </ClCompile>
+ <ClCompile Include="resbund_cnv.cpp" />
+ <ClCompile Include="ucat.cpp" />
+ <ClCompile Include="uloc.cpp" />
+ <ClCompile Include="uloc_tag.cpp" />
+ <ClCompile Include="ures_cnv.cpp" />
+ <ClCompile Include="uresbund.cpp" />
+ <ClCompile Include="uresdata.cpp" />
+ <ClCompile Include="resource.cpp" />
+ <ClCompile Include="ucurr.cpp" />
+ <ClCompile Include="caniter.cpp">
+ </ClCompile>
+ <ClCompile Include="filterednormalizer2.cpp" />
+ <ClCompile Include="loadednormalizer2impl.cpp" />
+ <ClCompile Include="normalizer2.cpp" />
+ <ClCompile Include="normalizer2impl.cpp" />
+ <ClCompile Include="normlzr.cpp">
+ </ClCompile>
+ <ClCompile Include="unorm.cpp" />
+ <ClCompile Include="unormcmp.cpp" />
+ <ClCompile Include="bmpset.cpp" />
+ <ClCompile Include="patternprops.cpp" />
+ <ClCompile Include="propname.cpp">
+ </ClCompile>
+ <ClCompile Include="ruleiter.cpp" />
+ <ClCompile Include="ucase.cpp">
+ </ClCompile>
+ <ClCompile Include="uchar.cpp" />
+ <ClCompile Include="unames.cpp" />
+ <ClCompile Include="unifiedcache.cpp">
+ </ClCompile>
+ <ClCompile Include="unifilt.cpp" />
+ <ClCompile Include="unifunct.cpp" />
+ <ClCompile Include="uniset.cpp" />
+ <ClCompile Include="uniset_closure.cpp" />
+ <ClCompile Include="uniset_props.cpp" />
+ <ClCompile Include="unisetspan.cpp" />
+ <ClCompile Include="uprops.cpp" />
+ <ClCompile Include="usc_impl.cpp" />
+ <ClCompile Include="uscript.cpp" />
+ <ClCompile Include="uscript_props.cpp" />
+ <ClCompile Include="uset.cpp" />
+ <ClCompile Include="uset_props.cpp" />
+ <ClCompile Include="usetiter.cpp" />
+ <ClCompile Include="icuplug.cpp" />
+ <ClCompile Include="serv.cpp">
+ </ClCompile>
+ <ClCompile Include="servlk.cpp">
+ </ClCompile>
+ <ClCompile Include="servlkf.cpp">
+ </ClCompile>
+ <ClCompile Include="servls.cpp">
+ </ClCompile>
+ <ClCompile Include="servnotf.cpp">
+ </ClCompile>
+ <ClCompile Include="servrbf.cpp">
+ </ClCompile>
+ <ClCompile Include="servslkf.cpp">
+ </ClCompile>
+ <ClCompile Include="usprep.cpp" />
+ <ClCompile Include="appendable.cpp" />
+ <ClCompile Include="bytestream.cpp" />
+ <ClCompile Include="bytestrie.cpp" />
+ <ClCompile Include="bytestriebuilder.cpp" />
+ <ClCompile Include="bytestrieiterator.cpp" />
+ <ClCompile Include="chariter.cpp" />
+ <ClCompile Include="charstr.cpp" />
+ <ClCompile Include="cstring.cpp" />
+ <ClCompile Include="cstr.cpp" />
+ <ClCompile Include="cwchar.cpp" />
+ <ClCompile Include="messagepattern.cpp" />
+ <ClCompile Include="schriter.cpp" />
+ <ClCompile Include="stringpiece.cpp" />
+ <ClCompile Include="stringtriebuilder.cpp" />
+ <ClCompile Include="simpleformatter.cpp" />
+ <ClCompile Include="ucasemap.cpp" />
+ <ClCompile Include="ucasemap_titlecase_brkiter.cpp" />
+ <ClCompile Include="ucharstrie.cpp" />
+ <ClCompile Include="ucharstriebuilder.cpp" />
+ <ClCompile Include="ucharstrieiterator.cpp" />
+ <ClCompile Include="uchriter.cpp" />
+ <ClCompile Include="uinvchar.cpp" />
+ <ClCompile Include="uiter.cpp" />
+ <ClCompile Include="unistr.cpp" />
+ <ClCompile Include="unistr_case.cpp" />
+ <ClCompile Include="unistr_case_locale.cpp" />
+ <ClCompile Include="unistr_cnv.cpp" />
+ <ClCompile Include="unistr_props.cpp" />
+ <ClCompile Include="unistr_titlecase_brkiter.cpp" />
+ <ClCompile Include="ustr_cnv.cpp" />
+ <ClCompile Include="ustr_titlecase_brkiter.cpp" />
+ <ClCompile Include="ustr_wcs.cpp" />
+ <ClCompile Include="ustrcase.cpp" />
+ <ClCompile Include="ustrcase_locale.cpp" />
+ <ClCompile Include="ustring.cpp" />
+ <ClCompile Include="ustrtrns.cpp" />
+ <ClCompile Include="utext.cpp" />
+ <ClCompile Include="utf_impl.cpp" />
+ <ClCompile Include="listformatter.cpp" />
+ <ClCompile Include="ulistformatter.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <CustomBuild Include="unicode\ubidi.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="localsvc.h" />
+ <ClInclude Include="msvcres.h" />
+ <ClInclude Include="pluralmap.h" />
+ <ClInclude Include="propname_data.h" />
+ <ClInclude Include="ubidi_props.h" />
+ <ClInclude Include="ubidiimp.h" />
+ <CustomBuild Include="unicode\ushape.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="brkeng.h" />
+ <CustomBuild Include="unicode\brkiter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\dbbi.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="dictbe.h" />
+ <CustomBuild Include="unicode\rbbi.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="rbbidata.h" />
+ <ClInclude Include="rbbinode.h" />
+ <ClInclude Include="rbbirb.h" />
+ <ClInclude Include="rbbirpt.h" />
+ <ClInclude Include="rbbiscan.h" />
+ <ClInclude Include="rbbisetb.h" />
+ <ClInclude Include="rbbitblb.h" />
+ <ClInclude Include="dictionarydata.h" />
+ <CustomBuild Include="unicode\ubrk.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ubidi_props_data.h" />
+ <ClInclude Include="ubrkimpl.h" />
+ <ClInclude Include="ucase_props_data.h" />
+ <ClInclude Include="uchar_props_data.h" />
+ <ClInclude Include="ucol_data.h" />
+ <ClInclude Include="ucol_swp.h" />
+ <ClInclude Include="unicode\ubiditransform.h" />
+ <ClInclude Include="unistrappender.h" />
+ <ClInclude Include="hash.h" />
+ <ClInclude Include="propsvec.h" />
+ <CustomBuild Include="unicode\strenum.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uarrsort.h" />
+ <CustomBuild Include="unicode\uenum.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uelement.h" />
+ <ClInclude Include="uenumimp.h" />
+ <ClInclude Include="uhash.h" />
+ <ClInclude Include="ulist.h" />
+ <CustomBuild Include="unicode\enumset.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="unicode\filteredbrk.h" />
+ <ClInclude Include="ustrenum.h" />
+ <ClInclude Include="utrie.h" />
+ <ClInclude Include="utrie2.h" />
+ <ClInclude Include="utrie2_impl.h" />
+ <ClInclude Include="utypeinfo.h" />
+ <ClInclude Include="uvector.h" />
+ <ClInclude Include="uvectr32.h" />
+ <ClInclude Include="uvectr64.h" />
+ <ClInclude Include="cpputils.h" />
+ <CustomBuild Include="unicode\docmain.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\errorcode.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\icudataver.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="locmap.h" />
+ <ClInclude Include="mutex.h" />
+ <CustomBuild Include="unicode\platform.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ptypes.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\putil.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="putilimp.h" />
+ <CustomBuild Include="unicode\std_string.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uassert.h" />
+ <CustomBuild Include="unicode\uconfig.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\umachine.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="umutex.h" />
+ <ClInclude Include="uposixdefs.h" />
+ <CustomBuild Include="unicode\urename.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utrace.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="utracimp.h" />
+ <CustomBuild Include="unicode\utypes.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uvernum.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uversion.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="wintz.h" />
+ <CustomBuild Include="unicode\ucnv.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucnv_bld.h" />
+ <CustomBuild Include="unicode\ucnv_cb.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucnv_cnv.h" />
+ <CustomBuild Include="unicode\ucnv_err.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucnv_ext.h" />
+ <ClInclude Include="ucnv_imp.h" />
+ <ClInclude Include="ucnv_io.h" />
+ <ClInclude Include="ucnvmbcs.h" />
+ <CustomBuild Include="unicode\ucnvsel.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="cmemory.h" />
+ <CustomBuild Include="unicode\localpointer.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uclean.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucln.h" />
+ <ClInclude Include="ucln_cmn.h" />
+ <ClInclude Include="ucln_imp.h" />
+ <ClInclude Include="ucmndata.h" />
+ <CustomBuild Include="unicode\udata.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="udatamem.h" />
+ <ClInclude Include="udataswp.h" />
+ <ClInclude Include="umapfile.h" />
+ <CustomBuild Include="unicode\uobject.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\dtintrv.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\parseerr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\parsepos.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\umisc.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ustrfmt.h" />
+ <ClInclude Include="util.h" />
+ <CustomBuild Include="unicode\idna.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="punycode.h" />
+ <CustomBuild Include="unicode\uidna.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="locbased.h" />
+ <CustomBuild Include="unicode\locid.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="locutil.h" />
+ <CustomBuild Include="unicode\resbund.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="sharedobject.h" />
+ <ClCompile Include="sharedobject.cpp" />
+ <CustomBuild Include="unicode\locdspnm.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\simpleformatter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucat.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\udisplaycontext.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uldnames.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uloc.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ulocimp.h" />
+ <CustomBuild Include="unicode\ures.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="unifiedcache.h" />
+ <ClInclude Include="uresdata.h" />
+ <ClInclude Include="uresimp.h" />
+ <ClInclude Include="ureslocs.h" />
+ <ClInclude Include="resource.h" />
+ <CustomBuild Include="unicode\ucurr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucurrimp.h" />
+ <CustomBuild Include="unicode\caniter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="norm2allmodes.h" />
+ <CustomBuild Include="unicode\normalizer2.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="normalizer2impl.h" />
+ <CustomBuild Include="unicode\normlzr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unorm.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unorm2.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="unormimp.h" />
+ <ClInclude Include="bmpset.h" />
+ <ClInclude Include="messageimpl.h" />
+ <ClInclude Include="patternprops.h" />
+ <ClInclude Include="propname.h" />
+ <ClInclude Include="ruleiter.h" />
+ <CustomBuild Include="unicode\symtable.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ucase.h" />
+ <CustomBuild Include="unicode\uchar.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unifilt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unifunct.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unimatch.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uniset.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="unisetspan.h" />
+ <ClInclude Include="uprops.h" />
+ <ClInclude Include="usc_impl.h" />
+ <CustomBuild Include="unicode\uscript.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uset.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uset_imp.h" />
+ <CustomBuild Include="unicode\usetiter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\icuplug.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="icuplugimp.h" />
+ <ClInclude Include="serv.h" />
+ <ClInclude Include="servloc.h" />
+ <ClInclude Include="servnotf.h" />
+ <ClInclude Include="sprpimpl.h" />
+ <CustomBuild Include="unicode\usprep.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\appendable.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\bytestream.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\bytestrie.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\bytestriebuilder.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\chariter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="charstr.h" />
+ <ClInclude Include="cstring.h" />
+ <ClInclude Include="cstr.h" />
+ <ClInclude Include="cwchar.h" />
+ <CustomBuild Include="unicode\messagepattern.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\rep.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\schriter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\stringpiece.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\stringtriebuilder.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucasemap.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucharstrie.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucharstriebuilder.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uchriter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uinvchar.h" />
+ <CustomBuild Include="unicode\uiter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unistr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\urep.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ustr_cnv.h" />
+ <ClInclude Include="ustr_imp.h" />
+ <CustomBuild Include="unicode\ustring.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ustringtrie.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utext.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utf.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utf16.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utf32.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utf8.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utf_old.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\listformatter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ulistformatter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="common.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
#include "locmap.h"
#include "cstring.h"
#include "cmemory.h"
+#include "unicode/uloc.h"
#if U_PLATFORM == U_PF_WINDOWS && defined(_MSC_VER) && (_MSC_VER >= 1500)
/*
* We might need to #include some Windows header and test for some version macro from there.
* Or call some Windows function and see what it returns.
*/
-#define USE_WINDOWS_LOCALE_API
-#endif
-
-#ifdef USE_WINDOWS_LOCALE_API
+#define USE_WINDOWS_LCID_MAPPING_API
#include <windows.h>
#include <winnls.h>
#endif
* The mapping from Win32 locale ID numbers to POSIX locale strings should
* be the faster one.
*
- * Many LCID values come from winnt.h
- * Some also come from http://www.microsoft.com/globaldev/reference/lcid-all.mspx
+ * Windows LCIDs are defined at https://msdn.microsoft.com/en-us/library/cc233965.aspx
+ * [MS-LCID] Windows Language Code Identifier (LCID) Reference
*/
/*
// Keep static locale variables inside the function so that
// it can be created properly during static init.
//
-// Note: This table should be updated periodically. Check the National Lanaguage Support API Reference Website.
+// Note: This table should be updated periodically. Check the [MS-LCID] Windows Language Code Identifier
+// (LCID) Reference defined at https://msdn.microsoft.com/en-us/library/cc233965.aspx
+//
// Microsoft is moving away from LCID in favor of locale name as of Vista. This table needs to be
// maintained for support of older Windows version.
// Update: Windows 7 (091130)
////////////////////////////////////////////
*/
+// For Windows this table is be a list of exceptions rather than a complete list as
+// LocaleNameToLCID and LCIDToLocaleName provide 90% of these.
+#ifndef USE_WINDOWS_LCID_MAPPING_API
+
ILCID_POSIX_ELEMENT_ARRAY(0x0436, af, af_ZA)
ILCID_POSIX_SUBTABLE(ar) {
ILCID_POSIX_ELEMENT_ARRAY(0x0483, co, co_FR)
ILCID_POSIX_ELEMENT_ARRAY(0x045c, chr,chr_US)
+#endif /* !USE_WINDOWS_LCID_MAPPING_API */
+// ICU has chosen different names for these.
ILCID_POSIX_SUBTABLE(ckb) {
{0x92, "ckb"},
{0x7c92, "ckb_Arab"},
{0x0492, "ckb_Arab_IQ"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
/* Declared as cs_CZ to get around compiler errors on z/OS, which defines cs as a function */
ILCID_POSIX_ELEMENT_ARRAY(0x0405, cs, cs_CZ)
ILCID_POSIX_ELEMENT_ARRAY(0x0452, cy, cy_GB)
ILCID_POSIX_ELEMENT_ARRAY(0x0406, da, da_DK)
+#endif
+
+// Windows doesn't know POSIX or BCP47 Unicode phonebook sort names
ILCID_POSIX_SUBTABLE(de) {
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x07, "de"},
{0x0c07, "de_AT"},
{0x0807, "de_CH"},
{0x0407, "de_DE"},
{0x1407, "de_LI"},
{0x1007, "de_LU"},
+#endif
{0x10407,"de_DE@collation=phonebook"}, /*This is really de_DE_PHONEBOOK on Windows*/
{0x10407,"de@collation=phonebook"} /*This is really de_DE_PHONEBOOK on Windows*/
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0465, dv, dv_MV)
ILCID_POSIX_ELEMENT_ARRAY(0x0408, el, el_GR)
+#endif
+// Windows uses an empty string for 'invariant'
ILCID_POSIX_SUBTABLE(en) {
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x09, "en"},
{0x0c09, "en_AU"},
{0x2809, "en_BZ"},
{0x4809, "en_SG"},
{0x2C09, "en_TT"},
{0x0409, "en_US"},
- {0x007f, "en_US_POSIX"}, /* duplicate for roundtripping */
- {0x2409, "en_VI"}, /* Virgin Islands AKA Caribbean Islands (en_CB). */
+#endif
+ {0x007f, "en_US_POSIX"}, /* duplicate for round-tripping */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
+ {0x2409, "en_VI"}, /* Virgin Islands AKA Caribbean Islands (en_CB). On Windows8+ This is 0x1000 or dynamically assigned */
{0x1c09, "en_ZA"},
{0x3009, "en_ZW"},
{0x2409, "en_029"},
- {0x0409, "en_AS"}, /* Alias for en_US. Leave last. */
- {0x0409, "en_GU"}, /* Alias for en_US. Leave last. */
- {0x0409, "en_MH"}, /* Alias for en_US. Leave last. */
- {0x0409, "en_MP"}, /* Alias for en_US. Leave last. */
- {0x0409, "en_UM"} /* Alias for en_US. Leave last. */
+#endif
+ {0x0409, "en_AS"}, /* Alias for en_US. Leave last. On Windows8+ This is 0x1000 or dynamically assigned */
+ {0x0409, "en_GU"}, /* Alias for en_US. Leave last. On Windows8+ This is 0x1000 or dynamically assigned */
+ {0x0409, "en_MH"}, /* Alias for en_US. Leave last. On Windows8+ This is 0x1000 or dynamically assigned */
+ {0x0409, "en_MP"}, /* Alias for en_US. Leave last. On Windows8+ This is 0x1000 or dynamically assigned */
+ {0x0409, "en_UM"} /* Alias for en_US. Leave last. On Windows8+ This is 0x1000 or dynamically assigned */
};
ILCID_POSIX_SUBTABLE(en_US_POSIX) {
{0x007f, "en_US_POSIX"} /* duplicate for roundtripping */
};
+// Windows doesn't know POSIX or BCP47 Unicode traditional sort names
ILCID_POSIX_SUBTABLE(es) {
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x0a, "es"},
{0x2c0a, "es_AR"},
{0x400a, "es_BO"},
{0x380a, "es_UY"},
{0x200a, "es_VE"},
{0x580a, "es_419"},
+#endif
{0x040a, "es_ES@collation=traditional"},
- {0x040a, "es@collation=traditional"}
+ {0x040a, "es@collation=traditional"} // Windows will treat this as es-ES@collation=traditional
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0425, et, et_EE)
ILCID_POSIX_ELEMENT_ARRAY(0x042d, eu, eu_ES)
+#endif
/* ISO-639 doesn't distinguish between Persian and Dari.*/
ILCID_POSIX_SUBTABLE(fa) {
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x29, "fa"},
{0x0429, "fa_IR"}, /* Persian/Farsi (Iran) */
+#endif
{0x048c, "fa_AF"} /* Persian/Dari (Afghanistan) */
};
+
+#ifndef USE_WINDOWS_LCID_MAPPING_API
/* duplicate for roundtripping */
ILCID_POSIX_SUBTABLE(fa_AF) {
{0x8c, "fa_AF"}, /* Persian/Dari (Afghanistan) */
{0x085d, "iu_Latn_CA"},
{0x7c5d, "iu_Latn"}
};
+#endif
ILCID_POSIX_ELEMENT_ARRAY(0x040d, iw, iw_IL) /*Left in for compatibility*/
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0411, ja, ja_JP)
ILCID_POSIX_ELEMENT_ARRAY(0x0437, ka, ka_GE)
ILCID_POSIX_ELEMENT_ARRAY(0x043f, kk, kk_KZ)
ILCID_POSIX_ELEMENT_ARRAY(0x0457, kok, kok_IN)
ILCID_POSIX_ELEMENT_ARRAY(0x0471, kr, kr_NG)
+#endif
ILCID_POSIX_SUBTABLE(ks) { /* We could add PK and CN too */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x60, "ks"},
+#endif
{0x0860, "ks_IN"}, /* Documentation doesn't mention script */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
{0x0460, "ks_Arab_IN"},
{0x0860, "ks_Deva_IN"}
+#endif
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0440, ky, ky_KG) /* Kyrgyz is spoken in Kyrgyzstan */
ILCID_POSIX_ELEMENT_ARRAY(0x0476, la, la_IT) /* TODO: Verify the country */
ILCID_POSIX_ELEMENT_ARRAY(0x046e, lb, lb_LU)
{0x0813, "nl_BE"},
{0x0413, "nl_NL"}
};
+#endif
/* The "no" locale split into nb and nn. By default in ICU, "no" is nb.*/
+// TODO: Not all of these are needed on Windows, but I don't know how ICU treats preferred ones here.
ILCID_POSIX_SUBTABLE(no) {
- {0x14, "no"}, /* really nb_NO */
+ {0x14, "no"}, /* really nb_NO - actually Windows differentiates between neutral (no region) and specific (with region) */
{0x7c14, "nb"}, /* really nb */
{0x0414, "nb_NO"}, /* really nb_NO. Keep first in the 414 list. */
{0x0414, "no_NO"}, /* really nb_NO */
{0x0814, "no_NO_NY"}/* really nn_NO */
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x046c, nso,nso_ZA) /* TODO: Verify the ISO-639 code */
ILCID_POSIX_ELEMENT_ARRAY(0x0482, oc, oc_FR)
{0x086b, "quz_EC"},
{0x0C6b, "quz_PE"}
};
+#endif
ILCID_POSIX_SUBTABLE(quc) {
{0x93, "quc"},
{0x0486, "quc_Latn_GT"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0417, rm, rm_CH)
ILCID_POSIX_SUBTABLE(ro) {
{0x0418, "ro_RO"},
{0x0818, "ro_MD"}
};
+#endif
+// TODO: This is almost certainly 'wrong'. 0 in Windows is a synonym for LOCALE_USER_DEFAULT.
+// More likely this is a similar concept to the Windows 0x7f Invariant locale ""
+// (Except that it's not invariant in ICU)
ILCID_POSIX_SUBTABLE(root) {
{0x00, "root"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_SUBTABLE(ru) {
{0x19, "ru"},
{0x0419, "ru_RU"},
ILCID_POSIX_ELEMENT_ARRAY(0x0487, rw, rw_RW)
ILCID_POSIX_ELEMENT_ARRAY(0x044f, sa, sa_IN)
ILCID_POSIX_ELEMENT_ARRAY(0x0485, sah,sah_RU)
+#endif
ILCID_POSIX_SUBTABLE(sd) {
{0x59, "sd"},
{0x0859, "sd_PK"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_SUBTABLE(se) {
{0x3b, "se"},
{0x0c3b, "se_FI"},
{0x045f, "tzm_Arab_MA"},
{0x045f, "tmz"}
};
+#endif
ILCID_POSIX_SUBTABLE(ug) {
{0x80, "ug"},
{0x0480, "ug_Arab_CN"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0422, uk, uk_UA)
ILCID_POSIX_SUBTABLE(ur) {
{0x0820, "ur_IN"},
{0x0420, "ur_PK"}
};
+#endif
ILCID_POSIX_SUBTABLE(uz) {
{0x43, "uz"},
{0x0433, "ven_ZA"}
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x042a, vi, vi_VN)
ILCID_POSIX_ELEMENT_ARRAY(0x0488, wo, wo_SN)
ILCID_POSIX_ELEMENT_ARRAY(0x0434, xh, xh_ZA)
ILCID_POSIX_ELEMENT_ARRAY(0x043d, yi, yi)
ILCID_POSIX_ELEMENT_ARRAY(0x046a, yo, yo_NG)
+#endif
+// Windows & ICU tend to different names for some of these
+// TODO: Windows probably does not need all of these entries, but I don't know how the precedence works.
ILCID_POSIX_SUBTABLE(zh) {
{0x0004, "zh_Hans"},
{0x7804, "zh"},
{0x20804,"zh_Hans@collation=stroke"},
{0x20804,"zh_Hans_CN@collation=stroke"},
{0x20804,"zh_CN@collation=stroke"}
+ // TODO: Alternate collations for other LCIDs are missing, eg: 0x50804
};
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_ELEMENT_ARRAY(0x0435, zu, zu_ZA)
+#endif
/* This must be static and grouped by LCID. */
static const ILcidPosixMap gPosixIDmap[] = {
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(af), /* af Afrikaans 0x36 */
ILCID_POSIX_MAP(am), /* am Amharic 0x5e */
ILCID_POSIX_MAP(ar), /* ar Arabic 0x01 */
ILCID_POSIX_MAP(br), /* br Breton 0x7e */
ILCID_POSIX_MAP(ca), /* ca Catalan 0x03 */
ILCID_POSIX_MAP(chr), /* chr Cherokee 0x5c */
+#endif
ILCID_POSIX_MAP(ckb), /* ckb Sorani (Central Kurdish) 0x92 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(co), /* co Corsican 0x83 */
ILCID_POSIX_MAP(cs), /* cs Czech 0x05 */
ILCID_POSIX_MAP(cy), /* cy Welsh 0x52 */
ILCID_POSIX_MAP(da), /* da Danish 0x06 */
+#endif
ILCID_POSIX_MAP(de), /* de German 0x07 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(dv), /* dv Divehi 0x65 */
ILCID_POSIX_MAP(el), /* el Greek 0x08 */
+#endif
ILCID_POSIX_MAP(en), /* en English 0x09 */
ILCID_POSIX_MAP(en_US_POSIX), /* invariant 0x7f */
ILCID_POSIX_MAP(es), /* es Spanish 0x0a */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(et), /* et Estonian 0x25 */
ILCID_POSIX_MAP(eu), /* eu Basque 0x2d */
+#endif
ILCID_POSIX_MAP(fa), /* fa Persian/Farsi 0x29 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(fa_AF), /* fa Persian/Dari 0x8c */
ILCID_POSIX_MAP(ff), /* ff Fula 0x67 */
ILCID_POSIX_MAP(fi), /* fi Finnish 0x0b */
ILCID_POSIX_MAP(is), /* is Icelandic 0x0f */
ILCID_POSIX_MAP(it), /* it Italian 0x10 */
ILCID_POSIX_MAP(iu), /* iu Inuktitut 0x5d */
+#endif
ILCID_POSIX_MAP(iw), /* iw Hebrew 0x0d */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(ja), /* ja Japanese 0x11 */
ILCID_POSIX_MAP(ka), /* ka Georgian 0x37 */
ILCID_POSIX_MAP(kk), /* kk Kazakh 0x3f */
ILCID_POSIX_MAP(ko), /* ko Korean 0x12 */
ILCID_POSIX_MAP(kok), /* kok Konkani 0x57 */
ILCID_POSIX_MAP(kr), /* kr Kanuri 0x71 */
+#endif
ILCID_POSIX_MAP(ks), /* ks Kashmiri 0x60 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(ky), /* ky Kyrgyz 0x40 */
ILCID_POSIX_MAP(lb), /* lb Luxembourgish 0x6e */
ILCID_POSIX_MAP(la), /* la Latin 0x76 */
ILCID_POSIX_MAP(ne), /* ne Nepali 0x61 */
ILCID_POSIX_MAP(nl), /* nl Dutch 0x13 */
/* ILCID_POSIX_MAP(nn), // no Norwegian 0x14 */
+#endif
ILCID_POSIX_MAP(no), /* * Norwegian 0x14 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(nso), /* nso Sotho, Northern (Sepedi dialect) 0x6c */
ILCID_POSIX_MAP(oc), /* oc Occitan 0x82 */
ILCID_POSIX_MAP(om), /* om Oromo 0x72 */
ILCID_POSIX_MAP(ps), /* ps Pashto 0x63 */
ILCID_POSIX_MAP(pt), /* pt Portuguese 0x16 */
ILCID_POSIX_MAP(qu), /* qu Quechua 0x6B */
+#endif
ILCID_POSIX_MAP(quc), /* quc K'iche 0x93 */
ILCID_POSIX_MAP(qut), /* qut K'iche 0x86 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(rm), /* rm Raeto-Romance/Romansh 0x17 */
ILCID_POSIX_MAP(ro), /* ro Romanian 0x18 */
+#endif
ILCID_POSIX_MAP(root), /* root 0x00 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(ru), /* ru Russian 0x19 */
ILCID_POSIX_MAP(rw), /* rw Kinyarwanda 0x87 */
ILCID_POSIX_MAP(sa), /* sa Sanskrit 0x4f */
ILCID_POSIX_MAP(sah), /* sah Yakut 0x85 */
+#endif
ILCID_POSIX_MAP(sd), /* sd Sindhi 0x59 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(se), /* se Sami 0x3b */
/* ILCID_POSIX_MAP(sh), // sh Serbo-Croatian 0x1a */
ILCID_POSIX_MAP(si), /* si Sinhalese 0x5b */
ILCID_POSIX_MAP(ts), /* ts Tsonga 0x31 */
ILCID_POSIX_MAP(tt), /* tt Tatar 0x44 */
ILCID_POSIX_MAP(tzm), /* tzm Tamazight 0x5f */
+#endif
ILCID_POSIX_MAP(ug), /* ug Uighur 0x80 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(uk), /* uk Ukrainian 0x22 */
ILCID_POSIX_MAP(ur), /* ur Urdu 0x20 */
+#endif
ILCID_POSIX_MAP(uz), /* uz Uzbek 0x43 */
ILCID_POSIX_MAP(ve), /* ve Venda 0x33 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(vi), /* vi Vietnamese 0x2a */
ILCID_POSIX_MAP(wo), /* wo Wolof 0x88 */
ILCID_POSIX_MAP(xh), /* xh Xhosa 0x34 */
ILCID_POSIX_MAP(yi), /* yi Yiddish 0x3d */
ILCID_POSIX_MAP(yo), /* yo Yoruba 0x6a */
+#endif
ILCID_POSIX_MAP(zh), /* zh Chinese 0x04 */
+#ifndef USE_WINDOWS_LCID_MAPPING_API
ILCID_POSIX_MAP(zu), /* zu Zulu 0x35 */
+#endif
};
static const uint32_t gLocaleCount = UPRV_LENGTHOF(gPosixIDmap);
//
/////////////////////////////////////
*/
-#ifdef USE_WINDOWS_LOCALE_API
+#ifdef USE_WINDOWS_LCID_MAPPING_API
/*
* Various language tags needs to be changed:
* quz -> qu
UBool bLookup = TRUE;
const char *pPosixID = NULL;
-#ifdef USE_WINDOWS_LOCALE_API
+#ifdef USE_WINDOWS_LCID_MAPPING_API
// Note: Windows primary lang ID 0x92 in LCID is used for Central Kurdish and
// GetLocaleInfo() maps such LCID to "ku". However, CLDR uses "ku" for
// Northern Kurdish and "ckb" for Central Kurdish. For this reason, we cannot
// use the Windows API to resolve locale ID for this specific case.
if ((hostid & 0x3FF) != 0x92) {
int32_t tmpLen = 0;
- char locName[157]; /* ULOC_FULLNAME_CAPACITY */
+ UChar windowsLocaleName[LOCALE_NAME_MAX_LENGTH]; // ULOC_FULLNAME_CAPACITY > LOCALE_NAME_MAX_LENGTH
+ char locName[LOCALE_NAME_MAX_LENGTH]; // ICU name can't be longer than Windows name
- tmpLen = GetLocaleInfoA(hostid, LOCALE_SNAME, (LPSTR)locName, UPRV_LENGTHOF(locName));
+ // Note: LOCALE_ALLOW_NEUTRAL_NAMES was enabled in Windows7+, prior versions did not handle neutral (no-region) locale names.
+ tmpLen = LCIDToLocaleName(hostid, (PWSTR)windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName), LOCALE_ALLOW_NEUTRAL_NAMES);
if (tmpLen > 1) {
- /* Windows locale name may contain sorting variant, such as "es-ES_tradnl".
- In such case, we need special mapping data found in the hardcoded table
- in this source file. */
- char *p = uprv_strchr(locName, '_');
- if (p) {
- /* Keep the base locale, without variant */
- *p = 0;
- tmpLen = uprv_strlen(locName);
- }
- else {
- /* No hardcoded table lookup necessary */
- bLookup = FALSE;
- }
- /* Change the tag separator from '-' to '_' */
- p = locName;
- while (*p) {
- if (*p == '-') {
- *p = '_';
+ int i = 0;
+ // Only need to look up in table if have _, eg for de-de_phoneb type alternate sort.
+ bLookup = FALSE;
+ for (i = 0; i < UPRV_LENGTHOF(locName); i++)
+ {
+ locName[i] = (char)(windowsLocaleName[i]);
+
+ // Windows locale name may contain sorting variant, such as "es-ES_tradnl".
+ // In such cases, we need special mapping data found in the hardcoded table
+ // in this source file.
+ if (windowsLocaleName[i] == L'_')
+ {
+ // Keep the base locale, without variant
+ // TODO: Should these be mapped from _phoneb to @collation=phonebook, etc.?
+ locName[i] = '\0';
+ tmpLen = i;
+ bLookup = TRUE;
+ break;
+ }
+ else if (windowsLocaleName[i] == L'-')
+ {
+ // Windows names use -, ICU uses _
+ locName[i] = '_';
+ }
+ else if (windowsLocaleName[i] == L'\0')
+ {
+ // No point in doing more work than necessary
+ break;
}
- p++;
}
+ // TODO: Need to understand this better, why isn't it an alias?
FIX_LANGUAGE_ID_TAG(locName, tmpLen);
pPosixID = locName;
}
}
-#endif
+#endif // USE_WINDOWS_LCID_MAPPING_API
+
if (bLookup) {
const char *pCandidate = NULL;
langID = LANGUAGE_LCID(hostid);
// POSIX --> LCID
// This should only be called from uloc_getLCID.
// The locale ID must be in canonical form.
-// langID is separate so that this file doesn't depend on the uloc_* API.
//
/////////////////////////////////////
*/
+U_CAPI uint32_t
+uprv_convertToLCIDPlatform(const char* localeID)
+{
+ // The purpose of this function is to leverage native platform name->lcid
+ // conversion functionality when available.
+#ifdef USE_WINDOWS_LCID_MAPPING_API
+ DWORD nameLCIDFlags = 0;
+ UErrorCode myStatus = U_ZERO_ERROR;
+
+ // First check for a Windows name->LCID match, fall through to catch
+ // ICU special cases, but Windows may know it already.
+#if LOCALE_ALLOW_NEUTRAL_NAMES
+ nameLCIDFlags = LOCALE_ALLOW_NEUTRAL_NAMES;
+#endif /* LOCALE_ALLOW_NEUTRAL_NAMES */
+
+ int32_t len;
+ char collVal[ULOC_KEYWORDS_CAPACITY] = {};
+ char baseName[ULOC_FULLNAME_CAPACITY] = {};
+ const char * mylocaleID = localeID;
+
+ // Check any for keywords.
+ if (uprv_strchr(localeID, '@'))
+ {
+ len = uloc_getKeywordValue(localeID, "collation", collVal, UPRV_LENGTHOF(collVal) - 1, &myStatus);
+ if (U_SUCCESS(myStatus) && len > 0)
+ {
+ // If it contains the keyword collation, return 0 so that the LCID lookup table will be used.
+ return 0;
+ }
+ else
+ {
+ // If the locale ID contains keywords other than collation, just use the base name.
+ len = uloc_getBaseName(localeID, baseName, UPRV_LENGTHOF(baseName) - 1, &myStatus);
+
+ if (U_SUCCESS(myStatus) && len > 0)
+ {
+ baseName[len] = 0;
+ mylocaleID = baseName;
+ }
+ }
+ }
+
+ char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+ // this will change it from de_DE@collation=phonebook to de-DE-u-co-phonebk form
+ int32_t bcp47Len = uloc_toLanguageTag(mylocaleID, asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &myStatus);
+
+ if (U_SUCCESS(myStatus))
+ {
+ // Need it to be UTF-16, not 8-bit
+ wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+ int i;
+ for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
+ {
+ if (asciiBCP47Tag[i] == '\0')
+ {
+ break;
+ }
+ else
+ {
+ // Copy the character
+ bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
+ }
+ }
+
+ if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
+ {
+ // Ensure it's null terminated
+ bcp47Tag[i] = L'\0';
+ LCID lcid = LocaleNameToLCID(bcp47Tag, nameLCIDFlags);
+ if (lcid > 0)
+ {
+ // Found LCID from windows, return that one, unless its completely ambiguous
+ // LOCALE_USER_DEFAULT and transients are OK because they will round trip
+ // for this process.
+ if (lcid != LOCALE_CUSTOM_UNSPECIFIED)
+ {
+ return lcid;
+ }
+ }
+ }
+ }
+#endif /* USE_WINDOWS_LCID_MAPPING_API */
+
+ // No found, or not implemented on platforms without native name->lcid conversion
+ return 0;
+}
U_CAPI uint32_t
uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status)
{
-
+ // This function does the table lookup when native platform name->lcid conversion isn't available,
+ // or for locales that don't follow patterns the platform expects.
uint32_t low = 0;
uint32_t high = gLocaleCount;
uint32_t mid;
*status = U_ILLEGAL_ARGUMENT_ERROR;
return 0; /* return international (root) */
}
-
U_CAPI int32_t uprv_convertToPosix(uint32_t hostid, char* posixID, int32_t posixIDCapacity, UErrorCode* status);
-/* Don't call this function directly. Use uloc_getLCID instead. */
+/* Don't call these functions directly. Use uloc_getLCID instead. */
+U_CAPI uint32_t uprv_convertToLCIDPlatform(const char *localeID); // Leverage platform conversion if possible
U_CAPI uint32_t uprv_convertToLCID(const char *langID, const char* posixID, UErrorCode* status);
#endif /* LOCMAP_H */
#include "normalizer2impl.h"
#include "uprops.h" // for uniset_getUnicode32Instance()
+#if defined(_ARM64_) && defined(move32)
+ // System can define move32 intrinsics, but the char iters define move32 method
+ // using same undef trick in headers, so undef here to re-enable the method.
+#undef move32
+#endif
+
U_NAMESPACE_BEGIN
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(Normalizer)
* Should Cygwin be included as well (U_PLATFORM_HAS_WIN32_API)
* to use native APIs as much as possible?
*/
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
# define NOIME
# define NOMCX
# include <windows.h>
+# include "unicode\uloc.h"
+#if U_PLATFORM_HAS_WINUWP_API == 0
# include "wintz.h"
+#else // U_PLATFORM_HAS_WINUWP_API
+typedef PVOID LPMSG; // TODO: figure out how to get rid of this typedef
+#include <Windows.Globalization.h>
+#include <windows.system.userprofile.h>
+#include <wrl\wrappers\corewrappers.h>
+#include <wrl\client.h>
+
+using namespace ABI::Windows::Foundation;
+using namespace Microsoft::WRL;
+using namespace Microsoft::WRL::Wrappers;
+#endif
#elif U_PLATFORM == U_PF_OS400
# include <float.h>
# include <qusec.h> /* error code structure */
#endif
}
+// With the Universal Windows Platform we can just ask Windows for the name
+#if U_PLATFORM_HAS_WINUWP_API
+U_CAPI const char* U_EXPORT2
+uprv_getWindowsTimeZone()
+{
+ // Get default Windows timezone.
+ ComPtr<IInspectable> calendar;
+ HRESULT hr = RoActivateInstance(
+ HStringReference(RuntimeClass_Windows_Globalization_Calendar).Get(),
+ &calendar);
+ if (SUCCEEDED(hr))
+ {
+ ComPtr<ABI::Windows::Globalization::ITimeZoneOnCalendar> timezone;
+ hr = calendar.As(&timezone);
+ if (SUCCEEDED(hr))
+ {
+ HString timezoneString;
+ hr = timezone->GetTimeZone(timezoneString.GetAddressOf());
+ if (SUCCEEDED(hr))
+ {
+ int32_t length = wcslen(timezoneString.GetRawBuffer(NULL));
+ char* asciiId = (char*)uprv_calloc(length + 1, sizeof(char));
+ if (asciiId != nullptr)
+ {
+ u_UCharsToChars((UChar*)timezoneString.GetRawBuffer(NULL), asciiId, length);
+ return asciiId;
+ }
+ }
+ }
+ }
+
+ // Failed
+ return nullptr;
+}
+#endif
+
U_CAPI const char* U_EXPORT2
uprv_tzname(int n)
{
const char *tzid = NULL;
#if U_PLATFORM_USES_ONLY_WIN32_API
+#if U_PLATFORM_HAS_WINUWP_API > 0
+ tzid = uprv_getWindowsTimeZone();
+#else
tzid = uprv_detectWindowsTimeZone();
+#endif
if (tzid != NULL) {
return tzid;
}
+
+#ifndef U_TZNAME
+ // The return value is free'd in timezone.cpp on Windows because
+ // the other code path returns a pointer to a heap location.
+ // If we don't have a name already, then tzname wouldn't be any
+ // better, so just fall back.
+ return uprv_strdup("Etc/UTC");
+#endif // !U_TZNAME
+
#else
/*#if U_PLATFORM_IS_DARWIN_BASED
static CharString *gTimeZoneFilesDirectory = NULL;
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
- static char *gCorrectedPOSIXLocale = NULL; /* Heap allocated */
+ static char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
+ static bool gCorrectedPOSIXLocaleHeapAllocated = false;
#endif
static UBool U_CALLCONV putil_cleanup(void)
#endif
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
- if (gCorrectedPOSIXLocale) {
+ if (gCorrectedPOSIXLocale && gCorrectedPOSIXLocaleHeapAllocated) {
uprv_free(gCorrectedPOSIXLocale);
gCorrectedPOSIXLocale = NULL;
+ gCorrectedPOSIXLocaleHeapAllocated = false;
}
#endif
return TRUE;
*/
# if !defined(ICU_NO_USER_DATA_OVERRIDE) && !UCONFIG_NO_FILE_IO
/* First try to get the environment variable */
- path=getenv("ICU_DATA");
+# if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP does not support getenv
+ path=getenv("ICU_DATA");
+# endif
# endif
/* ICU_DATA_DIR may be set as a compile option.
}
#endif
+#if defined(ICU_DATA_DIR_WINDOWS) && U_PLATFORM_HAS_WINUWP_API != 0
+ // Use data from the %windir%\globalization\icu directory
+ // This is only available if ICU is built as a system component
+ char datadir_path_buffer[MAX_PATH];
+ UINT length = GetWindowsDirectoryA(datadir_path_buffer, UPRV_LENGTHOF(datadir_path_buffer));
+ if (length > 0 && length < (UPRV_LENGTHOF(datadir_path_buffer) - sizeof(ICU_DATA_DIR_WINDOWS) - 1))
+ {
+ if (datadir_path_buffer[length - 1] != '\\')
+ {
+ datadir_path_buffer[length++] = '\\';
+ datadir_path_buffer[length] = '\0';
+ }
+
+ if ((length + 1 + sizeof(ICU_DATA_DIR_WINDOWS)) < UPRV_LENGTHOF(datadir_path_buffer))
+ {
+ uprv_strcat(datadir_path_buffer, ICU_DATA_DIR_WINDOWS);
+ path = datadir_path_buffer;
+ }
+ }
+#endif
+
if(path==NULL) {
/* It looks really bad, set it to something. */
+#if U_PLATFORM_HAS_WIN32_API
+ // Windows UWP will require icudtl.dat file in same directory as icuuc.dll
+ path = ".\\";
+#else
path = "";
+#endif
}
u_setDataDirectory(path);
status = U_MEMORY_ALLOCATION_ERROR;
return;
}
+#if U_PLATFORM_HAS_WINUWP_API == 0
const char *dir = getenv("ICU_TIMEZONE_FILES_DIR");
+#else
+ // TODO: UWP does not support alternate timezone data directories at this time
+ const char *dir = "";
+#endif // U_PLATFORM_HAS_WINUWP_API
#if defined(U_TIMEZONE_FILES_DIR)
if (dir == NULL) {
dir = TO_STRING(U_TIMEZONE_FILES_DIR);
if (gCorrectedPOSIXLocale == NULL) {
gCorrectedPOSIXLocale = correctedPOSIXLocale;
+ gCorrectedPOSIXLocaleHeapAllocated = true;
ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
correctedPOSIXLocale = NULL;
}
UErrorCode status = U_ZERO_ERROR;
char *correctedPOSIXLocale = 0;
+ // If we have already figured this out just use the cached value
if (gCorrectedPOSIXLocale != NULL) {
return gCorrectedPOSIXLocale;
}
- LCID id = GetThreadLocale();
- correctedPOSIXLocale = static_cast<char *>(uprv_malloc(POSIX_LOCALE_CAPACITY + 1));
- if (correctedPOSIXLocale) {
- int32_t posixLen = uprv_convertToPosix(id, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
- if (U_SUCCESS(status)) {
- *(correctedPOSIXLocale + posixLen) = 0;
- gCorrectedPOSIXLocale = correctedPOSIXLocale;
- ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
- } else {
- uprv_free(correctedPOSIXLocale);
+ // No cached value, need to determine the current value
+ static WCHAR windowsLocale[LOCALE_NAME_MAX_LENGTH];
+#if U_PLATFORM_HAS_WINUWP_API == 0
+ // If not a Universal Windows App, we'll need user default language.
+ // Vista and above should use Locale Names instead of LCIDs
+ int length = GetUserDefaultLocaleName(windowsLocale, UPRV_LENGTHOF(windowsLocale));
+#else
+ // In a UWP app, we want the top language that the application and user agreed upon
+ ComPtr<ABI::Windows::Foundation::Collections::IVectorView<HSTRING>> languageList;
+
+ ComPtr<ABI::Windows::Globalization::IApplicationLanguagesStatics> applicationLanguagesStatics;
+ HRESULT hr = GetActivationFactory(
+ HStringReference(RuntimeClass_Windows_Globalization_ApplicationLanguages).Get(),
+ &applicationLanguagesStatics);
+ if (SUCCEEDED(hr))
+ {
+ hr = applicationLanguagesStatics->get_Languages(&languageList);
+ }
+
+ if (FAILED(hr))
+ {
+ // If there is no application context, then use the top language from the user language profile
+ ComPtr<ABI::Windows::System::UserProfile::IGlobalizationPreferencesStatics> globalizationPreferencesStatics;
+ hr = GetActivationFactory(
+ HStringReference(RuntimeClass_Windows_System_UserProfile_GlobalizationPreferences).Get(),
+ &globalizationPreferencesStatics);
+ if (SUCCEEDED(hr))
+ {
+ hr = globalizationPreferencesStatics->get_Languages(&languageList);
}
}
+ // We have a list of languages, ICU knows one, so use the top one for our locale
+ HString topLanguage;
+ if (SUCCEEDED(hr))
+ {
+ hr = languageList->GetAt(0, topLanguage.GetAddressOf());
+ }
+
+ if (FAILED(hr))
+ {
+ // Unexpected, use en-US by default
+ if (gCorrectedPOSIXLocale == NULL) {
+ gCorrectedPOSIXLocale = "en_US";
+ }
+
+ return gCorrectedPOSIXLocale;
+ }
+
+ // ResolveLocaleName will get a likely subtags form consistent with Windows behavior.
+ int length = ResolveLocaleName(topLanguage.GetRawBuffer(NULL), windowsLocale, UPRV_LENGTHOF(windowsLocale));
+#endif
+ // Now we should have a Windows locale name that needs converted to the POSIX style,
+ if (length > 0)
+ {
+ // First we need to go from UTF-16 to char (and also convert from _ to - while we're at it.)
+ char modifiedWindowsLocale[LOCALE_NAME_MAX_LENGTH];
+
+ int i;
+ for (i = 0; i < UPRV_LENGTHOF(modifiedWindowsLocale); i++)
+ {
+ if (windowsLocale[i] == '_')
+ {
+ modifiedWindowsLocale[i] = '-';
+ }
+ else
+ {
+ modifiedWindowsLocale[i] = static_cast<char>(windowsLocale[i]);
+ }
+
+ if (modifiedWindowsLocale[i] == '\0')
+ {
+ break;
+ }
+ }
+
+ if (i >= UPRV_LENGTHOF(modifiedWindowsLocale))
+ {
+ // Ran out of room, can't really happen, maybe we'll be lucky about a matching
+ // locale when tags are dropped
+ modifiedWindowsLocale[UPRV_LENGTHOF(modifiedWindowsLocale) - 1] = '\0';
+ }
+
+ // Now normalize the resulting name
+ if (correctedPOSIXLocale)
+ {
+ int32_t posixLen = uloc_canonicalize(modifiedWindowsLocale, correctedPOSIXLocale, POSIX_LOCALE_CAPACITY, &status);
+ if (U_SUCCESS(status))
+ {
+ *(correctedPOSIXLocale + posixLen) = 0;
+ gCorrectedPOSIXLocale = correctedPOSIXLocale;
+ gCorrectedPOSIXLocaleHeapAllocated = true;
+ ucln_common_registerCleanup(UCLN_COMMON_PUTIL, putil_cleanup);
+ }
+ else
+ {
+ uprv_free(correctedPOSIXLocale);
+ }
+ }
+ }
+
+ // If unable to find a locale we can agree upon, use en-US by default
if (gCorrectedPOSIXLocale == NULL) {
- return "en_US";
+ gCorrectedPOSIXLocale = "en_US";
}
return gCorrectedPOSIXLocale;
#elif U_PLATFORM_USES_ONLY_WIN32_API
static char codepage[64];
- sprintf(codepage, "windows-%d", GetACP());
- return codepage;
+ DWORD codepageNumber = 0;
+
+#if U_PLATFORM_HAS_WINUWP_API > 0
+ // UWP doesn't have a direct API to get the default ACP as Microsoft would rather
+ // have folks use Unicode than a "system" code page, however this is the same
+ // codepage as the system default locale codepage. (FWIW, the system locale is
+ // ONLY used for codepage, it should never be used for anything else)
+ GetLocaleInfoEx(LOCALE_NAME_SYSTEM_DEFAULT, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER,
+ (LPWSTR)&codepageNumber, sizeof(codepageNumber) / sizeof(WCHAR));
+#else
+ // Win32 apps can call GetACP
+ codepageNumber = GetACP();
+#endif
+ // Special case for UTF-8
+ if (codepageNumber == 65001)
+ {
+ return "UTF-8";
+ }
+ // Windows codepages can look like windows-1252, so format the found number
+ // the numbers are eclectic, however all valid system code pages, besides UTF-8
+ // are between 3 and 19999
+ if (codepageNumber > 0 && codepageNumber < 20000)
+ {
+ sprintf(codepage, "windows-%ld", codepageNumber);
+ return codepage;
+ }
+ // If the codepage number call failed then return UTF-8
+ return "UTF-8";
#elif U_POSIX_LOCALE
static char codesetName[100];
#ifdef U_TZSET
/* Use the predefined value. */
#elif U_PLATFORM_USES_ONLY_WIN32_API
+ // UWP doesn't support tzset or environment variables for tz
+#if U_PLATFORM_HAS_WINUWP_API == 0
# define U_TZSET _tzset
+#endif
#elif U_PLATFORM == U_PF_OS400
/* not defined */
#else
#ifdef U_TZNAME
/* Use the predefined value. */
#elif U_PLATFORM_USES_ONLY_WIN32_API
+ /* not usable on all windows platforms */
+#if U_PLATFORM_HAS_WINUWP_API == 0
# define U_TZNAME _tzname
+#endif
#elif U_PLATFORM == U_PF_OS400
/* not defined */
#else
/* READ READ READ READ! Are you getting compilation errors from windows.h?
Any source file which includes this (ucln_imp.h) header MUST
be defined with language extensions ON. */
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
static UHashtable *gCommonDataCache = NULL; /* Global hash table of opened ICU data files. */
static icu::UInitOnce gCommonDataCacheInitOnce = U_INITONCE_INITIALIZER;
+#if U_PLATFORM_HAS_WINUWP_API == 0
static UDataFileAccess gDataFileAccess = UDATA_DEFAULT_ACCESS; // Access not synchronized.
// Modifying is documented as thread-unsafe.
+#else
+static UDataFileAccess gDataFileAccess = UDATA_NO_FILES; // Windows UWP looks in one spot explicitly
+#endif
static UBool U_CALLCONV
udata_cleanup(void)
/*----------------------------------------------------------------------*
* *
- * Add a static reference to the common data library *
+ * Add a static reference to the common data library *
* Unless overridden by an explicit udata_setCommonData, this will be *
* our common data. *
* *
*----------------------------------------------------------------------*/
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
+#endif
/*
* This would be a good place for weak-linkage declarations of
if(gCommonICUDataArray[commonDataIndex] != NULL) {
return gCommonICUDataArray[commonDataIndex];
}
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
int32_t i;
for(i = 0; i < commonDataIndex; ++i) {
if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
return NULL;
}
}
+#endif
}
/* Add the linked-in data to the list. */
setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
}
*/
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
{
Mutex lock;
return gCommonICUDataArray[commonDataIndex];
}
+#endif
}
fprintf(stderr, " tocEntryPath = %s\n", tocEntryName.data());
#endif
+#if U_PLATFORM_HAS_WINUWP_API == 0 // Windows UWP Platform does not support dll icu data at this time
if(path == NULL) {
path = COMMON_DATA_NAME; /* "icudt26e" */
}
+#else
+ // Windows UWP expects only a single data file.
+ path = COMMON_DATA_NAME; /* "icudt26e" */
+#endif
/************************ Begin loop looking for ind. files ***************/
#ifdef UDATA_DEBUG
{
UErrorCode status = U_ZERO_ERROR;
char langID[ULOC_FULLNAME_CAPACITY];
+ uint32_t lcid = 0;
+
+ /* Check for incomplete id. */
+ if (!localeID || uprv_strlen(localeID) < 2) {
+ return 0;
+ }
+
+ // Attempt platform lookup if available
+ lcid = uprv_convertToLCIDPlatform(localeID);
+ if (lcid > 0)
+ {
+ // Windows found an LCID, return that
+ return lcid;
+ }
uloc_getLanguage(localeID, langID, sizeof(langID), &status);
if (U_FAILURE(status)) {
char extBuf[ULOC_KEYWORD_AND_VALUES_CAPACITY];
char *pExtBuf = extBuf;
int32_t extBufCapacity = sizeof(extBuf);
- const char *bcpKey, *bcpValue;
+ const char *bcpKey=nullptr, *bcpValue=nullptr;
UErrorCode tmpStatus = U_ZERO_ERROR;
int32_t keylen;
UBool isBcpUExt;
/* memory-mapping base definitions ------------------------------------------ */
#if MAP_IMPLEMENTATION==MAP_WIN32
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
UDataMemory_init(pData); /* Clear the output struct. */
/* open the input file */
+#if U_PLATFORM_HAS_WINUWP_API == 0
file=CreateFileA(path, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS, NULL);
+#else
+ // First we need to go from char to UTF-16
+ // u_UCharsToChars could work but it requires length.
+ WCHAR utf16Path[MAX_PATH];
+ int i;
+ for (i = 0; i < UPRV_LENGTHOF(utf16Path); i++)
+ {
+ utf16Path[i] = path[i];
+ if (path[i] == '\0')
+ {
+ break;
+ }
+ }
+ if (i >= UPRV_LENGTHOF(utf16Path))
+ {
+ // Ran out of room, unlikely but be safe
+ utf16Path[UPRV_LENGTHOF(utf16Path) - 1] = '\0';
+ }
+
+ // TODO: Is it worth setting extended parameters to specify random access?
+ file = CreateFile2(utf16Path, GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING, NULL);
+#endif
if(file==INVALID_HANDLE_VALUE) {
return FALSE;
}
/* Declare and initialize a security descriptor.
This is required for multiuser systems on Windows 2000 SP4 and beyond */
+ // TODO: UWP does not have this function and I do not think it is required?
+#if U_PLATFORM_HAS_WINUWP_API == 0
if (InitializeSecurityDescriptor(&securityDesc, SECURITY_DESCRIPTOR_REVISION)) {
- /* give the security descriptor a Null Dacl done using the "TRUE, (PACL)NULL" here */
+ /* give the security descriptor a Null Dacl done using the "TRUE, (PACL)NULL" here */
if (SetSecurityDescriptorDacl(&securityDesc, TRUE, (PACL)NULL, FALSE)) {
/* Make the security attributes point to the security descriptor */
uprv_memset(&mappingAttributes, 0, sizeof(mappingAttributes));
/* create an unnamed Windows file-mapping object for the specified file */
map=CreateFileMapping(file, mappingAttributesPtr, PAGE_READONLY, 0, 0, NULL);
+#else
+ map = CreateFileMappingFromApp(file, NULL, PAGE_READONLY, 0, NULL);
+#endif
CloseHandle(file);
if(map==NULL) {
return FALSE;
// Original plan was to use gcc atomics for MinGW, but they
// aren't supported, so we fold MinGW into this path.
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
* win32 APIs for Critical Sections.
*/
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
* @return the new position
* @stable ICU 2.0
*/
+#ifdef move32
+ // One of the system headers right now is sometimes defining a conflicting macro we don't use
+#undef move32
+#endif
virtual int32_t move32(int32_t delta, EOrigin origin) = 0;
/**
# define U_PLATFORM_HAS_WIN32_API 0
#endif
+/**
+ * \def U_PLATFORM_HAS_WINUWP_API
+ * Defines whether target is intended for Universal Windows Platform API
+ * Set to 1 for Windows10 Release Solution Configuration
+ * @internal
+ */
+#ifdef U_PLATFORM_HAS_WINUWP_API
+ /* Use the predefined value. */
+#else
+# define U_PLATFORM_HAS_WINUWP_API 0
+#endif
+
/**
* \def U_PLATFORM_IMPLEMENTS_POSIX
* Defines whether the platform implements (most of) the POSIX API.
* @return the new position
* @stable ICU 2.0
*/
+#ifdef move32
+ // One of the system headers right now is sometimes defining a conflicting macro we don't use
+#undef move32
+#endif
virtual int32_t move32(int32_t delta, EOrigin origin);
/**
* Gets the Win32 LCID value for the specified locale.
* If the ICU locale is not recognized by Windows, 0 will be returned.
*
+ * LCIDs were deprecated with Windows Vista and Microsoft recommends
+ * that developers use BCP47 style tags instead (uloc_toLanguageTag).
+ *
* @param localeID the locale to get the Win32 LCID value with
* @return country the Win32 LCID for localeID
* @stable ICU 2.0
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
+#if U_PLATFORM_HAS_WINUWP_API == 0
#define U_ICU_VERSION_SHORT "59"
+#else
+// U_DISABLE_RENAMING does not impact dat file name
+#define U_ICU_VERSION_SHORT
+#endif /* U_PLATFORM_HAS_WINUWP_API == 0 */
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
#include "unicode/utypes.h"
// This file contains only desktop Windows behavior
-#if U_PLATFORM_HAS_WIN32_API
+// Windows UWP calls Windows::Globalization directly, so this isn't needed there.
+#if U_PLATFORM_HAS_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0)
#include "wintz.h"
#include "cmemory.h"
#include "unicode/ures.h"
#include "unicode/ustring.h"
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
return icuid;
}
-#endif /* U_PLATFORM_HAS_WIN32_API */
+#endif /* U_PLATFORM_HAS_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0) */
#include "unicode/utypes.h"
-#if U_PLATFORM_HAS_WIN32_API
+// This file contains only desktop windows behavior
+// Windows UWP calls Windows::Globalization directly, so this isn't needed there.
+#if U_PLATFORM_HAS_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0)
/**
* \file
U_CFUNC const char* U_EXPORT2
uprv_detectWindowsTimeZone();
-#endif /* U_PLATFORM_HAS_WIN32_API */
+#endif /* U_PLATFORM_HAS_WIN32_API && (U_PLATFORM_HAS_WINUWP_API == 0) */
#endif /* __WINTZ */
# Keep the following in sync with the version - see common/unicode/uvernum.h
U_ICUDATA_NAME=icudt59
##############################################################################
+!IF "$(UWP)" == "UWP"
+U_ICUDATA_NAME=icudt
+!ENDIF
U_ICUDATA_ENDIAN_SUFFIX=l
UNICODE_VERSION=9.0
ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll
# This is the same place that all of the other ICU DLLs go (the code-containing DLLs)
# The lib file for the data DLL goes in $(DLL_OUTPUT)/../lib/
#
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
-DLL_OUTPUT=$(ICUP)\bin64
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
+DLL_OUTPUT=$(ICUP)\binARM$(UWP)
+!ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
+DLL_OUTPUT=$(ICUP)\bin64$(UWP)
+!ELSE IF "$(UWP)" == "UWP"
+DLL_OUTPUT=$(ICUP)\bin32$(UWP)
!ELSE
-DLL_OUTPUT=$(ICUP)\bin
+DLL_OUTPUT=$(ICUP)\bin$(UWP)
!ENDIF
#
# Directory under which all of the ICU data building tools live.
#
ICUTOOLS=$(ICUP)\source\tools
+!MESSAGE ICU tools path is $(ICUTOOLS)
+
+#
+# TOOLS CFG PATH
+# ARM needs to use one of the other tools, so make sure to get an usable cfg path
+# Since tools, particularly pkggen, have architecture built-in, we made x64 on
+# Windows be machine-independent and use those tools.
+#
+CFGTOOLS=$(CFG)
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
+CFGTOOLS=x64\Release
+!ENDIF
+!MESSAGE ICU tools CFG subpath is $(CFGTOOLS)
# The current ICU tools need to be in the path first.
-!IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
-PATH = $(ICUP)\bin64;$(PATH)
-ICUPBIN=$(ICUP)\bin64
-!ELSE
+# x86 uses x86, x64 and arm use x64
+!IF "$(CFG)" == "x86\Release" || "$(CFG)" == "x86\Debug"
PATH = $(ICUP)\bin;$(PATH)
ICUPBIN=$(ICUP)\bin
+!ELSE
+PATH = $(ICUP)\bin64;$(PATH)
+ICUPBIN=$(ICUP)\bin64
!ENDIF
# Common defines for both ways of building ICU's data library.
COMMON_ICUDATA_DEPENDENCIES="$(ICUPBIN)\pkgdata.exe" "$(ICUTMP)\icudata.res" "$(ICUP)\source\stubdata\stubdatabuilt.txt"
COMMON_ICUDATA_ARGUMENTS=-f -e $(U_ICUDATA_NAME) -v $(ICU_PACKAGE_MODE) -c -p $(ICUPKG) -T "$(ICUTMP)" -L $(U_ICUDATA_NAME) -d "$(ICUBLD_PKG)" -s .
+!IF "$(UWP)" == "UWP"
+COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -u
+!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
+COMMON_ICUDATA_ARGUMENTS=$(COMMON_ICUDATA_ARGUMENTS) -a
+!ENDIF
+!ENDIF
#############################################################################
#
ALL : GODATA "$(ICU_LIB_TARGET)" "$(TESTDATAOUT)\testdata.dat"
@echo All targets are up to date
+!IF "$(UWP)" == "UWP"
+ @if not exist "$(ICUMAKE)\..\..\commondata\" mkdir "$(ICUMAKE)\..\..\commondata\"
+ copy "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat" "$(ICUMAKE)\..\..\commondata\"
+!ENDIF
+
# The core Unicode properties files (uprops.icu, ucase.icu, ubidi.icu)
# are hardcoded in the common DLL and therefore not included in the data package any more.
# They are not built by default but need to be built for ICU4J data and for getting the .c source files
DEBUGUTILITIESDATA_SRC=DebugUtilitiesData.java
# Build DebugUtilitiesData.java
-"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFG)"}gentest.exe
+"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)" : {"$(ICUTOOLS)\gentest\$(CFGTOOLS)"}gentest.exe
if not exist "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)" mkdir "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
- "$(ICUTOOLS)\gentest\$(CFG)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
+ "$(ICUTOOLS)\gentest\$(CFGTOOLS)\gentest" -j -d"$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)"
ICU4J_DATA="$(ICUOUT)\icu4j\icudata.jar" "$(ICUOUT)\icu4j\testdata.jar" "$(ICUOUT)\icu4j\src\$(DEBUGUTILITIESDATA_DIR)\$(DEBUGUTILITIESDATA_SRC)"
#
# testdata - nmake will invoke pkgdata, which will create testdata.dat
#
-"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe
+"$(TESTDATAOUT)\testdata.dat": "$(TESTDATA)\*" "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu" $(TRANSLIT_RES_FILES) $(MISC_FILES) $(RB_FILES) {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe
@cd "$(TESTDATA)"
@echo building testdata...
- nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFG) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"
+ nmake /nologo /f "$(TESTDATA)\testdata.mak" TESTDATA=. ICUTOOLS="$(ICUTOOLS)" ICUPBIN="$(ICUPBIN)" ICUP="$(ICUP)" CFG=$(CFGTOOLS) TESTDATAOUT="$(TESTDATAOUT)" TESTDATABLD="$(TESTDATABLD)"
#invoke pkgdata for ICU common data
# pkgdata will drop all output files (.dat, .dll, .lib) into the target (ICUBLD_PKG) directory.
)
<<KEEP
-@erase "$(ICU_LIB_TARGET)"
+ @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"
copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)"
-@erase "$(U_ICUDATA_NAME).dll"
copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
# RBBI .brk file generation.
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\rules}.txt.brk:
@echo Creating $@
- @"$(ICUTOOLS)\genbrk\$(CFG)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"
+ @"$(ICUTOOLS)\genbrk\$(CFGTOOLS)\genbrk" -c -r $< -o $@ -d"$(ICUBLD_PKG)" -i "$(ICUBLD_PKG)"
#RBBI .dict file generation.
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries}.txt.dict:
@echo Creating $@
- @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --uchars $< "$(ICUBLD_PKG)\$@"
+ @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --uchars $< "$(ICUBLD_PKG)\$@"
$(ICUBRK)\thaidict.dict:
@echo Creating $(ICUBRK)\thaidict.dict
- @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"
+ @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e00 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\thaidict.txt "$(ICUBLD_PKG)\$(ICUBRK)\thaidict.dict"
$(ICUBRK)\laodict.dict:
@echo Creating $(ICUBRK)\laodict.dict
- @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"
+ @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x0e80 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\laodict.txt "$(ICUBLD_PKG)\$(ICUBRK)\laodict.dict"
$(ICUBRK)\burmesedict.dict:
@echo Creating $(ICUBRK)\burmesedict.dict
- @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"
+ @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1000 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\burmesedict.txt "$(ICUBLD_PKG)\$(ICUBRK)\burmesedict.dict"
$(ICUBRK)\khmerdict.dict:
@echo Creating $(ICUBRK)\khmerdict.dict
- @"$(ICUTOOLS)\gendict\$(CFG)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"
+ @"$(ICUTOOLS)\gendict\$(CFGTOOLS)\gendict" -c --bytes --transform offset-0x1780 $(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)\dictionaries\khmerdict.txt "$(ICUBLD_PKG)\$(ICUBRK)\khmerdict.dict"
!IFNDEF ICUDATA_SOURCE_ARCHIVE
# Rule for creating converters
$(CNV_FILES): $(UCM_SOURCE)
@echo Building Charset Conversion table $(@B)
- @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
+ @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
!ENDIF
!IFDEF BUILD_SPECIAL_CNV_FILES
$(CNV_FILES_SPECIAL): $(UCM_SOURCE_SPECIAL)
@echo Building Special Charset Conversion table $(@B)
- @"$(ICUTOOLS)\makeconv\$(CFG)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
+ @"$(ICUTOOLS)\makeconv\$(CFGTOOLS)\makeconv" -c --ignore-siso-check -d"$(ICUBLD_PKG)" $(ICUSRCDATA_RELATIVE_PATH)\$(ICUUCM)\$(@B).ucm
!ENDIF
# Batch inference rule for creating miscellaneous resource files
# way, remove the -q.
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUMISC2)}.txt.res::
@echo Making Miscellaneous Resource Bundle files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -q -d"$(ICUBLD_PKG)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -q -d"$(ICUBLD_PKG)" $<
# Inference rule for creating resource bundle files
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC)}.txt.res::
@echo Making Locale Resource Bundle files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\$(ICULOC) -k -d"$(ICUBLD_PKG)" $<
# copy the locales/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)" .\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\curr}.txt{curr}.res::
@echo Making currency display name files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\curr -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\curr" $<
# copy the curr/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\curr" .\curr\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\lang}.txt{lang}.res::
@echo Making language/script display name files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\lang -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\lang" $<
# copy the lang/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\lang" .\lang\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\region}.txt{region}.res::
@echo Making region display name files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\region -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\region" $<
# copy the region/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\region" .\region\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\zone}.txt{zone}.res::
@echo Making time zone display name files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\zone -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\zone" $<
# copy the zone/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\zone" .\zone\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\unit}.txt{unit}.res::
@echo Making unit display name files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" --usePoolBundle $(ICUSRCDATA_RELATIVE_PATH)\unit -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\unit" $<
# copy the unit/pool.res file from the source folder to the build output folder
# and swap it to native endianness
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\unit" .\unit\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUCOL)}.txt{$(ICUCOL)}.res::
@echo Making Collation files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUCOL)" $<
$(ICUCOL)\res_index.res:
@echo Generating <<$(ICUCOL)\res_index.txt
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUCOL)" .\$(ICUCOL)\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICURBNF)}.txt{$(ICURBNF)}.res::
@echo Making RBNF files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICURBNF)" $<
$(ICURBNF)\res_index.res:
@echo Generating <<$(ICURBNF)\res_index.txt
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICURBNF)" .\$(ICURBNF)\res_index.txt
$(ICUBRK)\res_index.res:
@echo Generating <<$(ICUBRK)\res_index.txt
}
}
<<KEEP
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -d"$(ICUBLD_PKG)\$(ICUBRK)" .\$(ICUBRK)\res_index.txt
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUBRK)}.txt{$(ICUBRK)}.res::
@echo Making Break Iterator Resource files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUBRK)" $<
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUTRNS)}.txt{$(ICUTRNS)}.res::
@echo Making Transliterator files
- @"$(ICUTOOLS)\genrb\$(CFG)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<
+ @"$(ICUTOOLS)\genrb\$(CFGTOOLS)\genrb" -k -i "$(ICUBLD_PKG)" -d"$(ICUBLD_PKG)\$(ICUTRNS)" $<
# DLL version information
@rc.exe /i "..\..\..\..\common" /r /fo $@ $**
# Targets for converters
-"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFG)\gencnval.exe"
+"$(ICUBLD_PKG)\cnvalias.icu" : {"$(ICUSRCDATA)\$(ICUUCM)"}\convrtrs.txt "$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval.exe"
@echo Creating data file for Converter Aliases
- @"$(ICUTOOLS)\gencnval\$(CFG)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"
+ @"$(ICUTOOLS)\gencnval\$(CFGTOOLS)\gencnval" -d "$(ICUBLD_PKG)" "$(ICUSRCDATA)\$(ICUUCM)\convrtrs.txt"
# Targets for prebuilt Unicode data
"$(ICUBLD_PKG)\pnames.icu": $(ICUSRCDATA_RELATIVE_PATH)\in\pnames.icu
# Stringprep .spp file generation.
{$(ICUSRCDATA_RELATIVE_PATH)\$(ICUSPREP)}.txt.spp:
@echo Creating $@
- @"$(ICUTOOLS)\gensprep\$(CFG)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)
+ @"$(ICUTOOLS)\gensprep\$(CFGTOOLS)\gensprep" -s $(<D) -d "$(ICUBLD_PKG)" -b $(@B) -m "$(ICUUNIDATA)" -u 3.2.0 $(<F)
# Confusables .cfu file generation
# Can't use an inference rule because two .txt source files combine to produce a single .cfu output file
-"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFG)\gencfu.exe"
+"$(ICUBLD_PKG)\confusables.cfu": "$(ICUUNIDATA)\confusables.txt" "$(ICUUNIDATA)\confusablesWholeScript.txt" "$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu.exe"
@echo Creating $@
- @"$(ICUTOOLS)\gencfu\$(CFG)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"
+ @"$(ICUTOOLS)\gencfu\$(CFGTOOLS)\gencfu" -c -r "$(ICUUNIDATA)\confusables.txt" -w "$(ICUUNIDATA)\confusablesWholeScript.txt" -o $@ -i "$(ICUBLD_PKG)"
!IFDEF ICUDATA_ARCHIVE
-"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFG)\icupkg.exe"
- "$(ICUTOOLS)\icupkg\$(CFG)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"
+"$(ICUDATA_SOURCE_ARCHIVE)": CREATE_DIRS $(ICUDATA_ARCHIVE) "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg.exe"
+ "$(ICUTOOLS)\icupkg\$(CFGTOOLS)\icupkg" -t$(U_ICUDATA_ENDIAN_SUFFIX) "$(ICUDATA_ARCHIVE)" "$(ICUDATA_SOURCE_ARCHIVE)"
!ENDIF
# Dependencies on the tools for the batch inference rules
!IFNDEF ICUDATA_SOURCE_ARCHIVE
-$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe
+$(UCM_SOURCE) : {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe
!IFDEF BUILD_SPECIAL_CNV_FILES
-$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFG)"}makeconv.exe
+$(UCM_SOURCE_SPECIAL): {"$(ICUTOOLS)\makeconv\$(CFGTOOLS)"}makeconv.exe
!ENDIF
# This used to depend on "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"
# This data is now hard coded as a part of the library.
# See Jitterbug 4497 for details.
-$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFG)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"
+$(MISC_SOURCE) $(RB_FILES) $(CURR_FILES) $(LANG_FILES) $(REGION_FILES) $(ZONE_FILES) $(UNIT_FILES) $(COL_COL_FILES) $(RBNF_RES_FILES) $(BRK_RES_FILES) $(TRANSLIT_RES_FILES): {"$(ICUTOOLS)\genrb\$(CFGTOOLS)"}genrb.exe "$(ICUBLD_PKG)\$(ICUCOL)\ucadata.icu"
# This used to depend on "$(ICUBLD_PKG)\pnames.icu" "$(ICUBLD_PKG)\uprops.icu" "$(ICUBLD_PKG)\ucase.icu" "$(ICUBLD_PKG)\ubidi.icu"
# These are now hardcoded in ICU4C and only loaded in ICU4J.
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release clean</NMakeCleanCommandLine>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug clean</NMakeCleanCommandLine>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release clean</NMakeCleanCommandLine>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
- <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
- <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug clean</NMakeCleanCommandLine>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|ARM">
+ <Configuration>Debug</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Arm">
+ <Configuration>Release</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B1D53358-37BD-48BC-B27C-68BAF1E78508}</ProjectGuid>
+ <Keyword>MakeFileProj</Keyword>
+ <DefaultLanguage>en-US</DefaultLanguage>
+ <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+ <AppContainerApplication>true</AppContainerApplication>
+ <ApplicationType>Windows Store</ApplicationType>
+ <WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
+ <ApplicationTypeRevision>10.0</ApplicationTypeRevision>
+ <ConfigurationType>Makefile</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\tmp\x86\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\tmp\x86\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\tmp\x64\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\tmp\x64\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\tmp\arm\</OutDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\tmp\arm\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\data\build\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\data\build\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\data\build\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\data\build\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\data\build\</IntDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\data\build\</IntDir>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Release UWP=UWP clean</NMakeCleanCommandLine>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x86\Debug UWP=UWP clean</NMakeCleanCommandLine>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Release UWP=UWP clean</NMakeCleanCommandLine>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=x64\Debug UWP=UWP clean</NMakeCleanCommandLine>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Release UWP=UWP clean</NMakeCleanCommandLine>
+ <NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP</NMakeBuildCommandLine>
+ <NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean all</NMakeReBuildCommandLine>
+ <NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">NMAKE /f makedata.mak ICUMAKE="$(ProjectDir)\" CFG=ARM\Debug UWP=UWP clean</NMakeCleanCommandLine>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <BuildLog>
+ <Path>.\out\tmp\x86\ReleaseUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <BuildLog>
+ <Path>.\out\tmp\x86\DebugUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <BuildLog>
+ <Path>.\out\tmp\x64\ReleaseUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <BuildLog>
+ <Path>.\out\tmp\x64\DebugUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <BuildLog>
+ <Path>.\out\tmp\arm\ReleaseUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <BuildLog>
+ <Path>.\out\tmp\arm\DebugUWPBuildLog.html</Path>
+ </BuildLog>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <None Include="brkitr\brkfiles.mk" />
+ <None Include="coll\colfiles.mk" />
+ <None Include="makedata.mak" />
+ <None Include="misc\miscfiles.mk" />
+ <None Include="rbnf\rbnffiles.mk" />
+ <None Include="locales\resfiles.mk" />
+ <None Include="..\test\testdata\testdata.mak" />
+ <None Include="translit\trnsfiles.mk" />
+ <None Include="..\test\testdata\tstfiles.mk" />
+ <None Include="mappings\ucmcore.mk" />
+ <None Include="mappings\ucmebcdic.mk" />
+ <None Include="mappings\ucmfiles.mk" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include=".\makedata.vcxproj">
+ <Project>{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|ARM">
+ <Configuration>Debug</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|ARM">
+ <Configuration>Release</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{6786C051-383B-47E0-9E82-B8B994E06A25}</ProjectGuid>
+ <Keyword>DynamicLibrary</Keyword>
+ <DefaultLanguage>en-US</DefaultLanguage>
+ <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+ <AppContainerApplication>true</AppContainerApplication>
+ <ApplicationType>Windows Store</ApplicationType>
+ <WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
+ <ApplicationTypeRevision>10.0</ApplicationTypeRevision>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v140</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <Midl>
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </Midl>
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\include;..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <!-- U_HIDE_DRAFT_API & U_HIDE_DEPRECATED_API -->
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;U_ATTRIBUTE_DEPRECATED=;_CRT_SECURE_NO_DEPRECATE;U_I18N_IMPLEMENTATION;U_PLATFORM_USES_ONLY_WIN32_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
+ <CompileAsWinRT>false</CompileAsWinRT>
+ <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>U_DISABLE_RENAMING=1;U_PLATFORM_HAS_WINUWP_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateWindowsMetadata>false</GenerateWindowsMetadata>
+ <RandomizedBaseAddress>true</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TurnOffAssemblyGeneration>true</TurnOffAssemblyGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <Optimization>Disabled</Optimization>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <BufferSecurityCheck>true</BufferSecurityCheck>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
+ <Midl>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>WIN64;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Platform)'=='ARM'">
+ <Midl>
+ <TargetEnvironment>ARM</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <PreprocessorDefinitions>ARM;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ClCompile>
+ <Link>
+ <TargetMachine>MachineARM</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib32uwp\icuin.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x86\ReleaseUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin32uwp\icuin.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib32uwp\icuin.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib32uwp\icuin.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\lib32uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib32uwp\icuind.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x86\DebugUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x86\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x86\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x86\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin32uwp\icuind.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib32uwp\icuind.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib32uwp\icuind.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\lib32uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib64uwp\icuin.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x64\ReleaseUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin64uwp\icuin.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib64uwp\icuin.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib64uwp\icuin.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\lib64uwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TypeLibraryName>.\..\..\lib64uwp\icuind.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\x64\DebugUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\x64\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\x64\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\x64\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\bin64uwp\icuind.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\lib64uwp\icuind.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\lib64uwp\icuind.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\lib64uwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <Midl>
+ <TypeLibraryName>.\..\..\libARMuwp\icuin.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\ARM\ReleaseUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\ARM\ReleaseUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\ARM\ReleaseUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\ARM\ReleaseUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\binARMuwp\icuin.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\libARMuwp\icuin.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\libARMuwp\icuin.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\libARMuwp\icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <Midl>
+ <TypeLibraryName>.\..\..\libARMuwp\icuind.tlb</TypeLibraryName>
+ </Midl>
+ <ClCompile>
+ <PrecompiledHeaderOutputFile>.\ARM\DebugUWP/i18n.pch</PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\ARM\DebugUWP/</AssemblerListingLocation>
+ <ObjectFileName>.\ARM\DebugUWP/</ObjectFileName>
+ <ProgramDataBaseFileName>.\ARM\DebugUWP/</ProgramDataBaseFileName>
+ </ClCompile>
+ <Link>
+ <OutputFile>..\..\binARMuwp\icuind.dll</OutputFile>
+ <ProgramDatabaseFile>.\..\..\libARMuwp\icuind.pdb</ProgramDatabaseFile>
+ <ImportLibrary>..\..\libARMuwp\icuind.lib</ImportLibrary>
+ <AdditionalDependencies>..\..\libARMuwp\icuucd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="region.cpp" />
+ <ClCompile Include="uregion.cpp" />
+ <ClCompile Include="alphaindex.cpp" />
+ <ClCompile Include="bocsu.cpp" />
+ <ClCompile Include="coleitr.cpp" />
+ <ClCompile Include="coll.cpp" />
+ <ClCompile Include="collation.cpp" />
+ <ClCompile Include="collationbuilder.cpp" />
+ <ClCompile Include="collationcompare.cpp" />
+ <ClCompile Include="collationdata.cpp" />
+ <ClCompile Include="collationdatabuilder.cpp" />
+ <ClCompile Include="collationdatareader.cpp" />
+ <ClCompile Include="collationdatawriter.cpp" />
+ <ClCompile Include="collationfastlatin.cpp" />
+ <ClCompile Include="collationfastlatinbuilder.cpp" />
+ <ClCompile Include="collationfcd.cpp" />
+ <ClCompile Include="collationiterator.cpp" />
+ <ClCompile Include="collationkeys.cpp" />
+ <ClCompile Include="collationroot.cpp" />
+ <ClCompile Include="collationrootelements.cpp" />
+ <ClCompile Include="collationruleparser.cpp" />
+ <ClCompile Include="collationsets.cpp" />
+ <ClCompile Include="collationsettings.cpp" />
+ <ClCompile Include="collationtailoring.cpp" />
+ <ClCompile Include="collationweights.cpp" />
+ <ClCompile Include="rulebasedcollator.cpp" />
+ <ClCompile Include="search.cpp" />
+ <ClCompile Include="sortkey.cpp" />
+ <ClCompile Include="stsearch.cpp" />
+ <ClCompile Include="tzfmt.cpp" />
+ <ClCompile Include="tzgnames.cpp" />
+ <ClCompile Include="tznames.cpp" />
+ <ClCompile Include="tznames_impl.cpp" />
+ <ClCompile Include="ucol.cpp" />
+ <ClCompile Include="ucol_res.cpp" />
+ <ClCompile Include="ucol_sit.cpp" />
+ <ClCompile Include="ucoleitr.cpp" />
+ <ClCompile Include="affixpatternparser.cpp" />
+ <ClCompile Include="decimfmtimpl.cpp" />
+ <ClCompile Include="digitaffix.cpp" />
+ <ClCompile Include="digitaffixesandpadding.cpp" />
+ <ClCompile Include="digitformatter.cpp" />
+ <ClCompile Include="digitgrouping.cpp" />
+ <ClCompile Include="digitinterval.cpp" />
+ <ClCompile Include="pluralaffix.cpp" />
+ <ClCompile Include="precision.cpp" />
+ <ClCompile Include="smallintformatter.cpp" />
+ <ClCompile Include="valueformatter.cpp" />
+ <ClCompile Include="visibledigits.cpp" />
+ <ClCompile Include="uitercollationiterator.cpp" />
+ <ClCompile Include="usearch.cpp" />
+ <ClCompile Include="astro.cpp" />
+ <ClCompile Include="basictz.cpp" />
+ <ClCompile Include="buddhcal.cpp" />
+ <ClCompile Include="calendar.cpp" />
+ <ClCompile Include="cecal.cpp" />
+ <ClCompile Include="chnsecal.cpp" />
+ <ClCompile Include="choicfmt.cpp" />
+ <ClCompile Include="compactdecimalformat.cpp" />
+ <ClCompile Include="coptccal.cpp" />
+ <ClCompile Include="curramt.cpp" />
+ <ClCompile Include="currfmt.cpp" />
+ <ClCompile Include="currpinf.cpp" />
+ <ClCompile Include="currunit.cpp" />
+ <ClCompile Include="dangical.cpp" />
+ <ClCompile Include="datefmt.cpp" />
+ <ClCompile Include="dayperiodrules.cpp" />
+ <ClCompile Include="dcfmtsym.cpp" />
+ <ClCompile Include="decContext.cpp" />
+ <ClCompile Include="decfmtst.cpp" />
+ <ClCompile Include="decimalformatpattern.cpp" />
+ <ClCompile Include="decimfmt.cpp" />
+ <ClCompile Include="decNumber.cpp" />
+ <ClCompile Include="digitlst.cpp" />
+ <ClCompile Include="dtfmtsym.cpp" />
+ <ClCompile Include="dtitvfmt.cpp" />
+ <ClCompile Include="dtitvinf.cpp" />
+ <ClCompile Include="dtptngen.cpp" />
+ <ClCompile Include="dtrule.cpp" />
+ <ClCompile Include="ethpccal.cpp" />
+ <ClCompile Include="fmtable.cpp" />
+ <ClCompile Include="fmtable_cnv.cpp" />
+ <ClCompile Include="format.cpp" />
+ <ClCompile Include="fphdlimp.cpp" />
+ <ClCompile Include="fpositer.cpp" />
+ <ClCompile Include="gender.cpp" />
+ <ClCompile Include="gregocal.cpp" />
+ <ClCompile Include="gregoimp.cpp" />
+ <ClCompile Include="hebrwcal.cpp" />
+ <ClCompile Include="indiancal.cpp" />
+ <ClCompile Include="islamcal.cpp" />
+ <ClCompile Include="japancal.cpp" />
+ <ClCompile Include="measfmt.cpp" />
+ <ClCompile Include="measunit.cpp" />
+ <ClCompile Include="measure.cpp" />
+ <ClCompile Include="msgfmt.cpp" />
+ <ClCompile Include="nfrs.cpp" />
+ <ClCompile Include="nfrule.cpp" />
+ <ClCompile Include="nfsubs.cpp" />
+ <ClCompile Include="numfmt.cpp" />
+ <ClCompile Include="numsys.cpp" />
+ <ClCompile Include="olsontz.cpp" />
+ <ClCompile Include="persncal.cpp" />
+ <ClCompile Include="plurfmt.cpp" />
+ <ClCompile Include="plurrule.cpp" />
+ <ClCompile Include="quantityformatter.cpp" />
+ <ClCompile Include="rbnf.cpp" />
+ <ClCompile Include="rbtz.cpp" />
+ <ClCompile Include="reldatefmt.cpp">
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <ClCompile Include="reldtfmt.cpp" />
+ <ClCompile Include="scientificnumberformatter.cpp" />
+ <ClCompile Include="sharedbreakiterator.cpp" />
+ <ClCompile Include="selfmt.cpp" />
+ <ClCompile Include="simpletz.cpp" />
+ <ClCompile Include="scriptset.cpp" />
+ <ClCompile Include="smpdtfmt.cpp" />
+ <ClCompile Include="smpdtfst.cpp" />
+ <ClCompile Include="standardplural.cpp" />
+ <ClCompile Include="taiwncal.cpp" />
+ <ClCompile Include="timezone.cpp" />
+ <ClCompile Include="tmunit.cpp" />
+ <ClCompile Include="tmutamt.cpp" />
+ <ClCompile Include="tmutfmt.cpp" />
+ <ClCompile Include="tzrule.cpp" />
+ <ClCompile Include="tztrans.cpp" />
+ <ClCompile Include="ucal.cpp" />
+ <ClCompile Include="udat.cpp" />
+ <ClCompile Include="udateintervalformat.cpp" />
+ <ClCompile Include="udatpg.cpp" />
+ <ClCompile Include="ufieldpositer.cpp" />
+ <ClCompile Include="ulocdata.cpp" />
+ <ClCompile Include="umsg.cpp" />
+ <ClCompile Include="unum.cpp" />
+ <ClCompile Include="unumsys.cpp" />
+ <ClCompile Include="upluralrules.cpp" />
+ <ClCompile Include="utf16collationiterator.cpp" />
+ <ClCompile Include="utf8collationiterator.cpp" />
+ <ClCompile Include="utmscale.cpp" />
+ <ClCompile Include="vtzone.cpp" />
+ <ClCompile Include="vzone.cpp" />
+ <ClCompile Include="windtfmt.cpp">
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <ClCompile Include="winnmfmt.cpp">
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <ClCompile Include="wintzimpl.cpp">
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <ClCompile Include="zonemeta.cpp" />
+ <ClCompile Include="zrule.cpp" />
+ <ClCompile Include="ztrans.cpp" />
+ <ClCompile Include="ucln_in.cpp">
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <ClCompile Include="regexcmp.cpp" />
+ <ClCompile Include="regeximp.cpp" />
+ <ClCompile Include="regexst.cpp" />
+ <ClCompile Include="regextxt.cpp" />
+ <ClCompile Include="rematch.cpp" />
+ <ClCompile Include="repattrn.cpp" />
+ <ClCompile Include="uregex.cpp" />
+ <ClCompile Include="uregexc.cpp" />
+ <ClCompile Include="anytrans.cpp" />
+ <ClCompile Include="brktrans.cpp" />
+ <ClCompile Include="casetrn.cpp" />
+ <ClCompile Include="cpdtrans.cpp" />
+ <ClCompile Include="esctrn.cpp" />
+ <ClCompile Include="funcrepl.cpp" />
+ <ClCompile Include="name2uni.cpp" />
+ <ClCompile Include="nortrans.cpp" />
+ <ClCompile Include="nultrans.cpp" />
+ <ClCompile Include="quant.cpp" />
+ <ClCompile Include="rbt.cpp" />
+ <ClCompile Include="rbt_data.cpp" />
+ <ClCompile Include="rbt_pars.cpp" />
+ <ClCompile Include="rbt_rule.cpp" />
+ <ClCompile Include="rbt_set.cpp" />
+ <ClCompile Include="remtrans.cpp" />
+ <ClCompile Include="strmatch.cpp" />
+ <ClCompile Include="strrepl.cpp" />
+ <ClCompile Include="titletrn.cpp" />
+ <ClCompile Include="tolowtrn.cpp" />
+ <ClCompile Include="toupptrn.cpp" />
+ <ClCompile Include="translit.cpp" />
+ <ClCompile Include="transreg.cpp" />
+ <ClCompile Include="tridpars.cpp" />
+ <ClCompile Include="unesctrn.cpp" />
+ <ClCompile Include="uni2name.cpp" />
+ <ClCompile Include="utrans.cpp" />
+ <ClCompile Include="csdetect.cpp" />
+ <ClCompile Include="csmatch.cpp" />
+ <ClCompile Include="csr2022.cpp" />
+ <ClCompile Include="csrecog.cpp" />
+ <ClCompile Include="csrmbcs.cpp" />
+ <ClCompile Include="csrsbcs.cpp" />
+ <ClCompile Include="csrucode.cpp" />
+ <ClCompile Include="csrutf8.cpp" />
+ <ClCompile Include="inputext.cpp" />
+ <ClCompile Include="ucsdet.cpp" />
+ <ClCompile Include="uspoof.cpp" />
+ <ClCompile Include="uspoof_build.cpp" />
+ <ClCompile Include="uspoof_conf.cpp" />
+ <ClCompile Include="uspoof_impl.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <CustomBuild Include="unicode\alphaindex.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="bocsu.h" />
+ <CustomBuild Include="unicode\coleitr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\coll.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\search.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\sortkey.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\stsearch.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tblcoll.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucol.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="affixpatternparser.h" />
+ <ClInclude Include="decimalformatpatternimpl.h" />
+ <ClInclude Include="decimfmtimpl.h" />
+ <ClInclude Include="digitaffix.h" />
+ <ClInclude Include="digitaffixesandpadding.h" />
+ <ClInclude Include="digitformatter.h" />
+ <ClInclude Include="digitgrouping.h" />
+ <ClInclude Include="digitinterval.h" />
+ <ClInclude Include="pluralaffix.h" />
+ <ClInclude Include="precision.h" />
+ <ClInclude Include="significantdigitinterval.h" />
+ <ClInclude Include="smallintformatter.h" />
+ <ClInclude Include="valueformatter.h" />
+ <ClInclude Include="visibledigits.h" />
+ <ClInclude Include="collation.h" />
+ <ClInclude Include="collationbuilder.h" />
+ <ClInclude Include="collationcompare.h" />
+ <ClInclude Include="collationdata.h" />
+ <ClInclude Include="collationdatabuilder.h" />
+ <ClInclude Include="collationdatareader.h" />
+ <ClInclude Include="collationdatawriter.h" />
+ <ClInclude Include="collationfastlatin.h" />
+ <ClInclude Include="collationfastlatinbuilder.h" />
+ <ClInclude Include="collationfcd.h" />
+ <ClInclude Include="collationiterator.h" />
+ <ClInclude Include="collationkeys.h" />
+ <ClInclude Include="collationroot.h" />
+ <ClInclude Include="collationrootelements.h" />
+ <ClInclude Include="collationruleparser.h" />
+ <ClInclude Include="collationsets.h" />
+ <ClInclude Include="collationsettings.h" />
+ <ClInclude Include="collationtailoring.h" />
+ <ClInclude Include="collationweights.h" />
+ <ClInclude Include="dayperiodrules.h" />
+ <ClInclude Include="dcfmtimp.h" />
+ <ClInclude Include="numsys_impl.h" />
+ <ClInclude Include="region_impl.h" />
+ <ClInclude Include="selfmtimpl.h" />
+ <ClInclude Include="tzgnames.h" />
+ <ClInclude Include="tznames_impl.h" />
+ <ClInclude Include="ucol_imp.h" />
+ <CustomBuild Include="unicode\ucoleitr.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\usearch.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tzfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tznames.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="uitercollationiterator.h" />
+ <CustomBuild Include="unicode\region.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uregion.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="usrchimp.h" />
+ <ClInclude Include="astro.h" />
+ <CustomBuild Include="unicode\basictz.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="buddhcal.h" />
+ <CustomBuild Include="unicode\calendar.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="cecal.h" />
+ <ClInclude Include="chnsecal.h" />
+ <CustomBuild Include="unicode\choicfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\compactdecimalformat.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="coptccal.h" />
+ <CustomBuild Include="unicode\curramt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="currfmt.h" />
+ <CustomBuild Include="unicode\currpinf.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\currunit.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="dangical.h" />
+ <CustomBuild Include="unicode\datefmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\dcfmtsym.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="decContext.h" />
+ <ClInclude Include="decfmtst.h" />
+ <ClInclude Include="decimalformatpattern.h" />
+ <CustomBuild Include="unicode\decimfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="decNumber.h" />
+ <ClInclude Include="decNumberLocal.h" />
+ <ClInclude Include="digitlst.h" />
+ <ClInclude Include="dt_impl.h" />
+ <CustomBuild Include="unicode\dtfmtsym.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="dtitv_impl.h" />
+ <CustomBuild Include="unicode\dtitvfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\dtitvinf.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\dtptngen.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="dtptngen_impl.h" />
+ <CustomBuild Include="unicode\dtrule.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="ethpccal.h" />
+ <CustomBuild Include="unicode\fieldpos.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\fmtable.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uformattable.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\format.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="fphdlimp.h" />
+ <CustomBuild Include="unicode\fpositer.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\gender.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ugender.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\gregocal.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="gregoimp.h" />
+ <ClInclude Include="hebrwcal.h" />
+ <ClInclude Include="indiancal.h" />
+ <ClInclude Include="islamcal.h" />
+ <ClInclude Include="japancal.h" />
+ <CustomBuild Include="unicode\measfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\measunit.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\measure.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\msgfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="msgfmt_impl.h" />
+ <ClInclude Include="nfrlist.h" />
+ <ClInclude Include="nfrs.h" />
+ <ClInclude Include="nfrule.h" />
+ <ClInclude Include="nfsubs.h" />
+ <CustomBuild Include="unicode\numfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\numsys.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="olsontz.h" />
+ <ClInclude Include="persncal.h" />
+ <CustomBuild Include="unicode\plurfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\plurrule.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="plurrule_impl.h" />
+ <ClInclude Include="quantityformatter.h" />
+ <ClInclude Include="sharedbreakiterator.h" />
+ <ClInclude Include="sharedcalendar.h" />
+ <ClInclude Include="shareddateformatsymbols.h" />
+ <ClInclude Include="sharednumberformat.h" />
+ <ClInclude Include="sharedpluralrules.h" />
+ <CustomBuild Include="unicode\rbnf.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\rbtz.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\reldatefmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="reldtfmt.h" />
+ <CustomBuild Include="unicode\scientificnumberformatter.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\selfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\simpletz.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\smpdtfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="smpdtfst.h" />
+ <ClInclude Include="standardplural.h" />
+ <ClInclude Include="taiwncal.h" />
+ <CustomBuild Include="unicode\timezone.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tmunit.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tmutamt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tmutfmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tzrule.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\tztrans.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ucal.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\udat.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\udateintervalformat.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\udatpg.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ufieldpositer.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ulocdata.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\umsg.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="umsg_imp.h" />
+ <CustomBuild Include="unicode\unum.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\unumsys.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\upluralrules.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\ureldatefmt.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utmscale.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\vtzone.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="utf16collationiterator.h" />
+ <ClInclude Include="utf8collationiterator.h" />
+ <ClInclude Include="vzone.h" />
+ <ClInclude Include="windtfmt.h" />
+ <ClInclude Include="winnmfmt.h" />
+ <ClInclude Include="wintzimpl.h" />
+ <ClInclude Include="zonemeta.h" />
+ <ClInclude Include="zrule.h" />
+ <ClInclude Include="ztrans.h" />
+ <ClInclude Include="ucln_in.h" />
+ <CustomBuild Include="unicode\regex.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="regexcmp.h" />
+ <ClInclude Include="regexcst.h" />
+ <ClInclude Include="regeximp.h" />
+ <ClInclude Include="regexst.h" />
+ <ClInclude Include="regextxt.h" />
+ <CustomBuild Include="unicode\uregex.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="anytrans.h" />
+ <ClInclude Include="brktrans.h" />
+ <ClInclude Include="casetrn.h" />
+ <ClInclude Include="cpdtrans.h" />
+ <ClInclude Include="esctrn.h" />
+ <ClInclude Include="funcrepl.h" />
+ <ClInclude Include="name2uni.h" />
+ <ClInclude Include="nortrans.h" />
+ <ClInclude Include="nultrans.h" />
+ <ClInclude Include="quant.h" />
+ <ClInclude Include="rbt.h" />
+ <ClInclude Include="rbt_data.h" />
+ <ClInclude Include="rbt_pars.h" />
+ <ClInclude Include="rbt_rule.h" />
+ <ClInclude Include="rbt_set.h" />
+ <ClInclude Include="remtrans.h" />
+ <ClInclude Include="strmatch.h" />
+ <ClInclude Include="strrepl.h" />
+ <ClInclude Include="titletrn.h" />
+ <ClInclude Include="tolowtrn.h" />
+ <ClInclude Include="toupptrn.h" />
+ <CustomBuild Include="unicode\translit.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="transreg.h" />
+ <ClInclude Include="tridpars.h" />
+ <ClInclude Include="unesctrn.h" />
+ <ClInclude Include="uni2name.h" />
+ <CustomBuild Include="unicode\unirepl.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\utrans.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="csdetect.h" />
+ <ClInclude Include="csmatch.h" />
+ <ClInclude Include="csr2022.h" />
+ <ClInclude Include="csrecog.h" />
+ <ClInclude Include="csrmbcs.h" />
+ <ClInclude Include="csrsbcs.h" />
+ <ClInclude Include="csrucode.h" />
+ <ClInclude Include="csrutf8.h" />
+ <ClInclude Include="inputext.h" />
+ <CustomBuild Include="unicode\ucsdet.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <CustomBuild Include="unicode\uspoof.h">
+ <Command>copy "%(FullPath)" ..\..\include\unicode
+</Command>
+ <Outputs>..\..\include\unicode\%(Filename)%(Extension);%(Outputs)</Outputs>
+ </CustomBuild>
+ <ClInclude Include="scriptset.h" />
+ <ClInclude Include="uspoof_conf.h" />
+ <ClInclude Include="uspoof_impl.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="i18n.rc" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\common\common UWP.vcxproj">
+ <Project>{C10CF34B-3F79-430E-AD38-5A32DC0589C2}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
\ No newline at end of file
#include "windtfmt.h"
#include "wintzimpl.h"
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
return result;
}
+// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
+// be factored out into a common helper for both.
+static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+
+ // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
+ int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
+
+ if (U_SUCCESS(status))
+ {
+ // Need it to be UTF-16, not 8-bit
+ // TODO: This seems like a good thing for a helper
+ wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+ int i;
+ for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
+ {
+ if (asciiBCP47Tag[i] == '\0')
+ {
+ break;
+ }
+ else
+ {
+ // normally just copy the character
+ bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
+ }
+ }
+
+ // Ensure it's null terminated
+ if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
+ {
+ bcp47Tag[i] = L'\0';
+ }
+ else
+ {
+ // Ran out of room.
+ bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
+ }
+
+
+ wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
+
+ // Note: On Windows versions below 10, there is no support for locale name aliases.
+ // This means that it will fail for locales where ICU has a completely different
+ // name (like ku vs ckb), and it will also not work for alternate sort locale
+ // names like "de-DE-u-co-phonebk".
+
+ // TODO: We could add some sort of exception table for cases like ku vs ckb.
+
+ int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
+
+ if (length > 0)
+ {
+ *buffer = new UnicodeString(windowsLocaleName);
+ }
+ else
+ {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ }
+ return status;
+}
+
// TODO: Range-check timeStyle, dateStyle
Win32DateFormat::Win32DateFormat(DateFormat::EStyle timeStyle, DateFormat::EStyle dateStyle, const Locale &locale, UErrorCode &status)
- : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID()
+ : DateFormat(), fDateTimeMsg(NULL), fTimeStyle(timeStyle), fDateStyle(dateStyle), fLocale(locale), fZoneID(), fWindowsLocaleName(nullptr)
{
if (U_SUCCESS(status)) {
- fLCID = locale.getLCID();
+ GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
+ // Note: In the previous code, it would look up the LCID for the locale, and if
+ // the locale was not recognized then it would get an LCID of 0, which is a
+ // synonym for LOCALE_USER_DEFAULT on Windows.
+ // If the above method fails, then fWindowsLocaleName will remain as nullptr, and
+ // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
+ // LOCALE_USER_DEFAULT.
+
fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
uprv_memset(fTZI, 0, sizeof(TIME_ZONE_INFORMATION));
adoptCalendar(Calendar::createInstance(locale, status));
// delete fCalendar;
uprv_free(fTZI);
delete fDateTimeMsg;
+ delete fWindowsLocaleName;
}
Win32DateFormat &Win32DateFormat::operator=(const Win32DateFormat &other)
this->fTimeStyle = other.fTimeStyle;
this->fDateStyle = other.fDateStyle;
this->fLocale = other.fLocale;
- this->fLCID = other.fLCID;
// this->fCalendar = other.fCalendar->clone();
this->fZoneID = other.fZoneID;
this->fTZI = NEW_ARRAY(TIME_ZONE_INFORMATION, 1);
*this->fTZI = *other.fTZI;
+ this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+
return *this;
}
void Win32DateFormat::formatDate(const SYSTEMTIME *st, UnicodeString &appendTo) const
{
- int result;
+ int result=0;
wchar_t stackBuffer[STACK_BUFFER_SIZE];
wchar_t *buffer = stackBuffer;
+ const wchar_t *localeName = nullptr;
- result = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE);
+ if (fWindowsLocaleName != nullptr)
+ {
+ localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+ }
+
+ result = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, STACK_BUFFER_SIZE, NULL);
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0);
+ int newLength = GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, NULL, 0, NULL);
buffer = NEW_ARRAY(wchar_t, newLength);
- GetDateFormatW(fLCID, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength);
+
+ GetDateFormatEx(localeName, dfFlags[fDateStyle - kDateOffset], st, NULL, buffer, newLength, NULL);
}
}
int result;
wchar_t stackBuffer[STACK_BUFFER_SIZE];
wchar_t *buffer = stackBuffer;
+ const wchar_t *localeName = nullptr;
- result = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
+ if (fWindowsLocaleName != nullptr)
+ {
+ localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+ }
+
+ result = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetTimeFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, NULL, 0);
+ int newLength = GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, NULL, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
- GetDateFormatW(fLCID, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
+
+ GetTimeFormatEx(localeName, tfFlags[fTimeStyle], st, NULL, buffer, newLength);
}
}
* <pre>
* . Base* polymorphic_pointer = createPolymorphicObject();
* . if (polymorphic_pointer->getDynamicClassID() ==
- * . erived::getStaticClassID()) ...
+ * . derived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
*/
DateFormat::EStyle fTimeStyle;
DateFormat::EStyle fDateStyle;
Locale fLocale;
- int32_t fLCID;
UnicodeString fZoneID;
TIME_ZONE_INFORMATION *fTZI;
+
+ UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
};
U_NAMESPACE_END
#include "uassert.h"
#include "locmap.h"
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
* end in ";0" then the return value should be multiplied by 10.
* (e.g. "3" => 30, "3;2" => 320)
*/
-static UINT getGrouping(const char *grouping)
+static UINT getGrouping(const wchar_t *grouping)
{
UINT g = 0;
- const char *s;
+ const wchar_t *s;
- for (s = grouping; *s != '\0'; s += 1) {
- if (*s > '0' && *s < '9') {
- g = g * 10 + (*s - '0');
- } else if (*s != ';') {
+ for (s = grouping; *s != L'\0'; s += 1) {
+ if (*s > L'0' && *s < L'9') {
+ g = g * 10 + (*s - L'0');
+ } else if (*s != L';') {
break;
}
}
- if (*s != '0') {
+ if (*s != L'0') {
g *= 10;
}
return g;
}
-static void getNumberFormat(NUMBERFMTW *fmt, int32_t lcid)
+static void getNumberFormat(NUMBERFMTW *fmt, const wchar_t *windowsLocaleName)
{
- char buf[10];
+ wchar_t buf[10];
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_IDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
- GetLocaleInfoA(lcid, LOCALE_SGROUPING, buf, 10);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SGROUPING, (LPWSTR)buf, 10);
fmt->Grouping = getGrouping(buf);
fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
- GetLocaleInfoW(lcid, LOCALE_SDECIMAL, fmt->lpDecimalSep, 6);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SDECIMAL, fmt->lpDecimalSep, 6);
fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
- GetLocaleInfoW(lcid, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_STHOUSAND, fmt->lpThousandSep, 6);
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGNUMBER, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
}
static void freeNumberFormat(NUMBERFMTW *fmt)
}
}
-static void getCurrencyFormat(CURRENCYFMTW *fmt, int32_t lcid)
+static void getCurrencyFormat(CURRENCYFMTW *fmt, const wchar_t *windowsLocaleName)
{
- char buf[10];
+ wchar_t buf[10];
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRDIGITS, (LPWSTR) &fmt->NumDigits, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ILZERO, (LPWSTR) &fmt->LeadingZero, sizeof(UINT));
- GetLocaleInfoA(lcid, LOCALE_SMONGROUPING, buf, sizeof(buf));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONGROUPING, (LPWSTR)buf, sizeof(buf));
fmt->Grouping = getGrouping(buf);
fmt->lpDecimalSep = NEW_ARRAY(wchar_t, 6);
- GetLocaleInfoW(lcid, LOCALE_SMONDECIMALSEP, fmt->lpDecimalSep, 6);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONDECIMALSEP, fmt->lpDecimalSep, 6);
fmt->lpThousandSep = NEW_ARRAY(wchar_t, 6);
- GetLocaleInfoW(lcid, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SMONTHOUSANDSEP, fmt->lpThousandSep, 6);
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
- GetLocaleInfoW(lcid, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_INEGCURR, (LPWSTR) &fmt->NegativeOrder, sizeof(UINT));
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_RETURN_NUMBER|LOCALE_ICURRENCY, (LPWSTR) &fmt->PositiveOrder, sizeof(UINT));
fmt->lpCurrencySymbol = NEW_ARRAY(wchar_t, 8);
- GetLocaleInfoW(lcid, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
+ GetLocaleInfoEx(windowsLocaleName, LOCALE_SCURRENCY, (LPWSTR) fmt->lpCurrencySymbol, 8);
}
static void freeCurrencyFormat(CURRENCYFMTW *fmt)
}
}
+// TODO: This is copied in both winnmfmt.cpp and windtfmt.cpp, but really should
+// be factored out into a common helper for both.
+static UErrorCode GetEquivalentWindowsLocaleName(const Locale& locale, UnicodeString** buffer)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ char asciiBCP47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+
+ // Convert from names like "en_CA" and "de_DE@collation=phonebook" to "en-CA" and "de-DE-u-co-phonebk".
+ int32_t length = uloc_toLanguageTag(locale.getName(), asciiBCP47Tag, UPRV_LENGTHOF(asciiBCP47Tag), FALSE, &status);
+
+ if (U_SUCCESS(status))
+ {
+ // Need it to be UTF-16, not 8-bit
+ // TODO: This seems like a good thing for a helper
+ wchar_t bcp47Tag[LOCALE_NAME_MAX_LENGTH] = {};
+ int i;
+ for (i = 0; i < UPRV_LENGTHOF(bcp47Tag); i++)
+ {
+ if (asciiBCP47Tag[i] == '\0')
+ {
+ break;
+ }
+ else
+ {
+ // normally just copy the character
+ bcp47Tag[i] = static_cast<wchar_t>(asciiBCP47Tag[i]);
+ }
+ }
+
+ // Ensure it's null terminated
+ if (i < (UPRV_LENGTHOF(bcp47Tag) - 1))
+ {
+ bcp47Tag[i] = L'\0';
+ }
+ else
+ {
+ // Ran out of room.
+ bcp47Tag[UPRV_LENGTHOF(bcp47Tag) - 1] = L'\0';
+ }
+
+
+ wchar_t windowsLocaleName[LOCALE_NAME_MAX_LENGTH] = {};
+
+ // Note: On Windows versions below 10, there is no support for locale name aliases.
+ // This means that it will fail for locales where ICU has a completely different
+ // name (like ku vs ckb), and it will also not work for alternate sort locale
+ // names like "de-DE-u-co-phonebk".
+
+ // TODO: We could add some sort of exception table for cases like ku vs ckb.
+
+ int length = ResolveLocaleName(bcp47Tag, windowsLocaleName, UPRV_LENGTHOF(windowsLocaleName));
+
+ if (length > 0)
+ {
+ *buffer = new UnicodeString(windowsLocaleName);
+ }
+ else
+ {
+ status = U_UNSUPPORTED_ERROR;
+ }
+ }
+ return status;
+}
+
Win32NumberFormat::Win32NumberFormat(const Locale &locale, UBool currency, UErrorCode &status)
- : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE)
+ : NumberFormat(), fCurrency(currency), fFormatInfo(NULL), fFractionDigitsSet(FALSE), fWindowsLocaleName(nullptr)
{
if (!U_FAILURE(status)) {
fLCID = locale.getLCID();
+ GetEquivalentWindowsLocaleName(locale, &fWindowsLocaleName);
+ // Note: In the previous code, it would look up the LCID for the locale, and if
+ // the locale was not recognized then it would get an LCID of 0, which is a
+ // synonym for LOCALE_USER_DEFAULT on Windows.
+ // If the above method fails, then fWindowsLocaleName will remain as nullptr, and
+ // then we will pass nullptr to API GetLocaleInfoEx, which is the same as passing
+ // LOCALE_USER_DEFAULT.
+
// Resolve actual locale to be used later
UErrorCode tmpsts = U_ZERO_ERROR;
char tmpLocID[ULOC_FULLNAME_CAPACITY];
fLocale = Locale((const char*)tmpLocID);
}
+ const wchar_t *localeName = nullptr;
+
+ if (fWindowsLocaleName != nullptr)
+ {
+ localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+ }
+
fFormatInfo = (FormatInfo*)uprv_malloc(sizeof(FormatInfo));
if (fCurrency) {
- getCurrencyFormat(&fFormatInfo->currency, fLCID);
+ getCurrencyFormat(&fFormatInfo->currency, localeName);
} else {
- getNumberFormat(&fFormatInfo->number, fLCID);
+ getNumberFormat(&fFormatInfo->number, localeName);
}
}
}
uprv_free(fFormatInfo);
}
+ delete fWindowsLocaleName;
}
Win32NumberFormat &Win32NumberFormat::operator=(const Win32NumberFormat &other)
this->fLocale = other.fLocale;
this->fLCID = other.fLCID;
this->fFractionDigitsSet = other.fFractionDigitsSet;
+ this->fWindowsLocaleName = other.fWindowsLocaleName == NULL ? NULL : new UnicodeString(*other.fWindowsLocaleName);
+
+ const wchar_t *localeName = nullptr;
+
+ if (fWindowsLocaleName != nullptr)
+ {
+ localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+ }
if (fCurrency) {
freeCurrencyFormat(&fFormatInfo->currency);
- getCurrencyFormat(&fFormatInfo->currency, fLCID);
+ getCurrencyFormat(&fFormatInfo->currency, localeName);
} else {
freeNumberFormat(&fFormatInfo->number);
- getNumberFormat(&fFormatInfo->number, fLCID);
+ getNumberFormat(&fFormatInfo->number, localeName);
}
return *this;
formatInfo = *fFormatInfo;
buffer[0] = 0x0000;
+ const wchar_t *localeName = nullptr;
+
+ if (fWindowsLocaleName != nullptr)
+ {
+ localeName = reinterpret_cast<const wchar_t*>(toOldUCharPtr(fWindowsLocaleName->getTerminatedBuffer()));
+ }
+
if (fCurrency) {
if (fFractionDigitsSet) {
formatInfo.currency.NumDigits = (UINT) numDigits;
formatInfo.currency.Grouping = 0;
}
- result = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
+ result = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
DWORD lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, NULL, 0);
+ int newLength = GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, NULL, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
- GetCurrencyFormatW(fLCID, 0, nBuffer, &formatInfo.currency, buffer, newLength);
+ GetCurrencyFormatEx(localeName, 0, nBuffer, &formatInfo.currency, buffer, newLength);
}
}
} else {
formatInfo.number.Grouping = 0;
}
- result = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
+ result = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, STACK_BUFFER_SIZE);
if (result == 0) {
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
- int newLength = GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, NULL, 0);
+ int newLength = GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, NULL, 0);
buffer = NEW_ARRAY(wchar_t, newLength);
buffer[0] = 0x0000;
- GetNumberFormatW(fLCID, 0, nBuffer, &formatInfo.number, buffer, newLength);
+ GetNumberFormatEx(localeName, 0, nBuffer, &formatInfo.number, buffer, newLength);
}
}
}
* <pre>
* . Base* polymorphic_pointer = createPolymorphicObject();
* . if (polymorphic_pointer->getDynamicClassID() ==
- * . erived::getStaticClassID()) ...
+ * . derived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
*/
FormatInfo *fFormatInfo;
UBool fFractionDigitsSet;
+ UnicodeString* fWindowsLocaleName; // Stores the equivalent Windows locale name.
};
U_NAMESPACE_END
#include "uassert.h"
#include "cmemory.h"
+#ifndef WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
+#endif
# define VC_EXTRALEAN
# define NOUSER
# define NOSERVICE
static int32_t lcidCount = 0;
static int32_t lcidMax = 0;
+// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
BOOL CALLBACK EnumLocalesProc(LPSTR lpLocaleString)
{
char localeID[ULOC_FULLNAME_CAPACITY];
return TRUE;
}
+// TODO: Note that this test will skip locale names and only hit locales with assigned LCIDs
Win32Utilities::LCIDRecord *Win32Utilities::getLocales(int32_t &localeCount)
{
LCIDRecord *result;
LIBNAME,
QUIET,
WITHOUT_ASSEMBLY,
- PDS_BUILD
+ PDS_BUILD,
+ UWP_BUILD,
+ UWP_ARM_BUILD
};
/* This sets the modes that are available */
/*18*/ UOPTION_DEF( "libname", 'L', UOPT_REQUIRES_ARG),
/*19*/ UOPTION_DEF( "quiet", 'q', UOPT_NO_ARG),
/*20*/ UOPTION_DEF( "without-assembly", 'w', UOPT_NO_ARG),
- /*21*/ UOPTION_DEF( "zos-pds-build", 'z', UOPT_NO_ARG)
+ /*21*/ UOPTION_DEF("zos-pds-build", 'z', UOPT_NO_ARG),
+ /*22*/ UOPTION_DEF("windows-uwp-build", 'u', UOPT_NO_ARG),
+ /*23*/ UOPTION_DEF("windows-uwp-arm-build", 'a', UOPT_NO_ARG)
};
/* This enum and the following char array should be kept in sync. */
"Specify a version when packaging in dll or static mode",
"Add package to all file names if not present",
"Library name to build (if different than package name)",
- "Quite mode. (e.g. Do not output a readme file for static libraries)",
+ "Quiet mode. (e.g. Do not output a readme file for static libraries)",
"Build the data without assembly code",
- "Build PDS dataset (zOS build only)"
+ "Build PDS dataset (zOS build only)",
+ "Build for Universal Windows Platform (Windows build only)",
+ "Set DLL machine type for UWP to target windows ARM (Windows UWP build only)"
};
const char *progname = "PKGDATA";
#ifdef WINDOWS_WITH_MSVC
#define LINK_CMD "link.exe /nologo /release /out:"
-#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO /base:0x4ad00000 /implib:"
+#define LINK_FLAGS "/DLL /NOENTRY /MANIFEST:NO /implib:"
+#ifdef _WIN64
+#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /DYNAMICBASE /APPCONTAINER "
+#else
+#define LINK_EXTRA_UWP_FLAGS "/NXCOMPAT /SAFESEH /DYNAMICBASE /APPCONTAINER /MACHINE:X86"
+#endif
+#define LINK_EXTRA_UWP_FLAGS_ARM "/NXCOMPAT /DYNAMICBASE /APPCONTAINER /MACHINE:ARM"
+#define LINK_EXTRA_NO_UWP_FLAGS "/base:0x4ad00000 "
#define LIB_CMD "LIB.exe /nologo /out:"
#define LIB_FILE "icudt.lib"
#define LIB_EXT UDATA_LIB_SUFFIX
return 0;
}
- sprintf(cmd, "%s\"%s\" %s\"%s\" \"%s\" %s",
- LINK_CMD,
- dllFilePath,
- LINK_FLAGS,
- libFilePath,
- gencFilePath,
- resFilePath
- );
+ char *extraFlags = "";
+#ifdef WINDOWS_WITH_MSVC
+ if (options[UWP_BUILD].doesOccur)
+ {
+ if (options[UWP_ARM_BUILD].doesOccur)
+ {
+ extraFlags = LINK_EXTRA_UWP_FLAGS_ARM;
+ }
+ else
+ {
+ extraFlags = LINK_EXTRA_UWP_FLAGS;
+ }
+ }
+ else
+ {
+ extraFlags = LINK_EXTRA_NO_UWP_FLAGS;
+ }
+#endif
+ sprintf(cmd, "%s\"%s\" %s %s\"%s\" \"%s\" %s",
+ LINK_CMD,
+ dllFilePath,
+ extraFlags,
+ LINK_FLAGS,
+ libFilePath,
+ gencFilePath,
+ resFilePath
+ );
}
result = runCommand(cmd, TRUE);
/* _M_IA64 should be defined in windows.h */
# if defined(_M_IA64)
*pCPU=IMAGE_FILE_MACHINE_IA64;
+ *pBits = 64;
# elif defined(_M_AMD64)
- *pCPU=IMAGE_FILE_MACHINE_AMD64;
+// link.exe does not really care about the .obj machine type and this will
+// allow us to build a dll for both ARM & x64 with an amd64 built tool
+// ARM is same as x64 except for first 2 bytes of object file
+ *pCPU = IMAGE_FILE_MACHINE_UNKNOWN;
+ // *pCPU = IMAGE_FILE_MACHINE_ARMNT; // If we wanted to be explicit
+ // *pCPU = IMAGE_FILE_MACHINE_AMD64; // We would use one of these names
+ *pBits = 64; // Doesn't seem to be used for anything interesting?
# else
- *pCPU=IMAGE_FILE_MACHINE_I386;
+ *pCPU=IMAGE_FILE_MACHINE_I386; // We would use one of these names
+ *pBits = 32;
# endif
- *pBits= *pCPU==IMAGE_FILE_MACHINE_I386 ? 32 : 64;
*pIsBigEndian=FALSE;
#else
# error "Unknown platform for CAN_GENERATE_OBJECTS."
/* deal with options, files and the entry point name */
getArchitecture(&cpu, &bits, &makeBigEndian, optMatchArch);
- printf("genccode: --match-arch cpu=%hu bits=%hu big-endian=%d\n", cpu, bits, makeBigEndian);
+ if (optMatchArch)
+ {
+ printf("genccode: --match-arch cpu=%hu bits=%hu big-endian=%d\n", cpu, bits, makeBigEndian);
+ }
+ else
+ {
+ printf("genccode: using architecture cpu=%hu bits=%hu big-endian=%d\n", cpu, bits, makeBigEndian);
+ }
#if U_PLATFORM_HAS_WIN32_API
if(cpu==IMAGE_FILE_MACHINE_I386) {
entryOffset=1;