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