xref: /xnu-10063.121.3/config/generate_symbolset_plist.sh (revision 2c2f96dc2b9a4408a43d3150ae9c105355ca3daa)
1*2c2f96dcSApple OSS Distributions#!/bin/sh
2*2c2f96dcSApple OSS Distributions
3*2c2f96dcSApple OSS Distributionsset -e
4*2c2f96dcSApple OSS Distributions
5*2c2f96dcSApple OSS Distributionsif [ $# -lt 3 ]; then
6*2c2f96dcSApple OSS Distributions    echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2
7*2c2f96dcSApple OSS Distributions    exit 1
8*2c2f96dcSApple OSS Distributionsfi
9*2c2f96dcSApple OSS Distributions
10*2c2f96dcSApple OSS DistributionsOUTPUT="$1"
11*2c2f96dcSApple OSS DistributionsPLIST="$2"
12*2c2f96dcSApple OSS Distributionsif [ "${OUTPUT##*.}" != "plist" -o "${PLIST##*.}" != "plist" ]; then
13*2c2f96dcSApple OSS Distributions    echo "Usage: $0 output.plist Info.plist input1.exports [input2.exports ... ]" 1>&2
14*2c2f96dcSApple OSS Distributions    exit 1
15*2c2f96dcSApple OSS Distributionsfi
16*2c2f96dcSApple OSS Distributionsshift 2
17*2c2f96dcSApple OSS Distributions
18*2c2f96dcSApple OSS Distributionsif [ $(egrep -c 'CFBundleIdentifier|OSBundleCompatibleVersion|CFBundleVersion' $PLIST) -lt 3 ]; then
19*2c2f96dcSApple OSS Distributions    echo "error: Invalid input Info.plist $PLIST" 1>&2
20*2c2f96dcSApple OSS Distributions    exit 1
21*2c2f96dcSApple OSS Distributionsfi
22*2c2f96dcSApple OSS Distributions
23*2c2f96dcSApple OSS Distributionsprintf \
24*2c2f96dcSApple OSS Distributions'<?xml version="1.0" encoding="UTF-8"?>
25*2c2f96dcSApple OSS Distributions<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
26*2c2f96dcSApple OSS Distributions<plist version="1.0">
27*2c2f96dcSApple OSS Distributions<dict>
28*2c2f96dcSApple OSS Distributions' > "$OUTPUT"
29*2c2f96dcSApple OSS Distributions
30*2c2f96dcSApple OSS Distributionsawk '
31*2c2f96dcSApple OSS Distributions	/CFBundleIdentifier|OSBundleCompatibleVersion|CFBundleVersion/ {
32*2c2f96dcSApple OSS Distributions		print; getline; print
33*2c2f96dcSApple OSS Distributions	}
34*2c2f96dcSApple OSS Distributions' $PLIST >> "$OUTPUT"
35*2c2f96dcSApple OSS Distributions
36*2c2f96dcSApple OSS Distributionssort -u "$@" | awk -F: '
37*2c2f96dcSApple OSS Distributions	BEGIN {
38*2c2f96dcSApple OSS Distributions		print "	<key>Symbols</key>"
39*2c2f96dcSApple OSS Distributions		print "	<array>"
40*2c2f96dcSApple OSS Distributions	}
41*2c2f96dcSApple OSS Distributions	$2 ~ /^_/ {
42*2c2f96dcSApple OSS Distributions		print "		<dict>"
43*2c2f96dcSApple OSS Distributions		print "			<key>SymbolName</key>"
44*2c2f96dcSApple OSS Distributions		print "			<string>"$1"</string>"
45*2c2f96dcSApple OSS Distributions		print "			<key>AliasTarget</key>"
46*2c2f96dcSApple OSS Distributions		print "			<string>"$2"</string>"
47*2c2f96dcSApple OSS Distributions		print "		</dict>"
48*2c2f96dcSApple OSS Distributions		next
49*2c2f96dcSApple OSS Distributions	}
50*2c2f96dcSApple OSS Distributions	$1 ~ /^_.*\*$/ {
51*2c2f96dcSApple OSS Distributions		print "		<dict>"
52*2c2f96dcSApple OSS Distributions		print "			<key>SymbolPrefix</key>"
53*2c2f96dcSApple OSS Distributions		print "			<string>"substr($1, 1, length($1) - 1)"</string>"
54*2c2f96dcSApple OSS Distributions		print "		</dict>"
55*2c2f96dcSApple OSS Distributions		next
56*2c2f96dcSApple OSS Distributions	}
57*2c2f96dcSApple OSS Distributions	$1 ~ /^_/ {
58*2c2f96dcSApple OSS Distributions		print "		<dict>"
59*2c2f96dcSApple OSS Distributions		print "			<key>SymbolName</key>"
60*2c2f96dcSApple OSS Distributions		print "			<string>"$1"</string>"
61*2c2f96dcSApple OSS Distributions		print "		</dict>"
62*2c2f96dcSApple OSS Distributions		next
63*2c2f96dcSApple OSS Distributions	}
64*2c2f96dcSApple OSS Distributions	END {
65*2c2f96dcSApple OSS Distributions		print "	</array>"
66*2c2f96dcSApple OSS Distributions	}
67*2c2f96dcSApple OSS Distributions' >> "$OUTPUT"
68*2c2f96dcSApple OSS Distributions
69*2c2f96dcSApple OSS Distributionsprintf \
70*2c2f96dcSApple OSS Distributions'</dict>
71*2c2f96dcSApple OSS Distributions</plist>
72*2c2f96dcSApple OSS Distributions' >> "$OUTPUT"
73*2c2f96dcSApple OSS Distributions
74*2c2f96dcSApple OSS Distributionsexit 0
75