105 lines
3.3 KiB
Bash
Executable File
105 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Building the installer is only tested and supported on 10.9+ with Xcode 6.0.1
|
|
# Built package targets 10.10
|
|
# Building should also work on older versions with older revisions or slight changes, YMMV
|
|
|
|
# You need to have the following from homebrew or macports or fink:
|
|
# autoconf automake libtool pkg-config
|
|
|
|
set -ex
|
|
test -x ./configure || ./bootstrap
|
|
BUILDPATH=${PWD}
|
|
|
|
# Locate the latest OSX SDK
|
|
SDK_PATH=$(xcrun --sdk macosx --show-sdk-path)
|
|
|
|
# Set SDK path
|
|
export CFLAGS="$CFLAGS -isysroot $SDK_PATH -arch x86_64 -mmacosx-version-min=10.10"
|
|
|
|
export SED=/usr/bin/sed
|
|
PREFIX=/Library/OpenSC
|
|
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig
|
|
|
|
if ! pkg-config libcrypto --atleast-version=1.0.1; then
|
|
# OpenSSL is not installed
|
|
if ! test -e $BUILDPATH/openssl_bin/$PREFIX/lib/pkgconfig; then
|
|
# Build OpenSSL manually, because Apple's binaries are deprecated
|
|
if ! test -e openssl; then
|
|
git clone --depth=1 https://github.com/openssl/openssl.git -b OpenSSL_1_0_2-stable
|
|
fi
|
|
cd openssl
|
|
KERNEL_BITS=64 ./config --prefix=$PREFIX -mmacosx-version-min=10.10
|
|
make clean
|
|
make update
|
|
make depend
|
|
make
|
|
make INSTALL_PREFIX=$BUILDPATH/openssl_bin install_sw
|
|
cd ..
|
|
fi
|
|
export OPENSSL_CFLAGS="`env PKG_CONFIG_PATH=$BUILDPATH/openssl_bin/$PREFIX/lib/pkgconfig PKG_CONFIG_SYSROOT_DIR=$BUILDPATH/openssl_bin pkg-config --static --cflags libcrypto`"
|
|
export OPENSSL_LIBS="` env PKG_CONFIG_PATH=$BUILDPATH/openssl_bin/$PREFIX/lib/pkgconfig PKG_CONFIG_SYSROOT_DIR=$BUILDPATH/openssl_bin pkg-config --static --libs libcrypto`"
|
|
fi
|
|
|
|
if ! test -e ${BUILDPATH}/target/$PREFIX/lib/pkgconfig; then
|
|
./configure --prefix=$PREFIX \
|
|
--sysconfdir=$PREFIX/etc \
|
|
--disable-dependency-tracking \
|
|
--enable-shared \
|
|
--disable-static \
|
|
--enable-strict \
|
|
--disable-assert \
|
|
--enable-sm # TODO: remove this (must be sensible default in master)
|
|
|
|
# always make clean
|
|
make clean
|
|
|
|
# compile
|
|
make -j 2
|
|
|
|
# copy files
|
|
rm -rf target
|
|
make install DESTDIR=${BUILDPATH}/target
|
|
|
|
# remove garbage
|
|
rm -f target/$PREFIX/lib/*.la
|
|
|
|
# generate .bundle (required by Adobe Acrobat)
|
|
./MacOSX/libtool-bundle target/$PREFIX/lib/opensc-pkcs11.so target/$PREFIX/lib
|
|
fi
|
|
|
|
# Check out OpenSC.tokend, if not already fetched.
|
|
if ! test -e OpenSC.tokend; then
|
|
git clone http://github.com/OpenSC/OpenSC.tokend.git
|
|
fi
|
|
|
|
# Create the symlink to OpenSC sources
|
|
test -L OpenSC.tokend/build/opensc-src || ln -sf ${BUILDPATH}/src OpenSC.tokend/build/opensc-src
|
|
|
|
# Build and copy OpenSC.tokend
|
|
xcodebuild -target OpenSC -configuration Deployment -project OpenSC.tokend/Tokend.xcodeproj install DSTROOT=${PWD}/target
|
|
|
|
# Prepare target root
|
|
# The "UnInstaller"
|
|
mkdir -p target/usr/local/bin
|
|
cp MacOSX/opensc-uninstall target/usr/local/bin
|
|
|
|
# Build package
|
|
pkgbuild --root target --scripts MacOSX/scripts --identifier org.opensc-project.mac --version @PACKAGE_VERSION@ --install-location / OpenSC.pkg
|
|
# Build product
|
|
productbuild --distribution MacOSX/Distribution.xml --package-path . --resources MacOSX/resources "OpenSC @PACKAGE_VERSION@.pkg"
|
|
|
|
# Build "uninstaller"
|
|
osacompile -o "OpenSC Uninstaller.app" "MacOSX/OpenSC_Uninstaller.applescript"
|
|
|
|
# Create .dmg
|
|
rm -f OpenSC-@PACKAGE_VERSION@.dmg
|
|
i=0
|
|
while ! hdiutil create -srcfolder "OpenSC @PACKAGE_VERSION@.pkg" -srcfolder "OpenSC Uninstaller.app" -volname "@PACKAGE_NAME@" OpenSC-@PACKAGE_VERSION@.dmg
|
|
do
|
|
i=$[$i+1]
|
|
if [ $i -gt 2 ]
|
|
then
|
|
exit 1
|
|
fi
|
|
done
|