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