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