Home | History | Annotate | Download | only in make
      1 #!/bin/bash
      2 ##
      3 ##  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
      4 ##
      5 ##  Use of this source code is governed by a BSD-style license
      6 ##  that can be found in the LICENSE file in the root of the source
      7 ##  tree. An additional intellectual property rights grant can be found
      8 ##  in the file PATENTS.  All contributing project authors may
      9 ##  be found in the AUTHORS file in the root of the source tree.
     10 ##
     11 
     12 if [ "$(uname -o 2>/dev/null)" = "Cygwin" ] \
     13    && cygpath --help >/dev/null 2>&1; then
     14     FIXPATH='cygpath -m'
     15 else
     16     FIXPATH='echo_path'
     17 fi
     18 
     19 die() {
     20     echo "${self_basename}: $@" >&2
     21     exit 1
     22 }
     23 
     24 die_unknown(){
     25     echo "Unknown option \"$1\"." >&2
     26     echo "See ${self_basename} --help for available options." >&2
     27     exit 1
     28 }
     29 
     30 echo_path() {
     31     for path; do
     32         echo "$path"
     33     done
     34 }
     35 
     36 # Output one, possibly changed based on the system, path per line.
     37 fix_path() {
     38     $FIXPATH "$@"
     39 }
     40 
     41 # Corrects the paths in file_list in one pass for efficiency.
     42 # $1 is the name of the array to be modified.
     43 fix_file_list() {
     44     declare -n array_ref=$1
     45     files=$(fix_path "${array_ref[@]}")
     46     local IFS=$'\n'
     47     array_ref=($files)
     48 }
     49 
     50 generate_uuid() {
     51     local hex="0123456789ABCDEF"
     52     local i
     53     local uuid=""
     54     local j
     55     #93995380-89BD-4b04-88EB-625FBE52EBFB
     56     for ((i=0; i<32; i++)); do
     57         (( j = $RANDOM % 16 ))
     58         uuid="${uuid}${hex:$j:1}"
     59     done
     60     echo "${uuid:0:8}-${uuid:8:4}-${uuid:12:4}-${uuid:16:4}-${uuid:20:12}"
     61 }
     62 
     63 indent1="    "
     64 indent=""
     65 indent_push() {
     66     indent="${indent}${indent1}"
     67 }
     68 indent_pop() {
     69     indent="${indent%${indent1}}"
     70 }
     71 
     72 tag_attributes() {
     73     for opt in "$@"; do
     74         optval="${opt#*=}"
     75         [ -n "${optval}" ] ||
     76             die "Missing attribute value in '$opt' while generating $tag tag"
     77         echo "${indent}${opt%%=*}=\"${optval}\""
     78     done
     79 }
     80 
     81 open_tag() {
     82     local tag=$1
     83     shift
     84     if [ $# -ne 0 ]; then
     85         echo "${indent}<${tag}"
     86         indent_push
     87         tag_attributes "$@"
     88         echo "${indent}>"
     89     else
     90         echo "${indent}<${tag}>"
     91         indent_push
     92     fi
     93 }
     94 
     95 close_tag() {
     96     local tag=$1
     97     indent_pop
     98     echo "${indent}</${tag}>"
     99 }
    100 
    101 tag() {
    102     local tag=$1
    103     shift
    104     if [ $# -ne 0 ]; then
    105         echo "${indent}<${tag}"
    106         indent_push
    107         tag_attributes "$@"
    108         indent_pop
    109         echo "${indent}/>"
    110     else
    111         echo "${indent}<${tag}/>"
    112     fi
    113 }
    114 
    115