summaryrefslogtreecommitdiffstats
path: root/media/libvpx/libvpx/build/make/gen_msvs_def.sh
blob: 4defcc2e7c7e5f25339c5a23ac9a57b4c7aec36f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/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