| #!/bin/bash |
| ## Copyright (c) 2016, Alliance for Open Media. All rights reserved |
| ## |
| ## This source code is subject to the terms of the BSD 2 Clause License and |
| ## the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
| ## was not distributed with this source code in the LICENSE file, you can |
| ## obtain it at www.aomedia.org/license/software. If the Alliance for Open |
| ## Media Patent License 1.0 was not distributed with this source code in the |
| ## PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
| ## |
| |
| 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 |