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