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