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