xref: /aosp_15_r20/external/libvpx/build/make/msvs_common.sh (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker#!/bin/bash
2*fb1b10abSAndroid Build Coastguard Worker##
3*fb1b10abSAndroid Build Coastguard Worker##  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
4*fb1b10abSAndroid Build Coastguard Worker##
5*fb1b10abSAndroid Build Coastguard Worker##  Use of this source code is governed by a BSD-style license
6*fb1b10abSAndroid Build Coastguard Worker##  that can be found in the LICENSE file in the root of the source
7*fb1b10abSAndroid Build Coastguard Worker##  tree. An additional intellectual property rights grant can be found
8*fb1b10abSAndroid Build Coastguard Worker##  in the file PATENTS.  All contributing project authors may
9*fb1b10abSAndroid Build Coastguard Worker##  be found in the AUTHORS file in the root of the source tree.
10*fb1b10abSAndroid Build Coastguard Worker##
11*fb1b10abSAndroid Build Coastguard Worker
12*fb1b10abSAndroid Build Coastguard Workershell_name="$(uname -o 2>/dev/null)"
13*fb1b10abSAndroid Build Coastguard Workerif [[ "$shell_name" = "Cygwin" || "$shell_name" = "Msys" ]] \
14*fb1b10abSAndroid Build Coastguard Worker   && cygpath --help >/dev/null 2>&1; then
15*fb1b10abSAndroid Build Coastguard Worker    FIXPATH='cygpath -m'
16*fb1b10abSAndroid Build Coastguard Workerelse
17*fb1b10abSAndroid Build Coastguard Worker    FIXPATH='echo_path'
18*fb1b10abSAndroid Build Coastguard Workerfi
19*fb1b10abSAndroid Build Coastguard Worker
20*fb1b10abSAndroid Build Coastguard Workerdie() {
21*fb1b10abSAndroid Build Coastguard Worker    echo "${self_basename}: $@" >&2
22*fb1b10abSAndroid Build Coastguard Worker    exit 1
23*fb1b10abSAndroid Build Coastguard Worker}
24*fb1b10abSAndroid Build Coastguard Worker
25*fb1b10abSAndroid Build Coastguard Workerdie_unknown(){
26*fb1b10abSAndroid Build Coastguard Worker    echo "Unknown option \"$1\"." >&2
27*fb1b10abSAndroid Build Coastguard Worker    echo "See ${self_basename} --help for available options." >&2
28*fb1b10abSAndroid Build Coastguard Worker    exit 1
29*fb1b10abSAndroid Build Coastguard Worker}
30*fb1b10abSAndroid Build Coastguard Worker
31*fb1b10abSAndroid Build Coastguard Workerecho_path() {
32*fb1b10abSAndroid Build Coastguard Worker    for path; do
33*fb1b10abSAndroid Build Coastguard Worker        echo "$path"
34*fb1b10abSAndroid Build Coastguard Worker    done
35*fb1b10abSAndroid Build Coastguard Worker}
36*fb1b10abSAndroid Build Coastguard Worker
37*fb1b10abSAndroid Build Coastguard Worker# Output one, possibly changed based on the system, path per line.
38*fb1b10abSAndroid Build Coastguard Workerfix_path() {
39*fb1b10abSAndroid Build Coastguard Worker    $FIXPATH "$@"
40*fb1b10abSAndroid Build Coastguard Worker}
41*fb1b10abSAndroid Build Coastguard Worker
42*fb1b10abSAndroid Build Coastguard Worker# Corrects the paths in file_list in one pass for efficiency.
43*fb1b10abSAndroid Build Coastguard Worker# $1 is the name of the array to be modified.
44*fb1b10abSAndroid Build Coastguard Workerfix_file_list() {
45*fb1b10abSAndroid Build Coastguard Worker    if [ "${FIXPATH}" = "echo_path" ] ; then
46*fb1b10abSAndroid Build Coastguard Worker      # When used with echo_path, fix_file_list is a no-op. Avoid warning about
47*fb1b10abSAndroid Build Coastguard Worker      # unsupported 'declare -n' when it is not important.
48*fb1b10abSAndroid Build Coastguard Worker      return 0
49*fb1b10abSAndroid Build Coastguard Worker    elif [ "${BASH_VERSINFO}" -lt 4 ] ; then
50*fb1b10abSAndroid Build Coastguard Worker      echo "Cygwin path conversion has failed. Please use a version of bash"
51*fb1b10abSAndroid Build Coastguard Worker      echo "which supports nameref (-n), introduced in bash 4.3"
52*fb1b10abSAndroid Build Coastguard Worker      return 1
53*fb1b10abSAndroid Build Coastguard Worker    fi
54*fb1b10abSAndroid Build Coastguard Worker    declare -n array_ref=$1
55*fb1b10abSAndroid Build Coastguard Worker    files=$(fix_path "${array_ref[@]}")
56*fb1b10abSAndroid Build Coastguard Worker    local IFS=$'\n'
57*fb1b10abSAndroid Build Coastguard Worker    array_ref=($files)
58*fb1b10abSAndroid Build Coastguard Worker}
59*fb1b10abSAndroid Build Coastguard Worker
60*fb1b10abSAndroid Build Coastguard Workergenerate_uuid() {
61*fb1b10abSAndroid Build Coastguard Worker    local hex="0123456789ABCDEF"
62*fb1b10abSAndroid Build Coastguard Worker    local i
63*fb1b10abSAndroid Build Coastguard Worker    local uuid=""
64*fb1b10abSAndroid Build Coastguard Worker    local j
65*fb1b10abSAndroid Build Coastguard Worker    #93995380-89BD-4b04-88EB-625FBE52EBFB
66*fb1b10abSAndroid Build Coastguard Worker    for ((i=0; i<32; i++)); do
67*fb1b10abSAndroid Build Coastguard Worker        (( j = $RANDOM % 16 ))
68*fb1b10abSAndroid Build Coastguard Worker        uuid="${uuid}${hex:$j:1}"
69*fb1b10abSAndroid Build Coastguard Worker    done
70*fb1b10abSAndroid Build Coastguard Worker    echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}"
71*fb1b10abSAndroid Build Coastguard Worker}
72*fb1b10abSAndroid Build Coastguard Worker
73*fb1b10abSAndroid Build Coastguard Workerindent1="    "
74*fb1b10abSAndroid Build Coastguard Workerindent=""
75*fb1b10abSAndroid Build Coastguard Workerindent_push() {
76*fb1b10abSAndroid Build Coastguard Worker    indent="${indent}${indent1}"
77*fb1b10abSAndroid Build Coastguard Worker}
78*fb1b10abSAndroid Build Coastguard Workerindent_pop() {
79*fb1b10abSAndroid Build Coastguard Worker    indent="${indent%${indent1}}"
80*fb1b10abSAndroid Build Coastguard Worker}
81*fb1b10abSAndroid Build Coastguard Worker
82*fb1b10abSAndroid Build Coastguard Workertag_attributes() {
83*fb1b10abSAndroid Build Coastguard Worker    for opt in "$@"; do
84*fb1b10abSAndroid Build Coastguard Worker        optval="${opt#*=}"
85*fb1b10abSAndroid Build Coastguard Worker        [ -n "${optval}" ] ||
86*fb1b10abSAndroid Build Coastguard Worker            die "Missing attribute value in '$opt' while generating $tag tag"
87*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}${opt%%=*}=\"${optval}\""
88*fb1b10abSAndroid Build Coastguard Worker    done
89*fb1b10abSAndroid Build Coastguard Worker}
90*fb1b10abSAndroid Build Coastguard Worker
91*fb1b10abSAndroid Build Coastguard Workeropen_tag() {
92*fb1b10abSAndroid Build Coastguard Worker    local tag=$1
93*fb1b10abSAndroid Build Coastguard Worker    shift
94*fb1b10abSAndroid Build Coastguard Worker    if [ $# -ne 0 ]; then
95*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}<${tag}"
96*fb1b10abSAndroid Build Coastguard Worker        indent_push
97*fb1b10abSAndroid Build Coastguard Worker        tag_attributes "$@"
98*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}>"
99*fb1b10abSAndroid Build Coastguard Worker    else
100*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}<${tag}>"
101*fb1b10abSAndroid Build Coastguard Worker        indent_push
102*fb1b10abSAndroid Build Coastguard Worker    fi
103*fb1b10abSAndroid Build Coastguard Worker}
104*fb1b10abSAndroid Build Coastguard Worker
105*fb1b10abSAndroid Build Coastguard Workerclose_tag() {
106*fb1b10abSAndroid Build Coastguard Worker    local tag=$1
107*fb1b10abSAndroid Build Coastguard Worker    indent_pop
108*fb1b10abSAndroid Build Coastguard Worker    echo "${indent}</${tag}>"
109*fb1b10abSAndroid Build Coastguard Worker}
110*fb1b10abSAndroid Build Coastguard Worker
111*fb1b10abSAndroid Build Coastguard Workertag() {
112*fb1b10abSAndroid Build Coastguard Worker    local tag=$1
113*fb1b10abSAndroid Build Coastguard Worker    shift
114*fb1b10abSAndroid Build Coastguard Worker    if [ $# -ne 0 ]; then
115*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}<${tag}"
116*fb1b10abSAndroid Build Coastguard Worker        indent_push
117*fb1b10abSAndroid Build Coastguard Worker        tag_attributes "$@"
118*fb1b10abSAndroid Build Coastguard Worker        indent_pop
119*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}/>"
120*fb1b10abSAndroid Build Coastguard Worker    else
121*fb1b10abSAndroid Build Coastguard Worker        echo "${indent}<${tag}/>"
122*fb1b10abSAndroid Build Coastguard Worker    fi
123*fb1b10abSAndroid Build Coastguard Worker}
124*fb1b10abSAndroid Build Coastguard Worker
125