]> git.saurik.com Git - apple/xnu.git/blob - config/generate_symbolset_plist.sh
xnu-7195.81.3.tar.gz
[apple/xnu.git] / config / generate_symbolset_plist.sh
1 #!/bin/sh
2
3 set -e
4
5 if [ $# -lt 3 ]; then
6 echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2
7 exit 1
8 fi
9
10 OUTPUT="$1"
11 PLIST="$2"
12 if [ "${OUTPUT##*.}" != "plist" -o "${PLIST##*.}" != "plist" ]; then
13 echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2
14 exit 1
15 fi
16 shift 2
17
18 printf \
19 '<?xml version="1.0" encoding="UTF-8"?>
20 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
21 <plist version="1.0">
22 <dict>
23 ' > "$OUTPUT"
24
25 awk '
26 /CFBundleIdentifier|OSBundleCompatibleVersion|CFBundleVersion/ {
27 print; getline; print
28 }
29 ' $PLIST >> "$OUTPUT"
30
31 sort -u "$@" | awk -F: '
32 BEGIN {
33 print " <key>Symbols</key>"
34 print " <array>"
35 }
36 $2 ~ /^_/ {
37 print " <dict>"
38 print " <key>SymbolName</key>"
39 print " <string>"$1"</string>"
40 print " <key>AliasTarget</key>"
41 print " <string>"$2"</string>"
42 print " </dict>"
43 next
44 }
45 $1 ~ /^_.*\*$/ {
46 print " <dict>"
47 print " <key>SymbolPrefix</key>"
48 print " <string>"substr($1, 1, length($1) - 1)"</string>"
49 print " </dict>"
50 next
51 }
52 $1 ~ /^_/ {
53 print " <dict>"
54 print " <key>SymbolName</key>"
55 print " <string>"$1"</string>"
56 print " </dict>"
57 next
58 }
59 END {
60 print " </array>"
61 }
62 ' >> "$OUTPUT"
63
64 printf \
65 '</dict>
66 </plist>
67 ' >> "$OUTPUT"
68
69 exit 0