9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
LIONBUILD=1
fi
# Usage function
usage() {
echo "Usage: build_osx.sh <target>"
echo Where target is one of:
echo " panther - (Builds 10.3 Library for PPCG3) (LEGACY)"
echo " tiger - (Builds Universal 10.4 Library for PPCG3/i386) (LEGACY)"
echo " leopard - (Builds Universal 10.5 Library for PPCG4/i386)"
echo " snowleopard - (Builds Universal 10.6 Library for i386/x86_64)"
echo " lion - (Builds Universal 10.7 Library for i386/x86_64)"
echo " all - (Builds for all supported targets)"
echo " legacy - (Builds for all supported targets older than 10.7)"
echo " clean - (Cleans up)"
echo "Run from CACKey Build Root."
exit $?
}
# Clean up function
clean() {
rm -f build/cackey_osx_build/cackey.dylib
rm -rf build/cackey_osx_build/PKCS11.tokend
rm -rf PKCS11.tokend
rm -rf macbuild
rm -rf build/cackey_osx_build/*.pmdoc
make distclean
}
# Directory creation function
makedir() {
if [ "`uname -r | cut -d . -f 1`" -lt "10" ]; then
LIBTOOLDIR=/Developer/usr/share/libtool
else
LIBTOOLDIR=/Developer/usr/share/libtool/config
fi
if [ ! -d macbuild ]; then
mkdir macbuild
mkdir macbuild/Panther
mkdir macbuild/Tiger
mkdir macbuild/Leopard
mkdir macbuild/Snowleopard
mkdir macbuild/Lion
mkdir macbuild/pkg
fi
if [ ! -f config.guess ]; then
cp ${LIBTOOLDIR}/config.guess .
fi
if [ ! -f config.sub ]; then
cp ${LIBTOOLDIR}/config.sub .
fi
if [ ! -f install-sh ]; then
cp ${LIBTOOLDIR}/install-sh .
fi
}
# Build function for Panther
panther() {
makedir
HEADERS=/Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/
LIBRARY=/Developer/SDKs/MacOSX10.3.9.sdk/System/Library/Frameworks/PCSC.framework/PCSC
OSX=Panther
PKTARGETOS=1
NEXTOSXVER=10.4
CUROSXVER=10.3
HOST=powerpc-apple-darwin7
make distclean
ARCH="ppc -mcpu=G3"
CFLAGS="-arch ${ARCH}" ./configure --with-pcsc-headers=${HEADERS} --with-pcsc-libs=${LIBRARY} --host=${HOST}
make
cp libcackey.dylib macbuild/${OSX}/libcackey.dylib
cp libcackey_g.dylib macbuild/${OSX}/libcackey_g.dylib
pkgbuild
}
# Build function for Tiger
tiger() {
makedir
HEADERS=/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/
LIBRARY=/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/PCSC.framework/PCSC
LIB=""
ARCHLIST=""
DLIB=""
DARCHLIST=""
OSX=Tiger
PKTARGETOS=2
NEXTOSXVER=10.5
CUROSXVER=10.4
for HOST in powerpc-apple-darwin8 i386-apple-darwin8; do
genbuild
done
libbuild
pkgbuild
}
# Build function for Leopard
leopard() {
makedir
HEADERS=/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/PCSC.framework/Versions/A/Headers/
LIBRARY=/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/PCSC.framework/PCSC
LIB=""
ARCHLIST=""
|
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
if [ "`uname -r | cut -d . -f 1`" -lt "10" ]; then
LIBCACKEYG=libcackeyg.pkg
else
LIBCACKEYG=libcackey_g.pkg
fi
rm -f build/cackey_osx_build/cackey.dylib
ln macbuild/${OSX}/libcackey.dylib build/cackey_osx_build/cackey.dylib
rm -rf build/cackey_osx_build/PKCS11.tokend
if [ "${LIONBUILD}" = 1 ]; then
TAR=gnutar
else
TAR=tar
fi
if [ "${OSX}" = "Leopard" ]; then
curl http://devel.kvanals.org/PKCS11_Tokend/PKCS11_tokend-latest.tar.gz | ${TAR} --strip-components 3 --wildcards -x -z -f - "PKCS11_tokend-*/prebuilt/leopard/PKCS11.tokend"
mv PKCS11.tokend build/cackey_osx_build/PKCS11.tokend
else
curl http://devel.kvanals.org/PKCS11_Tokend/PKCS11_tokend-latest.tar.gz | ${TAR} --strip-components 3 --wildcards -x -z -f - "PKCS11_tokend-*/prebuilt/snowleopard/PKCS11.tokend"
mv PKCS11.tokend build/cackey_osx_build/PKCS11.tokend
fi
for PMDOC in build/cackey_osx_build/Template_pmbuild/*.in; do
PMDOC="`echo "${PMDOC}" | sed 's|l.in|l|g' | sed 's|build/cackey_osx_build/Template_pmbuild/||g'`"
UUID="`python -c 'import uuid; print uuid.uuid1()' | dd conv=ucase 2>/dev/null`"
mkdir -p build/cackey_osx_build/${OSX}_pmbuild.pmdoc
sed "s|@@BUILDROOTDIR@@|$(pwd)|g" build/cackey_osx_build/Template_pmbuild/${PMDOC}.in > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}
sed "s|@@OSXVERSION@@|${OSX}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC} > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1
sed "s|@@UUID@@|${UUID}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1 > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}
sed "s|@@TARGETOS@@|${PKTARGETOS}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC} > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1
sed "s|@@NEXTOSXVER@@|${NEXTOSXVER}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1 > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}
sed "s|@@CUROSXVER@@|${CUROSXVER}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC} > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1
sed "s|@@LIBCACKEYG@@|${LIBCACKEYG}|g" build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1 > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}
cp build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC} build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1
mv build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}.1 build/cackey_osx_build/${OSX}_pmbuild.pmdoc/${PMDOC}
done
if [ ${OSX} == "Panther" ]; then
EXT=mpkg
cat build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml | grep -v -i require > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml.new
mv build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml.new build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml
else
EXT=pkg
EXT=pkg
fi
if [ ${OSX} == "Snowleopard" ]; then
cat build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml | sed 's|for Mac OS X Snowleopard|for Mac OS X SnowLeopard|g' > build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml.new
mv build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml.new build/cackey_osx_build/${OSX}_pmbuild.pmdoc/index.xml
fi
/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -d build/cackey_osx_build/${OSX}_pmbuild.pmdoc -o macbuild/pkg/CACKey_${CACKEY_VERSION}_${OSX}.${EXT}
tar --create --directory macbuild/pkg/ --file macbuild/pkg/CACKey_${CACKEY_VERSION}_${OSX}.${EXT}.tar CACKey_${CACKEY_VERSION}_${OSX}.${EXT}
gzip -9 macbuild/pkg/CACKey_${CACKEY_VERSION}_${OSX}.${EXT}.tar
rm -rf macbuild/pkg/CACKey_${CACKEY_VERSION}_${OSX}.${EXT}
rm -f build/cackey_osx_build/cackey.dylib
rm -rf build/cackey_osx_build/PKCS11.tokend
echo "${OSX} build complete"
}
# Take command line arguments and execute
case "$1" in
"")
usage
exit $?
;;
"panther")
if [ "${LIONBUILD}" = "1" ]; then
echo "Building for platforms older than Mac OS X 10.5 (Leopard) is not supported on Lion..."
exit 1
fi
./autogen.sh
panther
exit $?
;;
"tiger")
if [ "${LIONBUILD}" = "1" ]; then
echo "Building for platforms older than Mac OS X 10.5 (Leopard) is not supported on Lion..."
exit 1
fi
./autogen.sh
tiger
exit $?
;;
"leopard")
./autogen.sh
leopard
exit $?
|
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
|
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
snowleopard
lion
echo ""
echo "All builds complete."
exit $?
;;
"legacy")
if [ "${LIONBUILD}" = "1" ]; then
echo "Building for platforms older than Mac OS X 10.5 (Leopard) is not supported on Lion..."
exit 1
fi
./autogen.sh
panther
tiger
leopard
snowleopard
echo ""
echo "All LEGACY builds complete."
exit $?
;;
"clean")
clean
exit $?
;;
*)
usage
exit $?
;;
esac
|