diff --git a/icu4c/source/common/common.vcxproj b/icu4c/source/common/common.vcxproj
index 1fdf3bda895c..56616215f982 100644
--- a/icu4c/source/common/common.vcxproj
+++ b/icu4c/source/common/common.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -48,6 +49,11 @@
icudt.lib;%(AdditionalDependencies)
.\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
+
+ icudt.lib;%(AdditionalDependencies)
+ .\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
@@ -61,6 +67,10 @@
.\..\..\$(IcuLibOutputDir)\icuucd.pdb
..\..\$(IcuLibOutputDir)\icuucd.lib
+
+ .\..\..\$(IcuLibOutputDir)\icuucd.pdb
+ ..\..\$(IcuLibOutputDir)\icuucd.lib
+
@@ -73,6 +83,10 @@
.\..\..\$(IcuLibOutputDir)\icuuc.pdb
..\..\$(IcuLibOutputDir)\icuuc.lib
+
+ .\..\..\$(IcuLibOutputDir)\icuuc.pdb
+ ..\..\$(IcuLibOutputDir)\icuuc.lib
+
diff --git a/icu4c/source/common/common_uwp.vcxproj b/icu4c/source/common/common_uwp.vcxproj
index 2230c8df3c66..b4356cfc59d7 100644
--- a/icu4c/source/common/common_uwp.vcxproj
+++ b/icu4c/source/common/common_uwp.vcxproj
@@ -37,10 +37,12 @@
{C10CF34B-3F79-430E-AD38-5A32DC0589C2}
DynamicLibrary
+ StaticLibrary
en-US
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -108,6 +110,17 @@
icudt.lib;onecore.lib;%(AdditionalDependencies)
+
+ true
+ false
+ true
+
+
+ true
+ vccorlib.lib;msvcrt.lib
+
+ icudt.lib;%(AdditionalDependencies)
+
@@ -128,6 +141,12 @@
.\..\..\$(IcuLibOutputDir)\icuuc.pdb
..\..\$(IcuLibOutputDir)\icuuc.lib
+
+ true
+ vccorlib.lib;msvcrt.lib;vcruntime.lib;%(AdditionalDependencies)
+ .\..\..\$(IcuLibOutputDir)\icuuc.pdb
+ ..\..\$(IcuLibOutputDir)\icuuc.lib
+
@@ -151,6 +170,11 @@
.\..\..\$(IcuLibOutputDir)\icuucd.pdb
..\..\$(IcuLibOutputDir)\icuucd.lib
+
+ true
+ .\..\..\$(IcuLibOutputDir)\icuucd.pdb
+ ..\..\$(IcuLibOutputDir)\icuucd.lib
+
@@ -164,6 +188,10 @@
.\..\..\lib;%(AdditionalLibraryDirectories)
+
+
+ .\..\..\lib;%(AdditionalLibraryDirectories)
+
@@ -178,6 +206,11 @@
.\..\..\lib64;%(AdditionalLibraryDirectories)
+
+ MachineX64
+
+ .\..\..\lib64;%(AdditionalLibraryDirectories)
+
@@ -192,6 +225,11 @@
.\..\..\libARM;%(AdditionalLibraryDirectories)
+
+ MachineARM
+
+ .\..\..\libARM;%(AdditionalLibraryDirectories)
+
@@ -206,6 +244,11 @@
.\..\..\libARM64;%(AdditionalLibraryDirectories)
+
+ MachineARM64
+
+ .\..\..\libARM64;%(AdditionalLibraryDirectories)
+
diff --git a/icu4c/source/data/makedata.mak b/icu4c/source/data/makedata.mak
index f29d07b64f46..e9fb7e84006e 100644
--- a/icu4c/source/data/makedata.mak
+++ b/icu4c/source/data/makedata.mak
@@ -20,7 +20,11 @@ U_ICUDATA_NAME=icudt78
!ENDIF
U_ICUDATA_ENDIAN_SUFFIX=l
UNICODE_VERSION=17.0
+!IF "$(ICU_PACKAGE_MODE)"=="-m static"
+ICU_LIB_TARGET=$(LIB_OUTPUT)\icudt.lib
+!ELSE
ICU_LIB_TARGET=$(DLL_OUTPUT)\$(U_ICUDATA_NAME).dll
+!ENDIF
# ICUMAKE
# Must be provided by whoever runs this makefile.
@@ -107,14 +111,19 @@ ICUDATA=$(ICUP)\source\data
#
!IF "$(CFG)" == "ARM\Release" || "$(CFG)" == "ARM\Debug"
DLL_OUTPUT=$(ICUP)\binARM$(UWP)
+LIB_OUTPUT=$(ICUP)\libARM$(UWP)
!ELSE IF "$(CFG)" == "ARM64\Release" || "$(CFG)" == "ARM64\Debug"
DLL_OUTPUT=$(ICUP)\binARM64$(UWP)
+LIB_OUTPUT=$(ICUP)\libARM64$(UWP)
!ELSE IF "$(CFG)" == "x64\Release" || "$(CFG)" == "x64\Debug"
DLL_OUTPUT=$(ICUP)\bin64$(UWP)
+LIB_OUTPUT=$(ICUP)\lib64$(UWP)
!ELSE IF "$(UWP)" == "UWP"
DLL_OUTPUT=$(ICUP)\bin32$(UWP)
+LIB_OUTPUT=$(ICUP)\lib32$(UWP)
!ELSE
DLL_OUTPUT=$(ICUP)\bin$(UWP)
+LIB_OUTPUT=$(ICUP)\lib$(UWP)
!ENDIF
!MESSAGE ICU data DLL_OUTPUT path is $(DLL_OUTPUT)
@@ -431,8 +440,8 @@ icu4j-data-install :
cd "$(ICUBLD_PKG)"
"$(ICUPBIN)\icupkg" -x * --list "$(ICUDATA_SOURCE_ARCHIVE)" > "$(ICUTMP)\icudata.lst"
"$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) "$(ICUTMP)\icudata.lst"
- copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)"
- -@erase "$(U_ICUDATA_NAME).dll"
+ @if "$(ICU_PACKAGE_MODE)"=="-m dll" ( copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" ) else ( copy "s$(U_ICUDATA_NAME).lib" "$(ICU_LIB_TARGET)" )
+ -@if "$(ICU_PACKAGE_MODE)"=="-m dll" ( erase "$(U_ICUDATA_NAME).dll" ) else ( erase "s$(U_ICUDATA_NAME).lib" )
copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
-@erase "$(ICUTMP)\$(ICUPKG).dat"
!ELSE
@@ -441,9 +450,9 @@ icu4j-data-install :
cd "$(ICUBLD_PKG)"
"$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst
-@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"
+ @if "$(ICU_PACKAGE_MODE)"=="-m dll" ( if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)" ) else ( if not exist "$(LIB_OUTPUT)" mkdir "$(LIB_OUTPUT)" )
+ @if "$(ICU_PACKAGE_MODE)"=="-m dll" ( copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" ) else ( copy "s$(U_ICUDATA_NAME).lib" "$(ICU_LIB_TARGET)" )
+ -@if "$(ICU_PACKAGE_MODE)"=="-m dll" ( erase "$(U_ICUDATA_NAME).dll" ) else ( erase "s$(U_ICUDATA_NAME).lib" )
copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
-@erase "$(ICUTMP)\$(ICUPKG).dat"
!ENDIF
@@ -453,9 +462,9 @@ icu4j-data-install :
cd "$(ICUBLD_PKG)"
"$(ICUPBIN)\pkgdata" $(COMMON_ICUDATA_ARGUMENTS) $(ICUTMP)\icudata.lst
-@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"
+ @if "$(ICU_PACKAGE_MODE)"=="-m dll" ( if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)" ) else ( if not exist "$(LIB_OUTPUT)" mkdir "$(LIB_OUTPUT)" )
+ @if "$(ICU_PACKAGE_MODE)"=="-m dll" ( copy "$(U_ICUDATA_NAME).dll" "$(ICU_LIB_TARGET)" ) else ( copy "s$(U_ICUDATA_NAME).lib" "$(ICU_LIB_TARGET)" )
+ -@if "$(ICU_PACKAGE_MODE)"=="-m dll" ( erase "$(U_ICUDATA_NAME).dll" ) else ( erase "s$(U_ICUDATA_NAME).lib" )
copy "$(ICUTMP)\$(ICUPKG).dat" "$(ICUOUT)\$(U_ICUDATA_NAME)$(U_ICUDATA_ENDIAN_SUFFIX).dat"
-@erase "$(ICUTMP)\$(ICUPKG).dat"
@echo "timestamp" > $(ARM_CROSSBUILD_TS)
diff --git a/icu4c/source/i18n/i18n.vcxproj b/icu4c/source/i18n/i18n.vcxproj
index 9d340f6b5c84..a11736221cb5 100644
--- a/icu4c/source/i18n/i18n.vcxproj
+++ b/icu4c/source/i18n/i18n.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -50,6 +51,9 @@
.\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
+ .\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
@@ -63,6 +67,10 @@
.\..\..\$(IcuLibOutputDir)\icuind.pdb
..\..\$(IcuLibOutputDir)\icuind.lib
+
+ .\..\..\$(IcuLibOutputDir)\icuind.pdb
+ ..\..\$(IcuLibOutputDir)\icuind.lib
+
@@ -76,6 +84,10 @@
.\..\..\$(IcuLibOutputDir)\icuin.pdb
..\..\$(IcuLibOutputDir)\icuin.lib
+
+ .\..\..\$(IcuLibOutputDir)\icuin.pdb
+ ..\..\$(IcuLibOutputDir)\icuin.lib
+
diff --git a/icu4c/source/i18n/i18n_uwp.vcxproj b/icu4c/source/i18n/i18n_uwp.vcxproj
index 49f8531774fe..f9d8e7e83e03 100644
--- a/icu4c/source/i18n/i18n_uwp.vcxproj
+++ b/icu4c/source/i18n/i18n_uwp.vcxproj
@@ -37,10 +37,12 @@
{6786C051-383B-47E0-9E82-B8B994E06A25}
DynamicLibrary
+ StaticLibrary
en-US
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -99,6 +101,14 @@
true
+
+ true
+ false
+ true
+
+
+ true
+
@@ -114,6 +124,9 @@
true
+
+ true
+
@@ -132,6 +145,9 @@
true
+
+ true
+
@@ -190,6 +206,10 @@
..\..\lib32uwp\icuin.lib
..\..\lib32uwp\icuuc.lib;%(AdditionalDependencies)
+
+ .\..\..\lib32uwp\icuin.pdb
+ ..\..\lib32uwp\icuin.lib
+
@@ -207,6 +227,10 @@
..\..\lib32uwp\icuind.lib
..\..\lib32uwp\icuucd.lib;%(AdditionalDependencies)
+
+ .\..\..\lib32uwp\icuind.pdb
+ ..\..\lib32uwp\icuind.lib
+
@@ -224,6 +248,10 @@
..\..\lib64uwp\icuin.lib
..\..\lib64uwp\icuuc.lib;%(AdditionalDependencies)
+
+ .\..\..\lib64uwp\icuin.pdb
+ ..\..\lib64uwp\icuin.lib
+
@@ -241,6 +269,10 @@
..\..\lib64uwp\icuind.lib
..\..\lib64uwp\icuucd.lib;%(AdditionalDependencies)
+
+ .\..\..\lib64uwp\icuind.pdb
+ ..\..\lib64uwp\icuind.lib
+
@@ -258,6 +290,10 @@
..\..\libARMuwp\icuin.lib
..\..\libARMuwp\icuuc.lib;%(AdditionalDependencies)
+
+ .\..\..\libARMuwp\icuin.pdb
+ ..\..\libARMuwp\icuin.lib
+
@@ -275,6 +311,10 @@
..\..\libARMuwp\icuind.lib
..\..\libARMuwp\icuucd.lib;%(AdditionalDependencies)
+
+ .\..\..\libARMuwp\icuind.pdb
+ ..\..\libARMuwp\icuind.lib
+
@@ -292,6 +332,10 @@
..\..\libARM64uwp\icuin.lib
..\..\libARM64uwp\icuuc.lib;%(AdditionalDependencies)
+
+ .\..\..\libARM64uwp\icuin.pdb
+ ..\..\libARM64uwp\icuin.lib
+
@@ -309,6 +353,10 @@
..\..\libARM64uwp\icuind.lib
..\..\libARM64uwp\icuucd.lib;%(AdditionalDependencies)
+
+ .\..\..\libARM64uwp\icuind.pdb
+ ..\..\libARM64uwp\icuind.lib
+
diff --git a/icu4c/source/io/io.vcxproj b/icu4c/source/io/io.vcxproj
index 44a6128863f5..18950aba9492 100644
--- a/icu4c/source/io/io.vcxproj
+++ b/icu4c/source/io/io.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -50,6 +51,9 @@
..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
+ ..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
@@ -64,6 +68,11 @@
..\..\$(IcuLibOutputDir)\icuiod.lib
icuucd.lib;icuind.lib;%(AdditionalDependencies)
+
+ true
+ ..\..\$(IcuLibOutputDir)\icuiod.pdb
+ ..\..\$(IcuLibOutputDir)\icuiod.lib
+
@@ -77,6 +86,10 @@
..\..\$(IcuLibOutputDir)\icuio.lib
icuuc.lib;icuin.lib;%(AdditionalDependencies)
+
+ ..\..\$(IcuLibOutputDir)\icuio.pdb
+ ..\..\$(IcuLibOutputDir)\icuio.lib
+
diff --git a/icu4c/source/layoutex/layoutex.vcxproj b/icu4c/source/layoutex/layoutex.vcxproj
index 27be3f1a3cb2..5aaff1f81c18 100644
--- a/icu4c/source/layoutex/layoutex.vcxproj
+++ b/icu4c/source/layoutex/layoutex.vcxproj
@@ -6,6 +6,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -61,6 +62,13 @@
..\..\lib\iculx.lib
+
+ .\..\..\lib;%(AdditionalLibraryDirectories)
+ .\..\..\lib\iculx.pdb
+
+
+ ..\..\lib\iculx.lib
+
@@ -86,6 +94,14 @@
..\..\lib\iculxd.lib
+
+ .\..\..\lib;%(AdditionalLibraryDirectories)
+ true
+ .\..\..\lib\iculxd.pdb
+
+
+ ..\..\lib\iculxd.lib
+
@@ -107,6 +123,11 @@
.\..\..\lib64\iculx.pdb
..\..\lib64\iculx.lib
+
+ .\..\..\lib64;%(AdditionalLibraryDirectories)
+ .\..\..\lib64\iculx.pdb
+ ..\..\lib64\iculx.lib
+
@@ -130,6 +151,12 @@
.\..\..\lib64\iculxd.pdb
..\..\lib64\iculxd.lib
+
+ .\..\..\lib64;%(AdditionalLibraryDirectories)
+ true
+ .\..\..\lib64\iculxd.pdb
+ ..\..\lib64\iculxd.lib
+
diff --git a/icu4c/source/stubdata/stubdata.vcxproj b/icu4c/source/stubdata/stubdata.vcxproj
index 0b2c61cb06b7..53424a0f60fa 100644
--- a/icu4c/source/stubdata/stubdata.vcxproj
+++ b/icu4c/source/stubdata/stubdata.vcxproj
@@ -5,6 +5,8 @@
DynamicLibrary
+ StaticLibrary
+ Utility
false
MultiByte
@@ -59,6 +61,13 @@
.\..\..\$(IcuLibOutputDir)\icudt.pdb
..\..\$(IcuLibOutputDir)\icudt.lib
+
+ true
+ true
+ true
+ .\..\..\$(IcuLibOutputDir)\icudt.pdb
+ ..\..\$(IcuLibOutputDir)\icudt.lib
+
diff --git a/icu4c/source/tools/ctestfw/ctestfw.vcxproj b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
index 49fb91a8e938..a089d4b2c6d4 100644
--- a/icu4c/source/tools/ctestfw/ctestfw.vcxproj
+++ b/icu4c/source/tools/ctestfw/ctestfw.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -44,6 +45,9 @@
..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
+ ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
@@ -57,6 +61,11 @@
.\..\..\..\$(IcuLibOutputDir)\icutestd.lib
icuucd.lib;icutud.lib;%(AdditionalDependencies)
+
+ .\..\..\..\$(IcuLibOutputDir)\icutestd.pdb
+ .\..\..\..\$(IcuLibOutputDir)\icutestd.lib
+ icutud.lib;%(AdditionalDependencies)
+
@@ -70,6 +79,11 @@
.\..\..\..\$(IcuLibOutputDir)\icutest.lib
icuuc.lib;icutu.lib;%(AdditionalDependencies)
+
+ .\..\..\..\$(IcuLibOutputDir)\icutest.pdb
+ .\..\..\..\$(IcuLibOutputDir)\icutest.lib
+ icutu.lib;%(AdditionalDependencies)
+
diff --git a/icu4c/source/tools/icuinfo/testplug.vcxproj b/icu4c/source/tools/icuinfo/testplug.vcxproj
index 426776592a90..62f8db7ca4ba 100644
--- a/icu4c/source/tools/icuinfo/testplug.vcxproj
+++ b/icu4c/source/tools/icuinfo/testplug.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -45,6 +46,9 @@
..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
+ ..\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)
+
@@ -59,6 +63,11 @@
..\..\..\$(IcuLibOutputDir)\testplugd.lib
icuucd.lib;icutud.lib;%(AdditionalDependencies)
+
+ true
+ ..\..\..\$(IcuLibOutputDir)\stestplugd.pdb
+ ..\..\..\$(IcuLibOutputDir)\stestplugd.lib
+
@@ -72,6 +81,10 @@
..\..\..\$(IcuLibOutputDir)\testplug.lib
icuuc.lib;icutu.lib;%(AdditionalDependencies)
+
+ ..\..\..\$(IcuLibOutputDir)\stestplug.pdb
+ ..\..\..\$(IcuLibOutputDir)\stestplug.lib
+
diff --git a/icu4c/source/tools/toolutil/toolutil.vcxproj b/icu4c/source/tools/toolutil/toolutil.vcxproj
index 538b27fe66a8..1b08b2e068e6 100644
--- a/icu4c/source/tools/toolutil/toolutil.vcxproj
+++ b/icu4c/source/tools/toolutil/toolutil.vcxproj
@@ -5,6 +5,7 @@
DynamicLibrary
+ StaticLibrary
false
MultiByte
@@ -45,6 +46,9 @@
icuucd.lib;icuind.lib;%(AdditionalDependencies)
+
+ icuucd.lib;icuind.lib;%(AdditionalDependencies)
+
@@ -55,6 +59,9 @@
icuuc.lib;icuin.lib;%(AdditionalDependencies)
+
+ icuuc.lib;icuin.lib;%(AdditionalDependencies)
+
@@ -67,6 +74,9 @@
..\..\..\lib;%(AdditionalLibraryDirectories)
+
+ ..\..\..\lib;%(AdditionalLibraryDirectories)
+
@@ -79,6 +89,12 @@
..\..\..\lib\icutu.lib
+
+ .\..\..\..\lib\icutu.pdb
+
+
+ ..\..\..\lib\icutu.lib
+
@@ -91,6 +107,12 @@
..\..\..\lib\icutud.lib
+
+ .\..\..\..\lib\icutud.pdb
+
+
+ ..\..\..\lib\icutud.lib
+
@@ -103,6 +125,9 @@
..\..\..\lib64;%(AdditionalLibraryDirectories)
+
+ ..\..\..\lib64;%(AdditionalLibraryDirectories)
+
@@ -116,6 +141,10 @@
.\..\..\..\lib64\icutu.pdb
..\..\..\lib64\icutu.lib
+
+ .\..\..\..\lib64\icutu.pdb
+ ..\..\..\lib64\icutu.lib
+
@@ -126,6 +155,10 @@
.\..\..\..\lib64\icutud.pdb
..\..\..\lib64\icutud.lib
+
+ .\..\..\..\lib64\icutud.pdb
+ ..\..\..\lib64\icutud.lib
+
@@ -137,6 +170,9 @@
.\..\..\..\libARM;%(AdditionalLibraryDirectories)
+
+ .\..\..\..\libARM;%(AdditionalLibraryDirectories)
+
@@ -147,6 +183,10 @@
.\..\..\..\libARM\icutu.pdb
..\..\..\libARM\icutu.lib
+
+ .\..\..\..\libARM\icutu.pdb
+ ..\..\..\libARM\icutu.lib
+
@@ -160,6 +200,10 @@
.\..\..\..\libARM\icutud.pdb
..\..\..\libARM\icutud.lib
+
+ .\..\..\..\libARM\icutud.pdb
+ ..\..\..\libARM\icutud.lib
+
@@ -171,6 +215,9 @@
.\..\..\..\libARM64;%(AdditionalLibraryDirectories)
+
+ .\..\..\..\libARM64;%(AdditionalLibraryDirectories)
+
@@ -181,6 +228,10 @@
.\..\..\..\libARM64\icutu.pdb
..\..\..\libARM64\icutu.lib
+
+ .\..\..\..\libARM64\icutu.pdb
+ ..\..\..\libARM64\icutu.lib
+
@@ -194,6 +245,10 @@
.\..\..\..\libARM64\icutud.pdb
..\..\..\libARM64\icutud.lib
+
+ .\..\..\..\libARM64\icutud.pdb
+ ..\..\..\libARM64\icutud.lib
+