• 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 [-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