Commit feefd81b authored by Martin Storsjö's avatar Martin Storsjö
Browse files

msvs: Generate proper configurations for mixed platforms

Prior to 73c4e284, the generated .sln files didn't contain any
information about the different configurations when using .vcxproj
project files. The MSVS IDE was able to fill this in just fine when
loaded though.

When building for ARM, the obj_int_extract project still is built
for x86, in order for the build process to be able to use
obj_int_extract.exe.

Now that configuration info is generated, it breaks current ARM
setups, since the configurations generated by gen_msvs_sln.sh only
included configurations from the last parsed project file (as
mentioned in the comment).

In these setups, the MSVS IDE generated a third meta-platform, called
"Mixed Platforms". This meta-platform points to either ARM or
Win32 as platform in each of the individual projects.

When the MSVS IDE generated this automatically, it also included
the original ARM and Win32 platforms as separate choices, but these
can be omitted since they don't make sense.

Change-Id: Ie25226496f91af4bb1ad8eb9ae9ca5bfed0433d7
parent 47336afd
...@@ -72,15 +72,21 @@ parse_project() { ...@@ -72,15 +72,21 @@ parse_project() {
eval "${var}_name=$name" eval "${var}_name=$name"
eval "${var}_guid=$guid" eval "${var}_guid=$guid"
# assume that all projects have the same list of possible configurations,
# so overwriting old config_lists is not a problem
if [ "$sfx" = "vcproj" ]; then if [ "$sfx" = "vcproj" ]; then
config_list=`grep -A1 '<Configuration' $file | cur_config_list=`grep -A1 '<Configuration' $file |
grep Name | cut -d\" -f2` grep Name | cut -d\" -f2`
else else
config_list=`grep -B1 'Label="Configuration"' $file | cur_config_list=`grep -B1 'Label="Configuration"' $file |
grep Condition | cut -d\' -f4` grep Condition | cut -d\' -f4`
fi fi
new_config_list=$(for i in $config_list $cur_config_list; do
echo $i
done | sort | uniq)
if [ "$config_list" != "" ] && [ "$config_list" != "$new_config_list" ]; then
mixed_platforms=1
fi
config_list="$new_config_list"
eval "${var}_config_list=\"$cur_config_list\""
proj_list="${proj_list} ${var}" proj_list="${proj_list} ${var}"
} }
...@@ -130,6 +136,11 @@ process_global() { ...@@ -130,6 +136,11 @@ process_global() {
indent_push indent_push
IFS_bak=${IFS} IFS_bak=${IFS}
IFS=$'\r'$'\n' IFS=$'\r'$'\n'
if [ "$mixed_platforms" != "" ]; then
config_list="
Release|Mixed Platforms
Debug|Mixed Platforms"
fi
for config in ${config_list}; do for config in ${config_list}; do
echo "${indent}$config = $config" echo "${indent}$config = $config"
done done
...@@ -144,10 +155,17 @@ process_global() { ...@@ -144,10 +155,17 @@ process_global() {
indent_push indent_push
for proj in ${proj_list}; do for proj in ${proj_list}; do
eval "local proj_guid=\${${proj}_guid}" eval "local proj_guid=\${${proj}_guid}"
eval "local proj_config_list=\${${proj}_config_list}"
IFS=$'\r'$'\n' IFS=$'\r'$'\n'
for config in ${config_list}; do for config in ${proj_config_list}; do
echo "${indent}${proj_guid}.${config}.ActiveCfg = ${config}" if [ "$mixed_platforms" != "" ]; then
echo "${indent}${proj_guid}.${config}.Build.0 = ${config}" local c=${config%%|*}
echo "${indent}${proj_guid}.${c}|Mixed Platforms.ActiveCfg = ${config}"
echo "${indent}${proj_guid}.${c}|Mixed Platforms.Build.0 = ${config}"
else
echo "${indent}${proj_guid}.${config}.ActiveCfg = ${config}"
echo "${indent}${proj_guid}.${config}.Build.0 = ${config}"
fi
done done
IFS=${IFS_bak} IFS=${IFS_bak}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment