1#!/bin/sh 2 3set -u 4set -e 5trap onexit INT 6trap onexit TERM 7trap onexit EXIT 8 9TMPDIR= 10 11onexit() 12{ 13 if [ ! "$TMPDIR" = "" ]; then 14 rm -rf $TMPDIR 15 fi 16} 17 18safedirmove () 19{ 20 if [ "$1" = "$2" ]; then 21 return 0 22 fi 23 if [ "$1" = "" -o ! -d "$1" ]; then 24 echo safedirmove: source dir $1 is not valid 25 return 1 26 fi 27 if [ "$2" = "" -o -e "$2" ]; then 28 echo safedirmove: dest dir $2 is not valid 29 return 1 30 fi 31 if [ "$3" = "" -o -e "$3" ]; then 32 echo safedirmove: tmp dir $3 is not valid 33 return 1 34 fi 35 mkdir -p $3 36 mv $1/* $3/ 37 rmdir $1 38 mkdir -p $2 39 mv $3/* $2/ 40 rmdir $3 41 return 0 42} 43 44usage() 45{ 46 echo "$0 [-lipo [path to lipo]]" 47 exit 1 48} 49 50PKGNAME=@PKGNAME@ 51VERSION=@VERSION@ 52BUILD=@BUILD@ 53SRCDIR=@CMAKE_CURRENT_SOURCE_DIR@ 54BUILDDIRARMV8=@ARMV8_BUILD@ 55WITH_JAVA=@WITH_JAVA@ 56MACOS_APP_CERT_NAME="@MACOS_APP_CERT_NAME@" 57MACOS_INST_CERT_NAME="@MACOS_INST_CERT_NAME@" 58LIPO=lipo 59 60PREFIX=@CMAKE_INSTALL_PREFIX@ 61BINDIR=@CMAKE_INSTALL_FULL_BINDIR@ 62DOCDIR=@CMAKE_INSTALL_FULL_DOCDIR@ 63LIBDIR=@CMAKE_INSTALL_FULL_LIBDIR@ 64 65LIBJPEG_DSO_NAME=libjpeg.@SO_MAJOR_VERSION@.@SO_AGE@.@SO_MINOR_VERSION@.dylib 66TURBOJPEG_DSO_NAME=libturbojpeg.@TURBOJPEG_SO_VERSION@.dylib 67 68while [ $# -gt 0 ]; do 69 case $1 in 70 -h*) 71 usage 0 72 ;; 73 -lipo) 74 if [ $# -gt 1 ]; then 75 if [[ ! "$2" =~ -.* ]]; then 76 LIPO=$2; shift 77 fi 78 fi 79 ;; 80 esac 81 shift 82done 83 84if [ -f $PKGNAME-$VERSION.dmg ]; then 85 rm -f $PKGNAME-$VERSION.dmg 86fi 87 88umask 022 89TMPDIR=`mktemp -d /tmp/$PKGNAME-build.XXXXXX` 90PKGROOT=$TMPDIR/pkg/Package_Root 91mkdir -p $PKGROOT 92 93DESTDIR=$PKGROOT @CMAKE_MAKE_PROGRAM@ install 94 95if [ "$PREFIX" = "@CMAKE_INSTALL_DEFAULT_PREFIX@" -a "$DOCDIR" = "@CMAKE_INSTALL_DEFAULT_PREFIX@/doc" ]; then 96 mkdir -p $PKGROOT/Library/Documentation 97 safedirmove $PKGROOT$DOCDIR $PKGROOT/Library/Documentation/$PKGNAME $TMPDIR/__tmpdoc 98 ln -fs /Library/Documentation/$PKGNAME $PKGROOT$DOCDIR 99fi 100 101install_subbuild() 102{ 103 BUILDDIR=$1 104 ARCHNAME=$2 105 DIRNAME=$3 106 LIPOARCH=$4 107 108 if [ ! -d $BUILDDIR ]; then 109 echo ERROR: $ARCHNAME build directory $BUILDDIR does not exist 110 exit 1 111 fi 112 if [ ! -f $BUILDDIR/Makefile -a ! -f $BUILDDIR/build.ninja ]; then 113 echo ERROR: $ARCHNAME build directory $BUILDDIR is not configured 114 exit 1 115 fi 116 mkdir -p $TMPDIR/dist.$DIRNAME 117 pushd $BUILDDIR 118 DESTDIR=$TMPDIR/dist.$DIRNAME @CMAKE_MAKE_PROGRAM@ install 119 popd 120 $LIPO -create \ 121 $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME \ 122 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/$LIBJPEG_DSO_NAME \ 123 -output $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME 124 $LIPO -create \ 125 $PKGROOT/$LIBDIR/libjpeg.a \ 126 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/libjpeg.a \ 127 -output $PKGROOT/$LIBDIR/libjpeg.a 128 $LIPO -create \ 129 $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME \ 130 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/$TURBOJPEG_DSO_NAME \ 131 -output $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME 132 $LIPO -create \ 133 $PKGROOT/$LIBDIR/libturbojpeg.a \ 134 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/libturbojpeg.a \ 135 -output $PKGROOT/$LIBDIR/libturbojpeg.a 136 $LIPO -create \ 137 $PKGROOT/$BINDIR/cjpeg \ 138 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/cjpeg \ 139 -output $PKGROOT/$BINDIR/cjpeg 140 $LIPO -create \ 141 $PKGROOT/$BINDIR/djpeg \ 142 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/djpeg \ 143 -output $PKGROOT/$BINDIR/djpeg 144 $LIPO -create \ 145 $PKGROOT/$BINDIR/jpegtran \ 146 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/jpegtran \ 147 -output $PKGROOT/$BINDIR/jpegtran 148 $LIPO -create \ 149 $PKGROOT/$BINDIR/tjbench \ 150 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/tjbench \ 151 -output $PKGROOT/$BINDIR/tjbench 152 $LIPO -create \ 153 $PKGROOT/$BINDIR/rdjpgcom \ 154 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/rdjpgcom \ 155 -output $PKGROOT/$BINDIR/rdjpgcom 156 $LIPO -create \ 157 $PKGROOT/$BINDIR/wrjpgcom \ 158 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/wrjpgcom \ 159 -output $PKGROOT/$BINDIR/wrjpgcom 160} 161 162if [ "$BUILDDIRARMV8" != "" ]; then 163 install_subbuild $BUILDDIRARMV8 Armv8 armv8 arm64 164fi 165 166install_name_tool -id $LIBDIR/$LIBJPEG_DSO_NAME $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME 167install_name_tool -id $LIBDIR/$TURBOJPEG_DSO_NAME $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME 168 169if [ "$PREFIX" = "@CMAKE_INSTALL_DEFAULT_PREFIX@" -a "$LIBDIR" = "@CMAKE_INSTALL_DEFAULT_PREFIX@/lib" ]; then 170 if [ ! -h $PKGROOT/$PREFIX/lib64 ]; then 171 ln -fs lib $PKGROOT/$PREFIX/lib64 172 fi 173fi 174 175mkdir -p $TMPDIR/pkg 176 177install -m 755 pkgscripts/uninstall $PKGROOT/$BINDIR/ 178 179find $PKGROOT -type f | while read file; do xattr -c $file; done 180 181cp $SRCDIR/release/License.rtf pkgscripts/Welcome.rtf $SRCDIR/release/ReadMe.txt $TMPDIR/pkg/ 182 183mkdir $TMPDIR/dmg 184pkgbuild --root $PKGROOT --version $VERSION.$BUILD --identifier @PKGID@ \ 185 $TMPDIR/pkg/$PKGNAME.pkg 186SUFFIX= 187if [ "$MACOS_INST_CERT_NAME" != "" ]; then 188 SUFFIX=-unsigned 189fi 190productbuild --distribution pkgscripts/Distribution.xml \ 191 --package-path $TMPDIR/pkg/ --resources $TMPDIR/pkg/ \ 192 $TMPDIR/dmg/$PKGNAME$SUFFIX.pkg 193if [ "$MACOS_INST_CERT_NAME" != "" ]; then 194 productsign --sign "$MACOS_INST_CERT_NAME" --timestamp \ 195 $TMPDIR/dmg/$PKGNAME$SUFFIX.pkg $TMPDIR/dmg/$PKGNAME.pkg 196 rm -r $TMPDIR/dmg/$PKGNAME$SUFFIX.pkg 197 pkgutil --check-signature $TMPDIR/dmg/$PKGNAME.pkg 198fi 199hdiutil create -fs HFS+ -volname $PKGNAME-$VERSION \ 200 -srcfolder "$TMPDIR/dmg" $TMPDIR/$PKGNAME-$VERSION.dmg 201if [ "$MACOS_APP_CERT_NAME" != "" ]; then 202 codesign -s "$MACOS_APP_CERT_NAME" --timestamp $TMPDIR/$PKGNAME-$VERSION.dmg 203 codesign -vv $TMPDIR/$PKGNAME-$VERSION.dmg 204fi 205cp $TMPDIR/$PKGNAME-$VERSION.dmg . 206 207exit 208