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