Merge "Fix building for arm with Visual Studio 2013"

This commit is contained in:
Johann 2014-05-07 06:00:54 -07:00 committed by Gerrit Code Review
commit 3899315f05
2 changed files with 34 additions and 13 deletions

View File

@ -859,6 +859,13 @@ EOF
msvs_arch_dir=arm-msvs msvs_arch_dir=arm-msvs
disable_feature multithread disable_feature multithread
disable_feature unit_tests disable_feature unit_tests
vs_version=${tgt_cc##vs}
if [ $vs_version -ge 12 ]; then
# MSVC 2013 doesn't allow doing plain .exe projects for ARM,
# only "AppContainerApplication" which requires an AppxManifest.
# Therefore disable the examples, just build the library.
disable_feature examples
fi
;; ;;
rvct) rvct)
CC=armcc CC=armcc

View File

@ -292,6 +292,18 @@ generate_vcxproj() {
tag_content ProjectGuid "{${guid}}" tag_content ProjectGuid "{${guid}}"
tag_content RootNamespace ${name} tag_content RootNamespace ${name}
tag_content Keyword ManagedCProj tag_content Keyword ManagedCProj
if [ $vs_ver -ge 12 ] && [ "${platforms[0]}" = "ARM" ]; then
tag_content AppContainerApplication true
# The application type can be one of "Windows Store",
# "Windows Phone" or "Windows Phone Silverlight". The
# actual value doesn't matter from the libvpx point of view,
# since a static library built for one works on the others.
# The PlatformToolset field needs to be set in sync with this;
# for Windows Store and Windows Phone Silverlight it should be
# v120 while it should be v120_wp81 if the type is Windows Phone.
tag_content ApplicationType "Windows Store"
tag_content ApplicationTypeRevision 8.1
fi
close_tag PropertyGroup close_tag PropertyGroup
tag Import \ tag Import \
@ -324,18 +336,10 @@ generate_vcxproj() {
fi fi
fi fi
if [ "$vs_ver" = "12" ]; then if [ "$vs_ver" = "12" ]; then
if [ "$plat" = "ARM" ]; then # Setting a PlatformToolset indicating windows phone isn't
# Setting the wp80 toolchain automatically sets the # enough to build code for arm with MSVC 2013, one strictly
# WINAPI_FAMILY define, which is required for building # has to enable AppContainerApplication as well.
# code for arm with the windows headers. Alternatively, tag_content PlatformToolset v120
# one could add AppContainerApplication=true in the Globals
# section and add PrecompiledHeader=NotUsing and
# CompileAsWinRT=false in ClCompile and SubSystem=Console
# in Link.
tag_content PlatformToolset v120_wp80
else
tag_content PlatformToolset v120
fi
fi fi
tag_content CharacterSet Unicode tag_content CharacterSet Unicode
if [ "$config" = "Release" ]; then if [ "$config" = "Release" ]; then
@ -427,15 +431,25 @@ generate_vcxproj() {
if ${werror:-false}; then if ${werror:-false}; then
tag_content TreatWarningAsError true tag_content TreatWarningAsError true
fi fi
if [ $vs_ver -ge 11 ]; then
# We need to override the defaults for these settings
# if AppContainerApplication is set.
tag_content CompileAsWinRT false
tag_content PrecompiledHeader NotUsing
tag_content SDLCheck false
fi
close_tag ClCompile close_tag ClCompile
case "$proj_kind" in case "$proj_kind" in
exe) exe)
open_tag Link open_tag Link
if [ "$name" != "obj_int_extract" ]; then if [ "$name" != "obj_int_extract" ]; then
tag_content AdditionalDependencies "$curlibs" tag_content AdditionalDependencies "$curlibs;%(AdditionalDependencies)"
tag_content AdditionalLibraryDirectories "$libdirs;%(AdditionalLibraryDirectories)" tag_content AdditionalLibraryDirectories "$libdirs;%(AdditionalLibraryDirectories)"
fi fi
tag_content GenerateDebugInformation true tag_content GenerateDebugInformation true
# Console is the default normally, but if
# AppContainerApplication is set, we need to override it.
tag_content SubSystem Console
close_tag Link close_tag Link
;; ;;
dll) dll)