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