• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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