84 строки
1.9 KiB
Bash
Executable File
84 строки
1.9 KiB
Bash
Executable File
#!/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
|