#!/bin/bash ## ## Copyright (c) 2010 The WebM project authors. All Rights Reserved. ## ## Use of this source code is governed by a BSD-style license ## that can be found in the LICENSE file in the root of the source ## tree. An additional intellectual property rights grant can be found ## in the file PATENTS. All contributing project authors may ## be found in the AUTHORS file in the root of the source tree. ## self=$0 self_basename=${self##*/} EOL=$'\n' EOLDOS=$'\r' show_help() { cat <&2 [ -f "${outfile}" ] && rm -f ${outfile}{,.mk} exit 1 } die_unknown(){ echo "Unknown option \"$1\"." >&2 echo "See ${self_basename} --help for available options." >&2 [ -f "${outfile}" ] && rm -f ${outfile}{,.mk} exit 1 } indent1=$'\t' indent="" indent_push() { indent="${indent}${indent1}" } indent_pop() { indent="${indent%${indent1}}" } parse_project() { local file=$1 local name=`grep RootNamespace "$file" | sed 's,.*<.*>\(.*\).*,\1,'` local guid=`grep ProjectGuid "$file" | sed 's,.*<.*>\(.*\).*,\1,'` # save the project GUID to a varaible, normalizing to the basename of the # vcxproj file without the extension local var var=${file##*/} var=${var%%.${sfx}} eval "${var}_file=\"$1\"" eval "${var}_name=$name" eval "${var}_guid=$guid" cur_config_list=`grep -B1 'Label="Configuration"' $file | grep Condition | cut -d\' -f4` 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}" } process_project() { eval "local file=\${$1_file}" eval "local name=\${$1_name}" eval "local guid=\${$1_guid}" # save the project GUID to a varaible, normalizing to the basename of the # vcproj file without the extension local var var=${file##*/} var=${var%%.${sfx}} eval "${var}_guid=$guid" echo "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"$name\", \"$file\", \"$guid\"" echo "EndProject" } process_global() { echo "Global" indent_push # # Solution Configuration Platforms # echo "${indent}GlobalSection(SolutionConfigurationPlatforms) = preSolution" indent_push IFS_bak=${IFS} IFS=$'\r'$'\n' if [ "$mixed_platforms" != "" ]; then config_list=" Release|Mixed Platforms Debug|Mixed Platforms" fi for config in ${config_list}; do echo "${indent}$config = $config" done IFS=${IFS_bak} indent_pop echo "${indent}EndGlobalSection" # # Project Configuration Platforms # echo "${indent}GlobalSection(ProjectConfigurationPlatforms) = postSolution" indent_push for proj in ${proj_list}; do eval "local proj_guid=\${${proj}_guid}" eval "local proj_config_list=\${${proj}_config_list}" IFS=$'\r'$'\n' for config in ${proj_config_list}; do if [ "$mixed_platforms" != "" ]; then 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 IFS=${IFS_bak} done indent_pop echo "${indent}EndGlobalSection" # # Solution Properties # echo "${indent}GlobalSection(SolutionProperties) = preSolution" indent_push echo "${indent}HideSolutionNode = FALSE" indent_pop echo "${indent}EndGlobalSection" indent_pop echo "EndGlobal" } process_makefile() { IFS_bak=${IFS} IFS=$'\r'$'\n' local TAB=$'\t' cat </dev/null 2>&1 && echo yes) .nodevenv.once: ${TAB}@echo " * \$(MSBUILD_TOOL) not found in path." ${TAB}@echo " * " ${TAB}@echo " * You will have to build all configurations manually using the" ${TAB}@echo " * Visual Studio IDE. To allow make to build them automatically," ${TAB}@echo " * add the Common7/IDE directory of your Visual Studio" ${TAB}@echo " * installation to your path, eg:" ${TAB}@echo " * C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE" ${TAB}@echo " * " ${TAB}@touch \$@ CLEAN-OBJS += \$(if \$(found_devenv),,.nodevenv.once) EOF for sln_config in ${config_list}; do local config=${sln_config%%|*} local platform=${sln_config##*|} local nows_sln_config=`echo $sln_config | sed -e 's/[^a-zA-Z0-9]/_/g'` cat <${outfile} <>${outfile} done process_global >>${outfile} process_makefile >${mkoutfile}