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