1#!/bin/sh
2
3###############################################################################
4# Author: Anders F Bj��rklund <afb@users.sourceforge.net>
5#
6# This file has been put into the public domain.
7# You can do whatever you want with this file.
8###############################################################################
9
10mkdir -p Root
11mkdir -p Resources
12
13# Abort immediately if something goes wrong.
14set -e
15
16GCC="gcc-4.2"
17SDK="/Developer/SDKs/MacOSX10.5.sdk"
18MDT="10.5"
19GTT=i686-apple-darwin9
20
21ARCHES1="-arch ppc -arch ppc64 -arch i386 -arch x86_64"
22ARCHES2="-arch ppc -arch i386"
23PKGFORMAT="10.5" # xar
24
25# avoid "unknown required load command: 0x80000022" from linking on Snow Leopard
26uname -r | grep ^1 >/dev/null && LDFLAGS="$LDFLAGS -Wl,-no_compact_linkedit"
27
28# Clean up if it was already configured.
29[ -f Makefile ] && make distclean
30
31# Build the regular fat program
32
33CC="$GCC" \
34CFLAGS="-O2 -g $ARCHES1 -isysroot $SDK -mmacosx-version-min=$MDT" \
35../configure --disable-dependency-tracking --disable-xzdec --disable-lzmadec $GTT
36
37make
38
39make check
40
41make DESTDIR=`pwd`/Root install
42
43make distclean
44
45# Build the size-optimized program
46
47CC="$GCC" \
48CFLAGS="-Os -g $ARCHES2 -isysroot $SDK -mmacosx-version-min=$MDT" \
49../configure --disable-dependency-tracking --disable-shared --disable-nls --disable-encoders --enable-small --disable-threads $GTT
50
51make -C src/liblzma
52make -C src/xzdec
53make -C src/xzdec DESTDIR=`pwd`/Root install
54
55cp -a ../extra Root/usr/local/share/doc/xz
56
57make distclean
58
59# Move development files to different package
60
61test -d liblzma && rm -r liblzma
62mkdir -p liblzma/usr/local
63
64mv Root/usr/local/include liblzma/usr/local
65mv Root/usr/local/lib liblzma/usr/local
66
67mkdir -p Root/usr/local/lib
68cp -p liblzma/usr/local/lib/liblzma.5.dylib Root/usr/local/lib
69mkdir -p liblzma/usr/local/share/doc/xz
70mv Root/usr/local/share/doc/xz/examples* liblzma/usr/local/share/doc/xz
71
72# Strip debugging symbols and make relocatable
73
74for bin in xz lzmainfo xzdec lzmadec; do
75    strip -S Root/usr/local/bin/$bin
76    install_name_tool -change /usr/local/lib/liblzma.5.dylib @executable_path/../lib/liblzma.5.dylib Root/usr/local/bin/$bin
77done
78
79for lib in liblzma.5.dylib; do
80    strip -S Root/usr/local/lib/$lib
81    install_name_tool -id @executable_path/../lib/liblzma.5.dylib Root/usr/local/lib/$lib
82done
83
84# Create tarball, but without the HFS+ attrib
85
86rmdir debug lib po src/liblzma/api src/liblzma src/lzmainfo src/scripts src/xz src/xzdec src tests
87
88( cd Root/usr/local; COPY_EXTENDED_ATTRIBUTES_DISABLE=true COPYFILE_DISABLE=true tar cvjf ../../../XZ.tbz * )
89( cd liblzma; COPY_EXTENDED_ATTRIBUTES_DISABLE=true COPYFILE_DISABLE=true tar cvjf ../liblzma.tbz ./usr/local )
90
91# Include documentation files for package
92
93cp -p ../README Resources/ReadMe.txt
94cp -p ../COPYING Resources/License.txt
95
96# Make an Installer.app package
97
98ID="org.tukaani.xz"
99VERSION=`cd ..; sh build-aux/version.sh`
100PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
101$PACKAGEMAKER -r Root/usr/local -l /usr/local -e Resources -i $ID -n $VERSION -t XZ -o XZ.pkg -g $PKGFORMAT --verbose
102$PACKAGEMAKER -r liblzma -w -k -i $ID.liblzma -n $VERSION -o liblzma.pkg -g $PKGFORMAT --verbose
103
104# Put the package in a disk image
105
106if [ "$PKGFORMAT" != "10.5" ]; then
107hdiutil create -fs HFS+ -format UDZO -quiet -srcfolder XZ.pkg -ov XZ.dmg
108hdiutil internet-enable -yes -quiet XZ.dmg
109fi
110
111echo
112echo "Build completed successfully."
113echo
114