|  | #!/bin/bash | 
|  | ## | 
|  | ##  Copyright (c) 2010 The WebM project authors. All Rights Reserved. | 
|  | ## | 
|  | ##  Use of this source code is governed by a BSD-style license | 
|  | ##  that can be found in the LICENSE file in the root of the source | 
|  | ##  tree. An additional intellectual property rights grant can be found | 
|  | ##  in the file PATENTS.  All contributing project authors may | 
|  | ##  be found in the AUTHORS file in the root of the source tree. | 
|  | ## | 
|  |  | 
|  |  | 
|  | self=$0 | 
|  | self_basename=${self##*/} | 
|  | EOL=$'\n' | 
|  |  | 
|  | show_help() { | 
|  | cat <<EOF | 
|  | Usage: ${self_basename} [options] file1 [file2 ...] | 
|  |  | 
|  | This script generates a MSVC module definition file containing a list of symbols | 
|  | to export from a DLL. Source files are technically bash scripts (and thus may | 
|  | use #comment syntax) but in general, take the form of a list of symbols: | 
|  |  | 
|  | <kind> symbol1 [symbol2, symbol3, ...] | 
|  |  | 
|  | where <kind> is either 'text' or 'data' | 
|  |  | 
|  |  | 
|  | Options: | 
|  | --help                      Print this message | 
|  | --out=filename              Write output to a file [stdout] | 
|  | --name=project_name         Name of the library (required) | 
|  | EOF | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | die() { | 
|  | echo "${self_basename}: $@" | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | die_unknown(){ | 
|  | echo "Unknown option \"$1\"." | 
|  | echo "See ${self_basename} --help for available options." | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | text() { | 
|  | for sym in "$@"; do | 
|  | echo "  $sym" >> ${outfile} | 
|  | done | 
|  | } | 
|  |  | 
|  | data() { | 
|  | for sym in "$@"; do | 
|  | printf "  %-40s DATA\n" "$sym" >> ${outfile} | 
|  | done | 
|  | } | 
|  |  | 
|  | # Process command line | 
|  | for opt in "$@"; do | 
|  | optval="${opt#*=}" | 
|  | case "$opt" in | 
|  | --help|-h) show_help | 
|  | ;; | 
|  | --out=*) outfile="$optval" | 
|  | ;; | 
|  | --name=*) name="${optval}" | 
|  | ;; | 
|  | -*) die_unknown $opt | 
|  | ;; | 
|  | *) file_list[${#file_list[@]}]="$opt" | 
|  | esac | 
|  | done | 
|  | outfile=${outfile:-/dev/stdout} | 
|  | [ -n "$name" ] || die "Library name (--name) must be specified!" | 
|  |  | 
|  | echo "LIBRARY ${name}" > ${outfile} | 
|  | echo "EXPORTS" >> ${outfile} | 
|  | for f in "${file_list[@]}"; do | 
|  | . $f | 
|  | done |