scuffed-code/icu4c/source/allinone/Build.Windows.UWP.ProjectConfiguration.props
Jeff Genovy 408752ec49 ICU-20782 Enable Windows desktop ARM and ARM64 builds of ICU4C.
This enables "classic" desktop builds of ICU4C for both ARM (32-bit)
and ARM64 (64-bit) on Windows.

All but the two samples "cal" and "date" in the "allinone" project now
have ARM and ARM64 project configurations, and build for Windows Desktop
ARM/ARM64.

Note: In order to build the ARM/ARM64 data DLL, you need to first build
x64/Release, as the ARM/ARM build uses the x64 bits in order to be able
to cross-compile for ARM/ARM64. This allows for completely building
ARM/ARM64 binaries using only x64 hardware.

The ARM/ARM64 builds require using a newer version of the Windows SDK
than 8.1, so they have a separate WindowsTargetPlatformVersion which
uses Windows 10 SDK version 10.0.16299.0 (aka RS3), which is the first
version of the Windows SDK to support building ARM64 desktop applications.

In addition this also greatly cleans-up the ICU4C ".vcxproj" files, in
order to remove redundant parts, fix inconsistencies, and make them more
readable. This introduces two new variables in the shared `*.props`
files: `IcuBinOutputDir` and `IcuLibOutputDir` in order to further
reduce the amount of duplicated lines in the individual ".vcxproj"
files themselves.
2019-08-26 22:50:31 -07:00

64 lines
3.8 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html -->
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- This file is used to set common configuration options for all *_uwp projects. -->
<PropertyGroup>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
</PropertyGroup>
<!-- If not already set, then we will default to using the latest installed Windows 10 SDK version. -->
<PropertyGroup Condition="'$(WindowsTargetPlatformVersion)'==''">
<!-- Detect the SDK version. -->
<WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
<WindowsSdkInstallFolder_10 Condition="'$(WindowsSdkInstallFolder_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@InstallationFolder)</WindowsSdkInstallFolder_10>
<WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
<WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0@ProductVersion)</WindowsTargetPlatformVersion_10>
<!-- Sometimes the version in the registry has the '.0' suffix, and sometimes it doesn't. Check and add it. -->
<WindowsTargetPlatformVersion_10 Condition="'$(WindowsTargetPlatformVersion_10)' != '' and !$(WindowsTargetPlatformVersion_10.EndsWith('.0'))">$(WindowsTargetPlatformVersion_10).0</WindowsTargetPlatformVersion_10>
<!-- Set the default. -->
<WindowsTargetPlatformVersion>$(WindowsTargetPlatformVersion_10)</WindowsTargetPlatformVersion>
<!-- Set the minimum Win10 SDK version to TH1/RTM. -->
<WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<!-- The following import will set the PlatformToolset configuration. -->
<Import Project="..\allinone\Build.Windows.PlatformToolset.props" />
<!-- The following PropertyGroups are used to set the binary and lib output locations -->
<PropertyGroup Condition="'$(Platform)'=='Win32'">
<IcuBinOutputDir>bin32uwp</IcuBinOutputDir>
<IcuLibOutputDir>lib32uwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='x64'">
<IcuBinOutputDir>bin64uwp</IcuBinOutputDir>
<IcuLibOutputDir>lib64uwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM'">
<IcuBinOutputDir>binARMuwp</IcuBinOutputDir>
<IcuLibOutputDir>libARMuwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<IcuBinOutputDir>binARM64uwp</IcuBinOutputDir>
<IcuLibOutputDir>libARM64uwp</IcuLibOutputDir>
</PropertyGroup>
<ItemDefinitionGroup>
<Midl>
<PreprocessorDefinitions>
%(PreprocessorDefinitions)
U_PLATFORM_HAS_WINUWP_API=1;
</PreprocessorDefinitions>
</Midl>
<ClCompile>
<PreprocessorDefinitions>
%(PreprocessorDefinitions);
U_PLATFORM_HAS_WINUWP_API=1;
</PreprocessorDefinitions>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>
%(PreprocessorDefinitions)
U_PLATFORM_HAS_WINUWP_API=1;
</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
</Project>