-
-
Save serser/8c6480fca04911d8e816f4f97623ecb2 to your computer and use it in GitHub Desktop.
Download & Compile Libjpeg for OSX (all architectures)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Builds a Libjpeg framework for the OSX. | |
# This is a fork from: | |
# https://gist.github.com/dulaccc/25dbe620422c07e0253e | |
#=============================================================================== | |
export SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.5.sdk" | |
: ${LIB_VERSION:=8d} | |
: ${XCODE_ROOT:=`xcode-select -print-path`} | |
: ${TARBALLDIR:=`pwd`} | |
: ${SRCDIR:=`pwd`/src} | |
: ${OSXBUILDDIR:=`pwd`/osx/build} | |
: ${OSXPREFIXDIR:=`pwd`/osx/prefix} | |
: ${OSXFRAMEWORKDIR:=`pwd`/osx/framework} | |
LIB_TARBALL=$TARBALLDIR/jpegsrc.v$LIB_VERSION.tar.gz | |
LIB_SRC=$SRCDIR/jpeg-${LIB_VERSION} | |
#=============================================================================== | |
OXS_DEV_CMD="xcrun --sdk macosx10.5" | |
#=============================================================================== | |
# Functions | |
#=============================================================================== | |
abort() | |
{ | |
echo | |
echo "Aborted: $@" | |
exit 1 | |
} | |
doneSection() | |
{ | |
echo | |
echo "=================================================================" | |
echo "Done" | |
echo | |
} | |
#=============================================================================== | |
cleanEverythingReadyToStart() | |
{ | |
echo Cleaning everything before we start to build... | |
rm -rf $PREFIXDIR | |
rm -rf $OSXFRAMEWORKDIR/$FRAMEWORK_NAME.framework | |
doneSection | |
} | |
#=============================================================================== | |
downloadLibjpeg() | |
{ | |
if [ ! -s $LIB_TARBALL ]; then | |
echo "Downloading libjpeg ${LIB_VERSION}" | |
curl -L -o $LIB_TARBALL http://www.ijg.org/files/jpegsrc.v${LIB_VERSION}.tar.gz | |
fi | |
doneSection | |
} | |
#=============================================================================== | |
unpackLibjpeg() | |
{ | |
[ -f "$LIB_TARBALL" ] || abort "Source tarball missing." | |
echo Unpacking libjpeg into $SRCDIR... | |
[ -d $SRCDIR ] || mkdir -p $SRCDIR | |
[ -d $LIB_SRC ] || ( cd $SRCDIR; tar xfj $LIB_TARBALL ) | |
[ -d $LIB_SRC ] && echo " ...unpacked as $LIB_SRC" | |
doneSection | |
} | |
#=============================================================================== | |
buildLibjpegForOSX() | |
{ | |
export CC=$XCODE_ROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang | |
export CC_BASENAME=clang | |
export CXX=$XCODE_ROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ | |
export CXX_BASENAME=clang++ | |
echo Building Libjpeg for OSX | |
mkdir -p $LIB_SRC/osx-build | |
cd $LIB_SRC/osx-build | |
export MACOSX_DEPLOYMENT_TARGET=10.5 | |
export CFLAGS="-O3 -arch i386 -arch x86_64 -target i386-apple-darwin9.0 -isysroot $XCODE_ROOT/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.5.sdk -Wno-error-implicit-function-declaration" | |
../configure --target i386-apple-darwin9.0 --build i386-apple-darwin9.0 --prefix=$OSXPREFIXDIR/osx-build --disable-dependency-tracking --enable-static=yes --enable-shared=no CFLAGS="-isysroot $XCODE_ROOT/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.5.sdk" | |
make clean | |
make | |
make install | |
doneSection | |
} | |
#=============================================================================== | |
scrunchAllLibsTogetherInOneLibPerPlatform() | |
{ | |
cd $OSXPREFIXDIR | |
# OSX | |
mkdir -p $OSXBUILDDIR/i386 | |
mkdir -p $OSXBUILDDIR/x86_64 | |
echo Splitting all existing fat binaries... | |
$OSX_DEV_CMD lipo "osx-build/lib/libjpeg.a" -thin i386 -o $OSXBUILDDIR/i386/libjpeg.a | |
$OSX_DEV_CMD lipo "osx-build/lib/libjpeg.a" -thin x86_64 -o $OSXBUILDDIR/x86_64/libjpeg.a | |
} | |
#=============================================================================== | |
buildFramework() | |
{ | |
: ${1:?} | |
FRAMEWORKDIR=$1 | |
BUILDDIR=$2 | |
VERSION_TYPE=Alpha | |
FRAMEWORK_NAME=libjpeg | |
FRAMEWORK_VERSION=A | |
FRAMEWORK_CURRENT_VERSION=$LIB_VERSION | |
FRAMEWORK_COMPATIBILITY_VERSION=$LIB_VERSION | |
FRAMEWORK_BUNDLE=$FRAMEWORKDIR/$FRAMEWORK_NAME.framework | |
echo "Framework: Building $FRAMEWORK_BUNDLE from $BUILDDIR..." | |
rm -rf $FRAMEWORK_BUNDLE | |
echo "Framework: Setting up directories..." | |
mkdir -p $FRAMEWORK_BUNDLE | |
mkdir -p $FRAMEWORK_BUNDLE/Versions | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Resources | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Headers | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Documentation | |
echo "Framework: Creating symlinks..." | |
ln -s $FRAMEWORK_VERSION $FRAMEWORK_BUNDLE/Versions/Current | |
ln -s Versions/Current/Headers $FRAMEWORK_BUNDLE/Headers | |
ln -s Versions/Current/Resources $FRAMEWORK_BUNDLE/Resources | |
ln -s Versions/Current/Documentation $FRAMEWORK_BUNDLE/Documentation | |
ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_BUNDLE/$FRAMEWORK_NAME | |
FRAMEWORK_INSTALL_NAME=$FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/$FRAMEWORK_NAME | |
echo "Lipoing library into $FRAMEWORK_INSTALL_NAME..." | |
$OSX_DEV_CMD lipo -create $OSXBUILDDIR/*/libjpeg.a -o "$FRAMEWORK_INSTALL_NAME" || abort "Lipo $1 failed" | |
echo "Framework: Copying includes..." | |
cp -r $OSXPREFIXDIR/osx-build/include/* $FRAMEWORK_BUNDLE/Headers/ | |
echo "Framework: Creating plist..." | |
cat > $FRAMEWORK_BUNDLE/Resources/Info.plist <<EOF | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>CFBundleDevelopmentRegion</key> | |
<string>English</string> | |
<key>CFBundleExecutable</key> | |
<string>${FRAMEWORK_NAME}</string> | |
<key>CFBundleIdentifier</key> | |
<string>org.libjpeg</string> | |
<key>CFBundleInfoDictionaryVersion</key> | |
<string>6.0</string> | |
<key>CFBundlePackageType</key> | |
<string>FMWK</string> | |
<key>CFBundleSignature</key> | |
<string>????</string> | |
<key>CFBundleVersion</key> | |
<string>${FRAMEWORK_CURRENT_VERSION}</string> | |
</dict> | |
</plist> | |
EOF | |
doneSection | |
} | |
#=============================================================================== | |
# Execution starts here | |
#=============================================================================== | |
mkdir -p $OSXBUILDDIR | |
# cleanEverythingReadyToStart #may want to comment if repeatedly running during dev | |
echo "LIB_VERSION: $LIB_VERSION" | |
echo "LIB_SRC: $LIB_SRC" | |
echo "OSXBUILDDIR: $OSXBUILDDIR" | |
echo "PREFIXDIR: $PREFIXDIR" | |
echo "IOSFRAMEWORKDIR: $IOSFRAMEWORKDIR" | |
echo "IPHONE_SDKVERSION: $IPHONE_SDKVERSION" | |
echo "XCODE_ROOT: $XCODE_ROOT" | |
echo | |
downloadLibjpeg | |
unpackLibjpeg | |
buildLibjpegForOSX | |
scrunchAllLibsTogetherInOneLibPerPlatform | |
buildFramework $OSXFRAMEWORKDIR $OSXBUILDDIR | |
echo "Completed successfully" | |
#=============================================================================== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment