gen_msvs_proj.sh revision 90d3ed91ae9228e1c8bab561b6138d4cb8c1e4fd
190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#!/bin/bash
290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##  Copyright (c) 2010 The VP8 project authors. All Rights Reserved.
490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##  Use of this source code is governed by a BSD-style license and patent
690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##  grant that can be found in the LICENSE file in the root of the source
790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##  tree. All contributing project authors may be found in the AUTHORS
890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##  file in the root of the source tree.
990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber##
1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself=$0
1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberself_basename=${self##*/}
1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOL=$'\n'
1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubershow_help() {
1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    cat <<EOF
1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberUsage: ${self_basename} --name=projname [options] file1 [file2 ...]
1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberThis script generates a Visual Studio project file from a list of source
2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercode files.
2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberOptions:
2490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --help                      Print this message
2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --exe                       Generate a project for building an Application
2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --lib                       Generate a project for creating a static library
2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --static-crt                Use the static C runtime (/MT)
2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --target=isa-os-cc          Target specifier (required)
2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --out=filename              Write output to a file [stdout]
3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --name=project_name         Name of the project (required)
3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --proj-guid=GUID            GUID to use for the project
3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --module-def=filename       File containing export definitions (for DLLs)
3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --ver=version               Version (7,8) of visual studio to generate for
3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -Ipath/to/include           Additional include directories
3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -DFLAG[=value]              Preprocessor macros to define
3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -Lpath/to/lib               Additional library search paths
3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -llibname                   Library to link against
3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberEOF
3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exit 1
4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie() {
4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "${self_basename}: $@" >&2
4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exit 1
4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdie_unknown(){
4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "Unknown option \"$1\"." >&2
4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "See ${self_basename} --help for available options." >&2
5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exit 1
5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_uuid() {
5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local hex="0123456789ABCDEF"
5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local i
5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local uuid=""
5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local j
5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    #93995380-89BD-4b04-88EB-625FBE52EBFB
5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for ((i=0; i<32; i++)); do
6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        (( j = $RANDOM % 16 ))
6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        uuid="${uuid}${hex:$j:1}"
6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
6390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}"
6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent1="    "
6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent=""
6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent_push() {
6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    indent="${indent}${indent1}"
7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberindent_pop() {
7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    indent="${indent%${indent1}}"
7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertag_attributes() {
7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for opt in "$@"; do
7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        optval="${opt#*=}"
7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        [ -n "${optval}" ] ||
7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            die "Missing attribute value in '$opt' while generating $tag tag"
8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}${opt%%=*}=\"${optval}\""
8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
8390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberopen_tag() {
8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local tag=$1
8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ $# -ne 0 ]; then
8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}<${tag}"
8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        indent_push
9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        tag_attributes "$@"
9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}>"
9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    else
9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}<${tag}>"
9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        indent_push
9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberclose_tag() {
9990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local tag=$1
10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    indent_pop
10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "${indent}</${tag}>"
10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubertag() {
10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local tag=$1
10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    shift
10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ $# -ne 0 ]; then
10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}<${tag}"
10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        indent_push
11090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        tag_attributes "$@"
11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        indent_pop
11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}/>"
11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    else
11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "${indent}<${tag}/>"
11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_filter() {
11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local var=$1
12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local name=$2
12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local pats=$3
12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local file_list_sz
12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local i
12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local f
12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local saveIFS="$IFS"
12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    local pack
12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "generating filter '$name' from ${#file_list[@]} files" >&2
12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    IFS=*
12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
13090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag Filter \
13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        Name=$name \
13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        Filter=$pats \
13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        UniqueIdentifier=`generate_uuid`
13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    file_list_sz=${#file_list[@]}
13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for i in ${!file_list[@]}; do
13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        f=${file_list[i]}
13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        for pat in ${pats//;/$IFS}; do
13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            if [ "${f##*.}" == "$pat" ]; then
14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                unset file_list[i]
14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                open_tag File RelativePath="./$f"
14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                if [ "$pat" == "asm" ] && $asm_use_custom_step; then
14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    for plat in "${platforms[@]}"; do
14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        for cfg in Debug Release; do
14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            open_tag  FileConfiguration \
14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            Name="${cfg}|${plat}"
14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            tag Tool \
14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Name="VCCustomBuildTool" \
15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Description="Assembling \$(InputFileName)" \
15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                CommandLine="$(eval echo \$asm_${cfg}_cmdline)"\
15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Outputs="\$(InputName).obj"
15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            close_tag FileConfiguration
15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        done
15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    done
15690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                fi
15790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
15890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                if [ "${f##*.}" == "cpp" ]; then
15990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    for plat in "${platforms[@]}"; do
16090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        for cfg in Debug Release; do
16190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        open_tag FileConfiguration \
16290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            Name="${cfg}|${plat}"
16390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        tag Tool \
16490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            Name="VCCLCompilerTool" \
16590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            CompileAs="2"
16690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        close_tag FileConfiguration
16790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        done
16890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    done
16990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                fi
17090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                close_tag  File
17190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
17290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                break
17390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
17490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        done
17590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
17690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
17790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag Filter
17890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    IFS="$saveIFS"
17990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
18090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
18190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Process command line
18290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberunset target
18390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor opt in "$@"; do
18490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    optval="${opt#*=}"
18590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case "$opt" in
18690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --help|-h) show_help
18790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
18890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --target=*) target="${optval}"
18990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
19090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --out=*) outfile="$optval"
19190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
19290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --name=*) name="${optval}"
19390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
19490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --proj-guid=*) guid="${optval}"
19590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
19690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --module-def=*)
19790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        link_opts="${link_opts} ModuleDefinitionFile=${optval}"
19890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
19990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --exe) proj_kind="exe"
20090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
20190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --lib) proj_kind="lib"
20290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
20390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --static-crt) use_static_runtime=true
20490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
20590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    --ver=*) vs_ver="$optval"
20690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             case $optval in
20790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             [78])
20890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             ;;
20990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             *) die Unrecognized Visual Studio Version in $opt
21090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             ;;
21190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             esac
21290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
21390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -I*) opt="${opt%/}"
21490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         incs="${incs}${incs:+;}&quot;${opt##-I}&quot;"
21590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         yasmincs="${yasmincs} ${opt}"
21690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
21790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -D*) defines="${defines}${defines:+;}${opt##-D}"
21890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
21990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -L*) # fudge . to $(OutDir)
22090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         if [ "${opt##-L}" == "." ]; then
22190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             libdirs="${libdirs}${libdirs:+;}&quot;\$(OutDir)&quot;"
22290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         else
22390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             # Also try directories for this platform/configuration
22490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}&quot;"
22590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}/\$(PlatformName)/\$(ConfigurationName)&quot;"
22690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             libdirs="${libdirs}${libdirs:+;}&quot;${opt##-L}/\$(PlatformName)&quot;"
22790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber         fi
22890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
22990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -l*) libs="${libs}${libs:+ }${opt##-l}.lib"
23090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
23190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    -*) die_unknown $opt
23290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
23390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    *) file_list[${#file_list[@]}]="$opt"
23490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber       case "$opt" in
23590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber       *.asm) uses_asm=true;;
23690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber       esac
23790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
23890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone
23990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberoutfile=${outfile:-/dev/stdout}
24090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberguid=${guid:-`generate_uuid`}
24190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberasm_use_custom_step=false
24290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberuses_asm=${uses_asm:-false}
24390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "${vs_ver:-8}" in
24490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    7) vs_ver_id="7.10"
24590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber       asm_use_custom_step=$uses_asm
24690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
24790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    8) vs_ver_id="8.00"
24890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
24990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac
25090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
25190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -n "$name" ] || die "Project name (--name) must be specified!"
25290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber[ -n "$target" ] || die "Target (--target) must be specified!"
25390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
25490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberif ${use_static_runtime:-false}; then
25590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    release_runtime=0
25690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    debug_runtime=1
25790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    lib_sfx=mt
25890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberelse
25990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    release_runtime=2
26090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    debug_runtime=3
26190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    lib_sfx=md
26290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfi
26390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
26490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# Calculate debug lib names: If a lib ends in ${lib_sfx}.lib, then rename
26590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# it to ${lib_sfx}d.lib. This precludes linking to release libs from a
26690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# debug exe, so this may need to be refactored later.
26790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberfor lib in ${libs}; do
26890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    if [ "$lib" != "${lib%${lib_sfx}.lib}" ]; then
26990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        lib=${lib%.lib}d.lib
27090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    fi
27190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    debug_libs="${debug_libs}${debug_libs:+ }${lib}"
27290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberdone
27390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
27490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
27590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Keyword for this target
27690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "$target" in
27790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    x86*)
27890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        keyword="ManagedCProj"
27990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
28090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    arm*|iwmmx*)
28190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        keyword="Win32Proj"
28290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
28390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    *) die "Unsupported target $target!"
28490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac
28590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
28690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List of all platforms supported for this target
28790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "$target" in
28890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    x86_64*)
28990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        platforms[0]="x64"
29090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
29190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    x86*)
29290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        platforms[0]="Win32"
29390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        # these are only used by vs7
29490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        asm_Debug_cmdline="yasm -Xvc -g cv8 -f \$(PlatformName) ${yasmincs} \$(InputPath)"
29590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        asm_Release_cmdline="yasm -Xvc -f \$(PlatformName) ${yasmincs} \$(InputPath)"
29690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
29790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    arm*|iwmmx*)
29890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "${name}" in
29990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        obj_int_extract) platforms[0]="Win32"
30090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
30190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        *) platforms[0]="Pocket PC 2003 (ARMV4)"
30290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
30390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
30490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
30590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    *) die "Unsupported target $target!"
30690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac
30790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
30890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber# List Command-line Arguments for this target
30990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubercase "$target" in
31090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    arm*|iwmmx*)
31190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$name" == "example" ];then
31290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ARGU="--codec vp6 --flipuv --progress _bnd.vp6"
31390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
31490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$name" == "xma" ];then
31590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ARGU="--codec vp6 -h 240 -w 320 -v"
31690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
31790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
31890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberesac
31990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
32090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_vcproj() {
32190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case "$proj_kind" in
32290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    exe) vs_ConfigurationType=1
32390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
32490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    *)   vs_ConfigurationType=4
32590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    ;;
32690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
32790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
32890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "<?xml version=\"1.0\" encoding=\"Windows-1252\"?>"
32990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag  VisualStudioProject \
33090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  ProjectType="Visual C++" \
33190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  Version="${vs_ver_id}" \
33290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  Name="${name}" \
33390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  ProjectGUID="{${guid}}" \
33490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  RootNamespace="${name}" \
33590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                  Keyword="${keyword}"
33690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
33790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag  Platforms
33890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for plat in "${platforms[@]}"; do
33990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        tag   Platform Name="$plat"
34090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
34190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag Platforms
34290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
34390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag  ToolFiles
34490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case "$target" in
34590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        x86*) $uses_asm && tag DefaultToolFile FileName="yasm.rules"
34690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
34790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        arm*|iwmmx*)
34890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            if [ "$name" == "vpx_decoder" ];then
34990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            case "$target" in
35090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                armv5*)
35190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    tag DefaultToolFile FileName="armasmv5.rules"
35290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
35390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                armv6*)
35490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    tag DefaultToolFile FileName="armasmv6.rules"
35590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
35690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                iwmmxt*)
35790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    tag DefaultToolFile FileName="armasmxscale.rules"
35890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
35990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            esac
36090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            fi
36190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
36290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    esac
36390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag ToolFiles
36490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
36590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag  Configurations
36690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for plat in "${platforms[@]}"; do
36790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        plat_no_ws=`echo $plat | sed 's/[^A-Za-z0-9_]/_/g'`
36890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        open_tag  Configuration \
36990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      Name="Debug|$plat" \
37090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \
37190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \
37290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      ConfigurationType="$vs_ConfigurationType" \
37390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      CharacterSet="1"
37490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
37590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
37690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            case "$name" in
37790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                vpx_decoder) tag Tool \
37890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCPreBuildEventTool" \
37990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             CommandLine="call obj_int_extract.bat \$(ConfigurationName)"
38090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
38190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCMIDLTool" \
38290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             TargetEnvironment="1"
38390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
38490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCCLCompilerTool" \
38590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ExecutionBucket="7" \
38690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Optimization="0" \
38790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="$incs" \
38890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;DEBUG;_LIB;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;HAVE_CONFIG_H" \
38990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             MinimalRebuild="true" \
39090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RuntimeLibrary="1" \
39190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             BufferSecurityCheck="false" \
39290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             UsePrecompiledHeader="0" \
39390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             WarningLevel="3" \
39490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             DebugInformationFormat="1" \
39590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             CompileAs="1"
39690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
39790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCResourceCompilerTool" \
39890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
39990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Culture="1033" \
40090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="\$(IntDir)" \
40190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
40290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                example|xma) tag Tool \
40390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCCLCompilerTool" \
40490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ExecutionBucket="7" \
40590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Optimization="0" \
40690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="$incs" \
40790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;DEBUG;_CONSOLE;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;HAVE_CONFIG_H" \
40890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             MinimalRebuild="true" \
40990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RuntimeLibrary="1" \
41090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             BufferSecurityCheck="false" \
41190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             UsePrecompiledHeader="0" \
41290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             WarningLevel="3" \
41390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             DebugInformationFormat="1" \
41490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             CompileAs="1"
41590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
41690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCResourceCompilerTool" \
41790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="_DEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
41890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Culture="1033" \
41990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="\$(IntDir)" \
42090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
42190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                obj_int_extract) tag Tool \
42290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCCLCompilerTool" \
42390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Optimization="0" \
42490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="$incs" \
42590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="WIN32;DEBUG;_CONSOLE" \
42690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RuntimeLibrary="1" \
42790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             WarningLevel="3" \
42890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             DebugInformationFormat="1" \
42990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
43090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            esac
43190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
43290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
43390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$target" in
43490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            x86*) tag Tool \
43590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                Name="VCCLCompilerTool" \
43690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                Optimization="0" \
43790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                AdditionalIncludeDirectories="$incs" \
43890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;$defines" \
43990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                RuntimeLibrary="$debug_runtime" \
44090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                UsePrecompiledHeader="0" \
44190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                WarningLevel="3" \
44290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                DebugInformationFormat="1" \
44390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                Detect64BitPortabilityProblems="true" \
44490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
44590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                $uses_asm && tag Tool Name="YASM"  IncludePaths="$incs" Debug="1"
44690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
44790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
44890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
44990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$proj_kind" in
45090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            exe)
45190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                case "$target" in
45290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    x86*) tag Tool \
45390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                          Name="VCLinkerTool" \
45490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                          AdditionalDependencies="$debug_libs \$(NoInherit)" \
45590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                          AdditionalLibraryDirectories="$libdirs" \
45690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                          GenerateDebugInformation="true" \
45790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                          ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
45890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
45990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    ;;
46090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    arm*|iwmmx*)
46190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        case "$name" in
46290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            obj_int_extract) tag Tool \
46390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Name="VCLinkerTool" \
46490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OutputFile="${name}.exe" \
46590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                GenerateDebugInformation="true"
46690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            ;;
46790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            *) tag Tool \
46890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Name="VCLinkerTool" \
46990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                AdditionalDependencies="$debug_libs" \
47090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OutputFile="\$(OutDir)/${name}.exe" \
47190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                LinkIncremental="2" \
47290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                AdditionalLibraryDirectories="${libdirs};&quot;..\lib/$plat_no_ws&quot;" \
47390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                DelayLoadDLLs="\$(NOINHERIT)" \
47490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                GenerateDebugInformation="true" \
47590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
47690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                SubSystem="9" \
47790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                StackReserveSize="65536" \
47890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                StackCommitSize="4096" \
47990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                EntryPointSymbol="mainWCRTStartup" \
48090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                TargetMachine="3"
48190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            ;;
48290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        esac
48390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                     ;;
48490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                 esac
48590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
48690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            lib)
48790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                case "$target" in
48890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      arm*|iwmmx*) tag Tool \
48990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    Name="VCLibrarianTool" \
49090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    AdditionalOptions=" /subsystem:windowsce,4.20 /machine:ARM" \
49190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    OutputFile="\$(OutDir)/${name}.lib" \
49290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
49390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                *) tag Tool \
49490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    Name="VCLibrarianTool" \
49590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    OutputFile="\$(OutDir)/${name}${lib_sfx}d.lib" \
49690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
49790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                esac
49890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
49990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            dll) tag Tool \
50090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                 Name="VCLinkerTool" \
50190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                AdditionalDependencies="\$(NoInherit)" \
50290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                LinkIncremental="2" \
50390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                GenerateDebugInformation="true" \
50490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                AssemblyDebug="1" \
50590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                TargetMachine="1" \
50690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      $link_opts
50790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
50890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
50990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
51090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            case "$name" in
51190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                vpx_decoder) tag DeploymentTool \
51290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ForceDirty="-1" \
51390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RegisterOutput="0"
51490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
51590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                example|xma) tag DeploymentTool \
51690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ForceDirty="-1" \
51790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RegisterOutput="0"
51890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag DebuggerTool \
51990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Arguments="${ARGU}"
52090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
52190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            esac
52290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
52390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        close_tag Configuration
52490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
52590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        open_tag  Configuration \
52690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      Name="Release|$plat" \
52790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      OutputDirectory="\$(SolutionDir)$plat_no_ws/\$(ConfigurationName)" \
52890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      IntermediateDirectory="$plat_no_ws/\$(ConfigurationName)/${name}" \
52990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      ConfigurationType="$vs_ConfigurationType" \
53090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      CharacterSet="1" \
53190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      WholeProgramOptimization="0"
53290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
53390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
53490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            case "$name" in
53590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                vpx_decoder) tag Tool \
53690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                     Name="VCPreBuildEventTool" \
53790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                     CommandLine="call obj_int_extract.bat \$(ConfigurationName)"
53890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
53990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                     Name="VCMIDLTool" \
54090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                     TargetEnvironment="1"
54190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
54290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             Name="VCCLCompilerTool" \
54390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             ExecutionBucket="7" \
54490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             Optimization="2" \
54590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             FavorSizeOrSpeed="1" \
54690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             AdditionalIncludeDirectories="$incs" \
54790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;_LIB;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;HAVE_CONFIG_H" \
54890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             RuntimeLibrary="0" \
54990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             BufferSecurityCheck="false" \
55090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             UsePrecompiledHeader="0" \
55190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             WarningLevel="3" \
55290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             DebugInformationFormat="0" \
55390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             CompileAs="1"
55490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
55590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             Name="VCResourceCompilerTool" \
55690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
55790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             Culture="1033" \
55890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                             AdditionalIncludeDirectories="\$(IntDir)" \
55990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
56090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                example|xma) tag Tool \
56190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCCLCompilerTool" \
56290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ExecutionBucket="7" \
56390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Optimization="2" \
56490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             FavorSizeOrSpeed="1" \
56590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="$incs" \
56690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES);WINCE;_CONSOLE;\$(ARCHFAM);\$(_ARCHFAM_);_UNICODE;UNICODE;HAVE_CONFIG_H" \
56790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RuntimeLibrary="0" \
56890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             BufferSecurityCheck="false" \
56990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             UsePrecompiledHeader="0" \
57090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             WarningLevel="3" \
57190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             DebugInformationFormat="0" \
57290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             CompileAs="1"
57390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag Tool \
57490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCResourceCompilerTool" \
57590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="NDEBUG;_WIN32_WCE=\$(CEVER);UNDER_CE;\$(PLATFORMDEFINES)" \
57690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Culture="1033" \
57790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="\$(IntDir)" \
57890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
57990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                obj_int_extract) tag Tool \
58090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Name="VCCLCompilerTool" \
58190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             AdditionalIncludeDirectories="$incs" \
58290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" \
58390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RuntimeLibrary="0" \
58490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             UsePrecompiledHeader="0" \
58590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             WarningLevel="3" \
58690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Detect64BitPortabilityProblems="true" \
58790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             DebugInformationFormat="0" \
58890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
58990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            esac
59090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
59190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
59290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    case "$target" in
59390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        x86*) tag       Tool \
59490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      Name="VCCLCompilerTool" \
59590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      AdditionalIncludeDirectories="$incs" \
59690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;$defines" \
59790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      RuntimeLibrary="$release_runtime" \
59890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      UsePrecompiledHeader="0" \
59990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      WarningLevel="3" \
60090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      DebugInformationFormat="0" \
60190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      Detect64BitPortabilityProblems="true"
60290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
60390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                $uses_asm && tag Tool Name="YASM"  IncludePaths="$incs"
60490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
60590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                esac
60690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
60790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        case "$proj_kind" in
60890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            exe)
60990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                case "$target" in
61090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    x86*) tag Tool \
61190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                  Name="VCLinkerTool" \
61290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                  AdditionalDependencies="$libs \$(NoInherit)" \
61390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                  AdditionalLibraryDirectories="$libdirs" \
61490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    ;;
61590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                    arm*|iwmmx*)
61690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        case "$name" in
61790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            obj_int_extract) tag Tool \
61890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Name="VCLinkerTool" \
61990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OutputFile="${name}.exe" \
62090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                LinkIncremental="1" \
62190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                GenerateDebugInformation="false" \
62290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                SubSystem="0" \
62390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OptimizeReferences="0" \
62490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                EnableCOMDATFolding="0" \
62590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                TargetMachine="0"
62690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            ;;
62790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            *) tag Tool \
62890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                Name="VCLinkerTool" \
62990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                AdditionalDependencies="$libs" \
63090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OutputFile="\$(OutDir)/${name}.exe" \
63190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                LinkIncremental="1" \
63290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                AdditionalLibraryDirectories="${libdirs};&quot;..\lib/$plat_no_ws&quot;" \
63390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                DelayLoadDLLs="\$(NOINHERIT)" \
63490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                GenerateDebugInformation="true" \
63590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ProgramDatabaseFile="\$(OutDir)/${name}.pdb" \
63690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                SubSystem="9" \
63790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                StackReserveSize="65536" \
63890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                StackCommitSize="4096" \
63990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                OptimizeReferences="2" \
64090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                EnableCOMDATFolding="2" \
64190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                EntryPointSymbol="mainWCRTStartup" \
64290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                TargetMachine="3"
64390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                            ;;
64490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        esac
64590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                     ;;
64690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                 esac
64790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            ;;
64890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        lib)
64990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                case "$target" in
65090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      arm*|iwmmx*) tag Tool \
65190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    Name="VCLibrarianTool" \
65290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    AdditionalOptions=" /subsystem:windowsce,4.20 /machine:ARM" \
65390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    OutputFile="\$(OutDir)/${name}.lib" \
65490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
65590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                *) tag Tool \
65690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    Name="VCLibrarianTool" \
65790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                    OutputFile="\$(OutDir)/${name}${lib_sfx}.lib" \
65890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
65990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                esac
66090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        ;;
66190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        dll) # note differences to debug version: LinkIncremental, AssemblyDebug
66290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber             tag Tool \
66390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      Name="VCLinkerTool" \
66490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      AdditionalDependencies="\$(NoInherit)" \
66590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      LinkIncremental="1" \
66690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      GenerateDebugInformation="true" \
66790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      TargetMachine="1" \
66890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                      $link_opts
66990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        esac
67090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
67190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        if [ "$target" == "armv6-wince-vs8" ] || [ "$target" == "armv5te-wince-vs8" ] || [ "$target" == "iwmmxt-wince-vs8" ] || [ "$target" == "iwmmxt2-wince-vs8" ];then
67290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            case "$name" in
67390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                vpx_decoder) tag DeploymentTool \
67490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ForceDirty="-1" \
67590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RegisterOutput="0"
67690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                ;;
67790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                example|xma) tag DeploymentTool \
67890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             ForceDirty="-1" \
67990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             RegisterOutput="0"
68090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             tag DebuggerTool \
68190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                             Arguments="${ARGU}"
68290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                                ;;
68390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber            esac
68490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        fi
68590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
68690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        close_tag Configuration
68790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
68890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag Configurations
68990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
69090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    open_tag  Files
69190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    generate_filter srcs   "Source Files"   "cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
69290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    generate_filter hdrs   "Header Files"   "h;hpp;hxx;hm;inl;inc;xsd"
69390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    generate_filter resrcs "Resource Files" "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
69490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    generate_filter resrcs "Build Files"    "mk"
69590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag Files
69690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
69790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    tag       Globals
69890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    close_tag VisualStudioProject
69990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
70090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    # This must be done from within the {} subshell
70190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    echo "Ignored files list (${#file_list[@]} items) is:" >&2
70290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    for f in "${file_list[@]}"; do
70390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber        echo "    $f" >&2
70490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    done
70590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber}
70690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
70790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubergenerate_vcproj |
70890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber    sed  -e '/"/s;\([^ "]\)/;\1\\;g' > ${outfile}
70990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber
71090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huberexit
71190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber<!--
71290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas HuberTODO: Add any files not captured by filters.
71390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                <File
71490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        RelativePath=".\ReadMe.txt"
71590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                        >
71690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber                </File>
71790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber-->
718