blob: 4defcc2e7c7e5f25339c5a23ac9a57b4c7aec36f [file] [log] [blame]
#!/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