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 [universal] [-lipo [path to lipo]]" 47 exit 1 48} 49 50UNIVERSAL=0 51 52PKGNAME=@PKGNAME@ 53VERSION=@VERSION@ 54BUILD=@BUILD@ 55SRCDIR=@CMAKE_CURRENT_SOURCE_DIR@ 56BUILDDIR32=@OSX_32BIT_BUILD@ 57BUILDDIRARMV7=@IOS_ARMV7_BUILD@ 58BUILDDIRARMV7S=@IOS_ARMV7S_BUILD@ 59BUILDDIRARMV8=@IOS_ARMV8_BUILD@ 60WITH_JAVA=@WITH_JAVA@ 61LIPO=lipo 62 63PREFIX=@CMAKE_INSTALL_PREFIX@ 64BINDIR=@CMAKE_INSTALL_FULL_BINDIR@ 65DOCDIR=@CMAKE_INSTALL_FULL_DOCDIR@ 66LIBDIR=@CMAKE_INSTALL_FULL_LIBDIR@ 67 68LIBJPEG_DSO_NAME=libjpeg.@SO_MAJOR_VERSION@.@SO_AGE@.@SO_MINOR_VERSION@.dylib 69TURBOJPEG_DSO_NAME=libturbojpeg.@TURBOJPEG_SO_VERSION@.dylib 70 71while [ $# -gt 0 ]; do 72 case $1 in 73 -h*) 74 usage 0 75 ;; 76 -lipo) 77 if [ $# -gt 1 ]; then 78 if [[ ! "$2" =~ -.* ]]; then 79 LIPO=$2; shift 80 fi 81 fi 82 ;; 83 universal) 84 UNIVERSAL=1 85 ;; 86 esac 87 shift 88done 89 90if [ -f $PKGNAME-$VERSION.dmg ]; then 91 rm -f $PKGNAME-$VERSION.dmg 92fi 93 94umask 022 95TMPDIR=`mktemp -d /tmp/$PKGNAME-build.XXXXXX` 96PKGROOT=$TMPDIR/pkg/Package_Root 97mkdir -p $PKGROOT 98 99make install DESTDIR=$PKGROOT 100 101if [ "$PREFIX" = "@CMAKE_INSTALL_DEFAULT_PREFIX@" -a "$DOCDIR" = "@CMAKE_INSTALL_DEFAULT_PREFIX@/doc" ]; then 102 mkdir -p $PKGROOT/Library/Documentation 103 safedirmove $PKGROOT$DOCDIR $PKGROOT/Library/Documentation/$PKGNAME $TMPDIR/__tmpdoc 104 ln -fs /Library/Documentation/$PKGNAME $PKGROOT$DOCDIR 105fi 106 107if [ $UNIVERSAL = 1 -a "$BUILDDIR32" != "" ]; then 108 if [ ! -d $BUILDDIR32 ]; then 109 echo ERROR: 32-bit build directory $BUILDDIR32 does not exist 110 exit 1 111 fi 112 if [ ! -f $BUILDDIR32/Makefile ]; then 113 echo ERROR: 32-bit build directory $BUILDDIR32 is not configured 114 exit 1 115 fi 116 mkdir -p $TMPDIR/dist.x86 117 pushd $BUILDDIR32 118 make install DESTDIR=$TMPDIR/dist.x86 119 popd 120 $LIPO -create \ 121 -arch i386 $TMPDIR/dist.x86/$LIBDIR/$LIBJPEG_DSO_NAME \ 122 -arch x86_64 $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME \ 123 -output $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME 124 $LIPO -create \ 125 -arch i386 $TMPDIR/dist.x86/$LIBDIR/libjpeg.a \ 126 -arch x86_64 $PKGROOT/$LIBDIR/libjpeg.a \ 127 -output $PKGROOT/$LIBDIR/libjpeg.a 128 $LIPO -create \ 129 -arch i386 $TMPDIR/dist.x86/$LIBDIR/$TURBOJPEG_DSO_NAME \ 130 -arch x86_64 $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME \ 131 -output $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME 132 $LIPO -create \ 133 -arch i386 $TMPDIR/dist.x86/$LIBDIR/libturbojpeg.a \ 134 -arch x86_64 $PKGROOT/$LIBDIR/libturbojpeg.a \ 135 -output $PKGROOT/$LIBDIR/libturbojpeg.a 136 $LIPO -create \ 137 -arch i386 $TMPDIR/dist.x86/$BINDIR/cjpeg \ 138 -arch x86_64 $PKGROOT/$BINDIR/cjpeg \ 139 -output $PKGROOT/$BINDIR/cjpeg 140 $LIPO -create \ 141 -arch i386 $TMPDIR/dist.x86/$BINDIR/djpeg \ 142 -arch x86_64 $PKGROOT/$BINDIR/djpeg \ 143 -output $PKGROOT/$BINDIR/djpeg 144 $LIPO -create \ 145 -arch i386 $TMPDIR/dist.x86/$BINDIR/jpegtran \ 146 -arch x86_64 $PKGROOT/$BINDIR/jpegtran \ 147 -output $PKGROOT/$BINDIR/jpegtran 148 $LIPO -create \ 149 -arch i386 $TMPDIR/dist.x86/$BINDIR/tjbench \ 150 -arch x86_64 $PKGROOT/$BINDIR/tjbench \ 151 -output $PKGROOT/$BINDIR/tjbench 152 $LIPO -create \ 153 -arch i386 $TMPDIR/dist.x86/$BINDIR/rdjpgcom \ 154 -arch x86_64 $PKGROOT/$BINDIR/rdjpgcom \ 155 -output $PKGROOT/$BINDIR/rdjpgcom 156 $LIPO -create \ 157 -arch i386 $TMPDIR/dist.x86/$BINDIR/wrjpgcom \ 158 -arch x86_64 $PKGROOT/$BINDIR/wrjpgcom \ 159 -output $PKGROOT/$BINDIR/wrjpgcom 160fi 161 162install_ios() 163{ 164 BUILDDIR=$1 165 ARCHNAME=$2 166 DIRNAME=$3 167 LIPOARCH=$4 168 169 if [ ! -d $BUILDDIR ]; then 170 echo ERROR: $ARCHNAME build directory $BUILDDIR does not exist 171 exit 1 172 fi 173 if [ ! -f $BUILDDIR/Makefile ]; then 174 echo ERROR: $ARCHNAME build directory $BUILDDIR is not configured 175 exit 1 176 fi 177 mkdir -p $TMPDIR/dist.$DIRNAME 178 pushd $BUILDDIR 179 make install DESTDIR=$TMPDIR/dist.$DIRNAME 180 popd 181 $LIPO -create \ 182 $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME \ 183 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/$LIBJPEG_DSO_NAME \ 184 -output $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME 185 $LIPO -create \ 186 $PKGROOT/$LIBDIR/libjpeg.a \ 187 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/libjpeg.a \ 188 -output $PKGROOT/$LIBDIR/libjpeg.a 189 $LIPO -create \ 190 $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME \ 191 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/$TURBOJPEG_DSO_NAME \ 192 -output $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME 193 $LIPO -create \ 194 $PKGROOT/$LIBDIR/libturbojpeg.a \ 195 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$LIBDIR/libturbojpeg.a \ 196 -output $PKGROOT/$LIBDIR/libturbojpeg.a 197 $LIPO -create \ 198 $PKGROOT/$BINDIR/cjpeg \ 199 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/cjpeg \ 200 -output $PKGROOT/$BINDIR/cjpeg 201 $LIPO -create \ 202 $PKGROOT/$BINDIR/djpeg \ 203 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/djpeg \ 204 -output $PKGROOT/$BINDIR/djpeg 205 $LIPO -create \ 206 $PKGROOT/$BINDIR/jpegtran \ 207 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/jpegtran \ 208 -output $PKGROOT/$BINDIR/jpegtran 209 $LIPO -create \ 210 $PKGROOT/$BINDIR/tjbench \ 211 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/tjbench \ 212 -output $PKGROOT/$BINDIR/tjbench 213 $LIPO -create \ 214 $PKGROOT/$BINDIR/rdjpgcom \ 215 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/rdjpgcom \ 216 -output $PKGROOT/$BINDIR/rdjpgcom 217 $LIPO -create \ 218 $PKGROOT/$BINDIR/wrjpgcom \ 219 -arch $LIPOARCH $TMPDIR/dist.$DIRNAME/$BINDIR/wrjpgcom \ 220 -output $PKGROOT/$BINDIR/wrjpgcom 221} 222 223if [ $UNIVERSAL = 1 -a "$BUILDDIRARMV7" != "" ]; then 224 install_ios $BUILDDIRARMV7 ARMv7 armv7 arm 225fi 226 227if [ $UNIVERSAL = 1 -a "$BUILDDIRARMV7S" != "" ]; then 228 install_ios $BUILDDIRARMV7S ARMv7s armv7s arm 229fi 230 231if [ $UNIVERSAL = 1 -a "BUILDDIRARMV8" != "" ]; then 232 install_ios $BUILDDIRARMV8 ARMv8 armv8 arm64 233fi 234 235install_name_tool -id $LIBDIR/$LIBJPEG_DSO_NAME $PKGROOT/$LIBDIR/$LIBJPEG_DSO_NAME 236install_name_tool -id $LIBDIR/$TURBOJPEG_DSO_NAME $PKGROOT/$LIBDIR/$TURBOJPEG_DSO_NAME 237 238if [ $WITH_JAVA = 1 ]; then 239 ln -fs $TURBOJPEG_DSO_NAME $PKGROOT/$LIBDIR/libturbojpeg.jnilib 240fi 241if [ "$PREFIX" = "@CMAKE_INSTALL_DEFAULT_PREFIX@" -a "$LIBDIR" = "@CMAKE_INSTALL_DEFAULT_PREFIX@/lib" ]; then 242 if [ ! -h $PKGROOT/$PREFIX/lib32 ]; then 243 ln -fs lib $PKGROOT/$PREFIX/lib32 244 fi 245 if [ ! -h $PKGROOT/$PREFIX/lib64 ]; then 246 ln -fs lib $PKGROOT/$PREFIX/lib64 247 fi 248fi 249 250mkdir -p $TMPDIR/pkg 251 252install -m 755 pkgscripts/uninstall $PKGROOT/$BINDIR/ 253 254find $PKGROOT -type f | while read file; do xattr -c $file; done 255 256cp $SRCDIR/release/License.rtf $SRCDIR/release/Welcome.rtf $SRCDIR/release/ReadMe.txt $TMPDIR/pkg/ 257 258mkdir $TMPDIR/dmg 259pkgbuild --root $PKGROOT --version $VERSION.$BUILD --identifier @PKGID@ \ 260 $TMPDIR/pkg/$PKGNAME.pkg 261productbuild --distribution pkgscripts/Distribution.xml \ 262 --package-path $TMPDIR/pkg/ --resources $TMPDIR/pkg/ \ 263 $TMPDIR/dmg/$PKGNAME.pkg 264hdiutil create -fs HFS+ -volname $PKGNAME-$VERSION \ 265 -srcfolder "$TMPDIR/dmg" $TMPDIR/$PKGNAME-$VERSION.dmg 266cp $TMPDIR/$PKGNAME-$VERSION.dmg . 267 268exit 269