| #!/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 |