190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#!/bin/bash 290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 3f71323e297a928af368937089d3ed71239786f86Andreas Huber## Copyright (c) 2010 The WebM project authors. All Rights Reserved. 490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 5f71323e297a928af368937089d3ed71239786f86Andreas Huber## Use of this source code is governed by a BSD-style license 6f71323e297a928af368937089d3ed71239786f86Andreas Huber## that can be found in the LICENSE file in the root of the source 7f71323e297a928af368937089d3ed71239786f86Andreas Huber## tree. An additional intellectual property rights grant can be found 8f71323e297a928af368937089d3ed71239786f86Andreas Huber## in the file PATENTS. All contributing project authors may 9f71323e297a928af368937089d3ed71239786f86Andreas Huber## be found in the AUTHORS file in the root of the source tree. 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber## 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself_basename=${self##*/} 15f71323e297a928af368937089d3ed71239786f86Andreas Huberself_dirname=$(dirname "$0") 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOL=$'\n' 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() { 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber cat <<EOF 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUsage: ${self_basename} --name=projname [options] file1 [file2 ...] 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberThis script generates a Visual Studio project file from a list of source 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercode files. 2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOptions: 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --help Print this message 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --exe Generate a project for building an Application 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --lib Generate a project for creating a static library 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --static-crt Use the static C runtime (/MT) 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --target=isa-os-cc Target specifier (required) 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --out=filename Write output to a file [stdout] 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --name=project_name Name of the project (required) 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --proj-guid=GUID GUID to use for the project 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber --module-def=filename File containing export definitions (for DLLs) 3579f15823c34ae1e423108295e416213200bb280fAndreas Huber --ver=version Version (7,8,9) of visual studio to generate for 3679f15823c34ae1e423108295e416213200bb280fAndreas Huber --src-path-bare=dir Path to root of source tree 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Ipath/to/include Additional include directories 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -DFLAG[=value] Preprocessor macros to define 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -Lpath/to/lib Additional library search paths 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber -llibname Library to link against 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie() { 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${self_basename}: $@" >&2 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie_unknown(){ 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Unknown option \"$1\"." >&2 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "See ${self_basename} --help for available options." >&2 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exit 1 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_uuid() { 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local hex="0123456789ABCDEF" 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local i 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local uuid="" 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local j 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber #93995380-89BD-4b04-88EB-625FBE52EBFB 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for ((i=0; i<32; i++)); do 6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber (( j = $RANDOM % 16 )) 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber uuid="${uuid}${hex:$j:1}" 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}" 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent1=" " 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent="" 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent_push() { 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent="${indent}${indent1}" 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent_pop() { 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent="${indent%${indent1}}" 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertag_attributes() { 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for opt in "$@"; do 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber [ -n "${optval}" ] || 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber die "Missing attribute value in '$opt' while generating $tag tag" 8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}${opt%%=*}=\"${optval}\"" 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberopen_tag() { 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local tag=$1 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ $# -ne 0 ]; then 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}<${tag}" 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent_push 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tag_attributes "$@" 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}>" 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}<${tag}>" 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent_push 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclose_tag() { 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local tag=$1 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent_pop 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}</${tag}>" 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertag() { 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local tag=$1 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber shift 11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ $# -ne 0 ]; then 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}<${tag}" 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent_push 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tag_attributes "$@" 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber indent_pop 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}/>" 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "${indent}<${tag}/>" 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_filter() { 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local var=$1 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local name=$2 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local pats=$3 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local file_list_sz 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local i 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local f 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local saveIFS="$IFS" 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber local pack 13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "generating filter '$name' from ${#file_list[@]} files" >&2 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber IFS=* 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber open_tag Filter \ 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Name=$name \ 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Filter=$pats \ 13679f15823c34ae1e423108295e416213200bb280fAndreas Huber UniqueIdentifier=`generate_uuid` \ 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber file_list_sz=${#file_list[@]} 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for i in ${!file_list[@]}; do 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber f=${file_list[i]} 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for pat in ${pats//;/$IFS}; do 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ "${f##*.}" == "$pat" ]; then 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber unset file_list[i] 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber open_tag File RelativePath="./$f" 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ "$pat" == "asm" ] && $asm_use_custom_step; then 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for plat in "${platforms[@]}"; do 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for cfg in Debug Release; do 14979f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag FileConfiguration \ 15079f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="${cfg}|${plat}" \ 15179f15823c34ae1e423108295e416213200bb280fAndreas Huber 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tag Tool \ 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Name="VCCustomBuildTool" \ 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber Description="Assembling \$(InputFileName)" \ 15579f15823c34ae1e423108295e416213200bb280fAndreas Huber CommandLine="$(eval echo \$asm_${cfg}_cmdline)" \ 15679f15823c34ae1e423108295e416213200bb280fAndreas Huber Outputs="\$(InputName).obj" \ 15779f15823c34ae1e423108295e416213200bb280fAndreas Huber 15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag FileConfiguration 15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16379f15823c34ae1e423108295e416213200bb280fAndreas Huber close_tag File 16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber break 16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Filter 17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber IFS="$saveIFS" 17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Process command line 17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberunset target 17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor opt in "$@"; do 17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber optval="${opt#*=}" 17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$opt" in 17979f15823c34ae1e423108295e416213200bb280fAndreas Huber --help|-h) show_help 18079f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 18179f15823c34ae1e423108295e416213200bb280fAndreas Huber --target=*) target="${optval}" 18279f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 18379f15823c34ae1e423108295e416213200bb280fAndreas Huber --out=*) outfile="$optval" 18479f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 18579f15823c34ae1e423108295e416213200bb280fAndreas Huber --name=*) name="${optval}" 18679f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 18779f15823c34ae1e423108295e416213200bb280fAndreas Huber --proj-guid=*) guid="${optval}" 18879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 18979f15823c34ae1e423108295e416213200bb280fAndreas Huber --module-def=*) link_opts="${link_opts} ModuleDefinitionFile=${optval}" 19079f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 19179f15823c34ae1e423108295e416213200bb280fAndreas Huber --exe) proj_kind="exe" 19279f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 19379f15823c34ae1e423108295e416213200bb280fAndreas Huber --lib) proj_kind="lib" 19479f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 19579f15823c34ae1e423108295e416213200bb280fAndreas Huber --src-path-bare=*) src_path_bare="$optval" 19679f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 19779f15823c34ae1e423108295e416213200bb280fAndreas Huber --static-crt) use_static_runtime=true 19879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 19979f15823c34ae1e423108295e416213200bb280fAndreas Huber --ver=*) 20079f15823c34ae1e423108295e416213200bb280fAndreas Huber vs_ver="$optval" 20179f15823c34ae1e423108295e416213200bb280fAndreas Huber case "$optval" in 20279f15823c34ae1e423108295e416213200bb280fAndreas Huber [789]) 20379f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 20479f15823c34ae1e423108295e416213200bb280fAndreas Huber *) die Unrecognized Visual Studio Version in $opt 20579f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 20679f15823c34ae1e423108295e416213200bb280fAndreas Huber esac 20779f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 20879f15823c34ae1e423108295e416213200bb280fAndreas Huber -I*) 20979f15823c34ae1e423108295e416213200bb280fAndreas Huber opt="${opt%/}" 21079f15823c34ae1e423108295e416213200bb280fAndreas Huber incs="${incs}${incs:+;}"${opt##-I}"" 21179f15823c34ae1e423108295e416213200bb280fAndreas Huber yasmincs="${yasmincs} ${opt}" 21279f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 21379f15823c34ae1e423108295e416213200bb280fAndreas Huber -D*) defines="${defines}${defines:+;}${opt##-D}" 21479f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 21579f15823c34ae1e423108295e416213200bb280fAndreas Huber -L*) # fudge . to $(OutDir) 21679f15823c34ae1e423108295e416213200bb280fAndreas Huber if [ "${opt##-L}" == "." ]; then 21779f15823c34ae1e423108295e416213200bb280fAndreas Huber libdirs="${libdirs}${libdirs:+;}"\$(OutDir)"" 21879f15823c34ae1e423108295e416213200bb280fAndreas Huber else 21979f15823c34ae1e423108295e416213200bb280fAndreas Huber # Also try directories for this platform/configuration 22079f15823c34ae1e423108295e416213200bb280fAndreas Huber libdirs="${libdirs}${libdirs:+;}"${opt##-L}"" 22179f15823c34ae1e423108295e416213200bb280fAndreas Huber libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)/\$(ConfigurationName)"" 22279f15823c34ae1e423108295e416213200bb280fAndreas Huber libdirs="${libdirs}${libdirs:+;}"${opt##-L}/\$(PlatformName)"" 22379f15823c34ae1e423108295e416213200bb280fAndreas Huber fi 22479f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 22579f15823c34ae1e423108295e416213200bb280fAndreas Huber -l*) libs="${libs}${libs:+ }${opt##-l}.lib" 22679f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 22779f15823c34ae1e423108295e416213200bb280fAndreas Huber -*) die_unknown $opt 22879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 22979f15823c34ae1e423108295e416213200bb280fAndreas Huber *) 23079f15823c34ae1e423108295e416213200bb280fAndreas Huber file_list[${#file_list[@]}]="$opt" 23179f15823c34ae1e423108295e416213200bb280fAndreas Huber case "$opt" in 23279f15823c34ae1e423108295e416213200bb280fAndreas Huber *.asm) uses_asm=true 23379f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 23479f15823c34ae1e423108295e416213200bb280fAndreas Huber esac 23579f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 23890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberoutfile=${outfile:-/dev/stdout} 23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberguid=${guid:-`generate_uuid`} 24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberasm_use_custom_step=false 24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberuses_asm=${uses_asm:-false} 24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "${vs_ver:-8}" in 24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7) vs_ver_id="7.10" 24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber asm_use_custom_step=$uses_asm 24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8) vs_ver_id="8.00" 24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 248f71323e297a928af368937089d3ed71239786f86Andreas Huber 9) vs_ver_id="9.00" 249f71323e297a928af368937089d3ed71239786f86Andreas Huber ;; 25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac 25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -n "$name" ] || die "Project name (--name) must be specified!" 25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -n "$target" ] || die "Target (--target) must be specified!" 25490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif ${use_static_runtime:-false}; then 25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber release_runtime=0 25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_runtime=1 25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lib_sfx=mt 25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse 26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber release_runtime=2 26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_runtime=3 26290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lib_sfx=md 26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi 26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Calculate debug lib names: If a lib ends in ${lib_sfx}.lib, then rename 26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# it to ${lib_sfx}d.lib. This precludes linking to release libs from a 26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# debug exe, so this may need to be refactored later. 26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor lib in ${libs}; do 26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if [ "$lib" != "${lib%${lib_sfx}.lib}" ]; then 27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lib=${lib%.lib}d.lib 27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fi 27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber debug_libs="${debug_libs}${debug_libs:+ }${lib}" 27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone 27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 27690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Keyword for this target 27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "$target" in 27879f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) keyword="ManagedCProj" 27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) die "Unsupported target $target!" 28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac 28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List of all platforms supported for this target 28490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "$target" in 28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86_64*) 28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber platforms[0]="x64" 28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber x86*) 28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber platforms[0]="Win32" 29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # these are only used by vs7 291f71323e297a928af368937089d3ed71239786f86Andreas Huber asm_Debug_cmdline="yasm -Xvc -g cv8 -f \$(PlatformName) ${yasmincs} "\$(InputPath)"" 292f71323e297a928af368937089d3ed71239786f86Andreas Huber asm_Release_cmdline="yasm -Xvc -f \$(PlatformName) ${yasmincs} "\$(InputPath)"" 29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber *) die "Unsupported target $target!" 29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 29690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac 29790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 29890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_vcproj() { 29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$proj_kind" in 30079f15823c34ae1e423108295e416213200bb280fAndreas Huber exe) vs_ConfigurationType=1 30179f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 30279f15823c34ae1e423108295e416213200bb280fAndreas Huber *) vs_ConfigurationType=4 30379f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>" 30779f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag VisualStudioProject \ 30879f15823c34ae1e423108295e416213200bb280fAndreas Huber ProjectType="Visual C++" \ 30979f15823c34ae1e423108295e416213200bb280fAndreas Huber Version="${vs_ver_id}" \ 31079f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="${name}" \ 31179f15823c34ae1e423108295e416213200bb280fAndreas Huber ProjectGUID="{${guid}}" \ 31279f15823c34ae1e423108295e416213200bb280fAndreas Huber RootNamespace="${name}" \ 31379f15823c34ae1e423108295e416213200bb280fAndreas Huber Keyword="${keyword}" \ 31479f15823c34ae1e423108295e416213200bb280fAndreas Huber 31579f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag Platforms 31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for plat in "${platforms[@]}"; do 31779f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Platform Name="$plat" 31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Platforms 32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32179f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag ToolFiles 32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 323f71323e297a928af368937089d3ed71239786f86Andreas Huber x86*) $uses_asm && tag ToolFile RelativePath="$self_dirname/../x86-msvs/yasm.rules" 32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag ToolFiles 32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 32879f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag Configurations 32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for plat in "${platforms[@]}"; do 33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber plat_no_ws=`echo $plat | sed 's/[^A-Za-z0-9_]/_/g'` 33179f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag Configuration \ 33279f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="Debug|$plat" \ 33379f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ 33479f15823c34ae1e423108295e416213200bb280fAndreas Huber IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ 33579f15823c34ae1e423108295e416213200bb280fAndreas Huber ConfigurationType="$vs_ConfigurationType" \ 33679f15823c34ae1e423108295e416213200bb280fAndreas Huber CharacterSet="1" \ 33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 33979f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 34079f15823c34ae1e423108295e416213200bb280fAndreas Huber case "$name" in 34179f15823c34ae1e423108295e416213200bb280fAndreas Huber obj_int_extract) 34279f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 34379f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 34479f15823c34ae1e423108295e416213200bb280fAndreas Huber Optimization="0" \ 34579f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 34679f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" \ 34779f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$debug_runtime" \ 34879f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 34979f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 35079f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="1" \ 35179f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 35279f15823c34ae1e423108295e416213200bb280fAndreas Huber vpx) 35379f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 35479f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCPreBuildEventTool" \ 35579f15823c34ae1e423108295e416213200bb280fAndreas Huber CommandLine="call obj_int_extract.bat $src_path_bare" \ 35679f15823c34ae1e423108295e416213200bb280fAndreas Huber 35779f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 35879f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 35979f15823c34ae1e423108295e416213200bb280fAndreas Huber Optimization="0" \ 36079f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 36179f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ 36279f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$debug_runtime" \ 36379f15823c34ae1e423108295e416213200bb280fAndreas Huber UsePrecompiledHeader="0" \ 36479f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 36579f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="1" \ 36679f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 36779f15823c34ae1e423108295e416213200bb280fAndreas Huber 3681b362b15af34006e6a11974088a46d42b903418eJohann $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="true" 36979f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 37079f15823c34ae1e423108295e416213200bb280fAndreas Huber *) 37179f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 37279f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 37379f15823c34ae1e423108295e416213200bb280fAndreas Huber Optimization="0" \ 37479f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 37579f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ 37679f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$debug_runtime" \ 37779f15823c34ae1e423108295e416213200bb280fAndreas Huber UsePrecompiledHeader="0" \ 37879f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 37979f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="1" \ 38079f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 38179f15823c34ae1e423108295e416213200bb280fAndreas Huber 3821b362b15af34006e6a11974088a46d42b903418eJohann $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" Debug="true" 38379f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 38479f15823c34ae1e423108295e416213200bb280fAndreas Huber esac 38590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 38690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 38790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 38890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$proj_kind" in 38990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exe) 39090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 39179f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 39290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$name" in 39379f15823c34ae1e423108295e416213200bb280fAndreas Huber obj_int_extract) 39479f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 39579f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 39679f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputFile="${name}.exe" \ 39779f15823c34ae1e423108295e416213200bb280fAndreas Huber GenerateDebugInformation="true" \ 39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 39979f15823c34ae1e423108295e416213200bb280fAndreas Huber *) 40079f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 40179f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 40279f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalDependencies="$debug_libs \$(NoInherit)" \ 40379f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalLibraryDirectories="$libdirs" \ 40479f15823c34ae1e423108295e416213200bb280fAndreas Huber GenerateDebugInformation="true" \ 40579f15823c34ae1e423108295e416213200bb280fAndreas Huber ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \ 40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 40879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber lib) 41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 41379f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 41479f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 41579f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLibrarianTool" \ 41679f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputFile="\$(OutDir)/${name}${lib_sfx}d.lib" \ 41779f15823c34ae1e423108295e416213200bb280fAndreas Huber 41879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 42179f15823c34ae1e423108295e416213200bb280fAndreas Huber dll) 42279f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 42379f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 42479f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalDependencies="\$(NoInherit)" \ 42579f15823c34ae1e423108295e416213200bb280fAndreas Huber LinkIncremental="2" \ 42679f15823c34ae1e423108295e416213200bb280fAndreas Huber GenerateDebugInformation="true" \ 42779f15823c34ae1e423108295e416213200bb280fAndreas Huber AssemblyDebug="1" \ 42879f15823c34ae1e423108295e416213200bb280fAndreas Huber TargetMachine="1" \ 42979f15823c34ae1e423108295e416213200bb280fAndreas Huber $link_opts \ 43079f15823c34ae1e423108295e416213200bb280fAndreas Huber 43179f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Configuration 43590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 43679f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag Configuration \ 43779f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="Release|$plat" \ 43879f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \ 43979f15823c34ae1e423108295e416213200bb280fAndreas Huber IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \ 44079f15823c34ae1e423108295e416213200bb280fAndreas Huber ConfigurationType="$vs_ConfigurationType" \ 44179f15823c34ae1e423108295e416213200bb280fAndreas Huber CharacterSet="1" \ 44279f15823c34ae1e423108295e416213200bb280fAndreas Huber WholeProgramOptimization="0" \ 44390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 44479f15823c34ae1e423108295e416213200bb280fAndreas Huber case "$target" in 44579f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 44679f15823c34ae1e423108295e416213200bb280fAndreas Huber case "$name" in 44779f15823c34ae1e423108295e416213200bb280fAndreas Huber obj_int_extract) 44879f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 44979f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 4501b362b15af34006e6a11974088a46d42b903418eJohann Optimization="2" \ 4511b362b15af34006e6a11974088a46d42b903418eJohann FavorSizeorSpeed="1" \ 45279f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 45379f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE" \ 45479f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$release_runtime" \ 45579f15823c34ae1e423108295e416213200bb280fAndreas Huber UsePrecompiledHeader="0" \ 45679f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 45779f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 45879f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="0" \ 45979f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 46079f15823c34ae1e423108295e416213200bb280fAndreas Huber vpx) 46179f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 46279f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCPreBuildEventTool" \ 46379f15823c34ae1e423108295e416213200bb280fAndreas Huber CommandLine="call obj_int_extract.bat $src_path_bare" \ 46479f15823c34ae1e423108295e416213200bb280fAndreas Huber 46579f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 46679f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 4671b362b15af34006e6a11974088a46d42b903418eJohann Optimization="2" \ 4681b362b15af34006e6a11974088a46d42b903418eJohann FavorSizeorSpeed="1" \ 46979f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 47079f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ 47179f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$release_runtime" \ 47279f15823c34ae1e423108295e416213200bb280fAndreas Huber UsePrecompiledHeader="0" \ 47379f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 47479f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="0" \ 47579f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 47679f15823c34ae1e423108295e416213200bb280fAndreas Huber 47779f15823c34ae1e423108295e416213200bb280fAndreas Huber $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" 47879f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 47979f15823c34ae1e423108295e416213200bb280fAndreas Huber *) 48079f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 48179f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCCLCompilerTool" \ 48279f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalIncludeDirectories="$incs" \ 4831b362b15af34006e6a11974088a46d42b903418eJohann Optimization="2" \ 4841b362b15af34006e6a11974088a46d42b903418eJohann FavorSizeorSpeed="1" \ 48579f15823c34ae1e423108295e416213200bb280fAndreas Huber PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;$defines" \ 48679f15823c34ae1e423108295e416213200bb280fAndreas Huber RuntimeLibrary="$release_runtime" \ 48779f15823c34ae1e423108295e416213200bb280fAndreas Huber UsePrecompiledHeader="0" \ 48879f15823c34ae1e423108295e416213200bb280fAndreas Huber WarningLevel="3" \ 48979f15823c34ae1e423108295e416213200bb280fAndreas Huber DebugInformationFormat="0" \ 49079f15823c34ae1e423108295e416213200bb280fAndreas Huber Detect64BitPortabilityProblems="true" \ 49179f15823c34ae1e423108295e416213200bb280fAndreas Huber 49279f15823c34ae1e423108295e416213200bb280fAndreas Huber $uses_asm && tag Tool Name="YASM" IncludePaths="$incs" 49379f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 49579f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 49679f15823c34ae1e423108295e416213200bb280fAndreas Huber esac 49790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 49890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$proj_kind" in 49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber exe) 50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 50179f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 50290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$name" in 50379f15823c34ae1e423108295e416213200bb280fAndreas Huber obj_int_extract) 50479f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 50579f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 50679f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputFile="${name}.exe" \ 50779f15823c34ae1e423108295e416213200bb280fAndreas Huber GenerateDebugInformation="true" \ 50890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 50979f15823c34ae1e423108295e416213200bb280fAndreas Huber *) 51079f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 51179f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 51279f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalDependencies="$libs \$(NoInherit)" \ 51379f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalLibraryDirectories="$libdirs" \ 51479f15823c34ae1e423108295e416213200bb280fAndreas Huber 51590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 51690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 51779f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 51890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 51990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber ;; 52079f15823c34ae1e423108295e416213200bb280fAndreas Huber lib) 52190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber case "$target" in 52279f15823c34ae1e423108295e416213200bb280fAndreas Huber x86*) 52379f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 52479f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLibrarianTool" \ 52579f15823c34ae1e423108295e416213200bb280fAndreas Huber OutputFile="\$(OutDir)/${name}${lib_sfx}.lib" \ 52679f15823c34ae1e423108295e416213200bb280fAndreas Huber 52779f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 52890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber esac 52979f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 53079f15823c34ae1e423108295e416213200bb280fAndreas Huber dll) # note differences to debug version: LinkIncremental, AssemblyDebug 53179f15823c34ae1e423108295e416213200bb280fAndreas Huber tag Tool \ 53279f15823c34ae1e423108295e416213200bb280fAndreas Huber Name="VCLinkerTool" \ 53379f15823c34ae1e423108295e416213200bb280fAndreas Huber AdditionalDependencies="\$(NoInherit)" \ 53479f15823c34ae1e423108295e416213200bb280fAndreas Huber LinkIncremental="1" \ 53579f15823c34ae1e423108295e416213200bb280fAndreas Huber GenerateDebugInformation="true" \ 53679f15823c34ae1e423108295e416213200bb280fAndreas Huber TargetMachine="1" \ 53779f15823c34ae1e423108295e416213200bb280fAndreas Huber $link_opts \ 53890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 53979f15823c34ae1e423108295e416213200bb280fAndreas Huber ;; 54079f15823c34ae1e423108295e416213200bb280fAndreas Huber esac 54190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 54290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Configuration 54390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 54490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Configurations 54590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 54679f15823c34ae1e423108295e416213200bb280fAndreas Huber open_tag Files 5471b362b15af34006e6a11974088a46d42b903418eJohann generate_filter srcs "Source Files" "c;cc;def;odl;idl;hpj;bat;asm;asmx" 54879f15823c34ae1e423108295e416213200bb280fAndreas Huber generate_filter hdrs "Header Files" "h;hm;inl;inc;xsd" 54990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber generate_filter resrcs "Resource Files" "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" 55090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber generate_filter resrcs "Build Files" "mk" 55190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag Files 55290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 55390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber tag Globals 55490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber close_tag VisualStudioProject 55590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 55690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber # This must be done from within the {} subshell 55790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo "Ignored files list (${#file_list[@]} items) is:" >&2 55890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for f in "${file_list[@]}"; do 55990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber echo " $f" >&2 56090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber done 56190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 56290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 56390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_vcproj | 56490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber sed -e '/"/s;\([^ "]\)/;\1\\;g' > ${outfile} 56590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 56690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberexit 56790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<!-- 56890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTODO: Add any files not captured by filters. 56990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber <File 57090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber RelativePath=".\ReadMe.txt" 57190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber > 57290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber </File> 57390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber--> 574