]> granicus.if.org Git - libjpeg-turbo/commitdiff
Include ARMv8 binaries when generating a combined OS X/iOS package using 'make iosdmg'
authorDRC <dcommander@users.sourceforge.net>
Fri, 19 Dec 2014 17:34:30 +0000 (17:34 +0000)
committerDRC <dcommander@users.sourceforge.net>
Fri, 19 Dec 2014 17:34:30 +0000 (17:34 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.4.x@1452 632fc199-4ca6-4c93-a231-07263d6284db

BUILDING.txt
ChangeLog.txt
Makefile.am
release/makemacpkg.in

index a19d8ce6bc71a91680f9c8e98bde9a1d08797387..c800b6e6beaa829c1280b019361116b907bc57c5 100644 (file)
@@ -335,6 +335,9 @@ Additional build requirements:
   (https://sourceforge.net/p/libjpeg-turbo/code/HEAD/tree/gas-preprocessor)
   should be installed in your PATH.
 
+
+ARM 32-bit Build (Xcode 4.6.x and earlier, LLVM-GCC):
+
 Set the following shell variables for simplicity:
 
   Xcode 4.2 and earlier:
@@ -343,28 +346,18 @@ Set the following shell variables for simplicity:
   IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
 
   IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS*.sdk
-
-  Xcode 4.6.x and earlier:
   IOS_GCC=$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
-  Xcode 5.0.x and later:
-  IOS_GCC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
 
-  ARM v6 (code will run on all iOS devices, not SIMD-accelerated):
+  ARMv6 (code will run on all iOS devices, not SIMD-accelerated):
   [NOTE: Requires Xcode 4.4.x or earlier]
   IOS_CFLAGS="-march=armv6 -mcpu=arm1176jzf-s -mfpu=vfp"
 
-  ARM v7 (code will run on iPhone 3GS-4S/iPad 1st-3rd Generation and newer):
-  Xcode 4.6.x and earlier:
+  ARMv7 (code will run on iPhone 3GS-4S/iPad 1st-3rd Generation and newer):
   IOS_CFLAGS="-march=armv7 -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon"
-  Xcode 5.0.x and later:
-  IOS_CFLAGS="-arch armv7"
 
-  ARM v7s (code will run on iPhone 5/iPad 4th Generation and newer):
+  ARMv7s (code will run on iPhone 5/iPad 4th Generation and newer):
   [NOTE: Requires Xcode 4.5 or later]
-  Xcode 4.6.x and earlier:
   IOS_CFLAGS="-march=armv7s -mcpu=swift -mtune=swift -mfpu=neon"
-  Xcode 5.0.x and later:
-  IOS_CFLAGS="-arch armv7s"
 
 Follow the procedure under "Building libjpeg-turbo" above, adding
 
@@ -373,24 +366,67 @@ Follow the procedure under "Building libjpeg-turbo" above, adding
     CFLAGS="-mfloat-abi=softfp -isysroot $IOS_SYSROOT -O3 $IOS_CFLAGS" \
     LDFLAGS="-mfloat-abi=softfp -isysroot $IOS_SYSROOT $IOS_CFLAGS"
 
-to the configure command line.  If using Xcode 5.0.x or later, also add
+to the configure command line.
+
+
+ARM 32-bit Build (Xcode 5.0.x and later, Clang):
+
+Set the following shell variables for simplicity:
+
+  IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
+  IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS*.sdk
+  IOS_GCC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
+
+  ARMv7 (code will run on iPhone 3GS-4S/iPad 1st-3rd Generation and newer):
+  IOS_CFLAGS="-arch armv7"
+
+  ARMv7s (code will run on iPhone 5/iPad 4th Generation and newer):
+  IOS_CFLAGS="-arch armv7s"
+
+Follow the procedure under "Building libjpeg-turbo" above, adding
 
+  --host arm-apple-darwin10 \
+    CC="$IOS_GCC" LD="$IOS_GCC" \
+    CFLAGS="-mfloat-abi=softfp -isysroot $IOS_SYSROOT -O3 $IOS_CFLAGS" \
+    LDFLAGS="-mfloat-abi=softfp -isysroot $IOS_SYSROOT $IOS_CFLAGS" \
     CCASFLAGS="-no-integrated-as $IOS_CFLAGS"
 
 to the configure command line.
 
+
+ARMv8 64-bit Build (Xcode 5.0.x and later, Clang):
+
+Code will run on iPhone 5S/iPad Mini 2 and newer.
+
+Set the following shell variables for simplicity:
+
+  IOS_PLATFORMDIR=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform
+  IOS_SYSROOT=$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS*.sdk
+  IOS_GCC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
+  IOS_CFLAGS="-arch arm64"
+
+Follow the procedure under "Building libjpeg-turbo" above, adding
+
+  --host aarch64-apple-darwin \
+    CC="$IOS_GCC" LD="$IOS_GCC" \
+    CFLAGS="-isysroot $IOS_SYSROOT -O3 $IOS_CFLAGS" \
+    LDFLAGS="-isysroot $IOS_SYSROOT $IOS_CFLAGS"
+
+to the configure command line.
+
+
 NOTE:  You can also add -miphoneos-version-min={version} to $IOS_CFLAGS above
 in order to support older versions of iOS than the default version supported by
 the SDK.
 
-Once built, lipo can be used to combine the ARM v6, v7, and/or v7s variants
+Once built, lipo can be used to combine the ARMv6, v7, v7s, and/or v8 variants
 into a universal library.
 
 NOTE: If you are building libjpeg-turbo from the "official" project tarball,
 then it is highly likely that you will need to run 'autoreconf -fiv' in the
-source tree prior to building ARM v7 or v7s iOS binaries using the techniques
-described above.  Otherwise, you may get a libtool error such as "unable to
-infer tagged configuration."
+source tree prior to building ARMv7, v7s, or v8 iOS binaries using the
+techniques described above.  Otherwise, you may get a libtool error such as
+"unable to infer tagged configuration."
 
 
 Building libjpeg-turbo for Android
@@ -764,26 +800,32 @@ make udmg [BUILDDIR32={32-bit build directory}]
   make command line as shown above.
 
 make iosdmg [BUILDDIR32={32-bit build directory}] \
-  [BUILDDIRARMV6={ARM v6 build directory}] \
-  [BUILDDIRARMV7={ARM v7 build directory}] \
-  [BUILDDIRARMV7S={ARM v7s build directory}]
+  [BUILDDIRARMV6={ARMv6 build directory}] \
+  [BUILDDIRARMV7={ARMv7 build directory}] \
+  [BUILDDIRARMV7S={ARMv7s build directory}] \
+  [BUILDDIRARMV8={ARMv8 build directory}]
 
   On OS X systems, this creates a Macintosh package and disk image in which the
   libjpeg-turbo static libraries contain ARM architectures necessary to build
   iOS applications.  If building on an x86-64 system, the binaries will also
   contain the i386 architecture, as with 'make udmg' above.  You should first
-  configure ARM v6, ARM v7, and/or ARM v7s out-of-tree builds of libjpeg-turbo
-  (see "Building libjpeg-turbo for iOS" above.)  If you are building an x86-64
-  version of libjpeg-turbo, you should configure a 32-bit out-of-tree build as
-  well.  Next, build libjpeg-turbo as you would normally, using an out-of-tree
-  build.  When it is built, run 'make iosdmg' from the build directory.  The
-  build system will look for the ARM v6 build under {source_directory}/iosarmv6
-  by default, the ARM v7 build under {source_directory}/iosarmv7 by default,
-  the ARM v7s build under {source_directory}/iosarmv7s by default, and (if
-  applicable) the 32-bit build under {source_directory}/osxx86 by default, but
-  you can override this by setting the BUILDDIR32, BUILDDIRARMV6,
-  BUILDDIRARMV7, and/or BUILDDIRARMV7S variables on the make command line as
-  shown above.
+  configure ARMv6, ARMv7, ARMv7s, and/or ARMv8 out-of-tree builds of
+  libjpeg-turbo (see "Building libjpeg-turbo for iOS" above.)  If you are
+  building an x86-64 version of libjpeg-turbo, you should configure a 32-bit
+  out-of-tree build as well.  Next, build libjpeg-turbo as you would normally,
+  using an out-of-tree build.  When it is built, run 'make iosdmg' from the
+  build directory.  The build system will look for the ARMv6 build under
+  {source_directory}/iosarmv6 by default, the ARMv7 build under
+  {source_directory}/iosarmv7 by default, the ARMv7s build under
+  {source_directory}/iosarmv7s by default, the ARMv8 build under
+  {source_directory}/iosarmv8 by default, and (if applicable) the 32-bit build
+  under {source_directory}/osxx86 by default, but you can override this by
+  setting the BUILDDIR32, BUILDDIRARMV6, BUILDDIRARMV7, BUILDDIRARMV7S, and/or
+  BUILDDIRARMV8 variables on the make command line as shown above.
+
+  NOTE: If including an ARMv8 build in the package, then you may need to use
+  Xcode's version of lipo instead of the operating system's.  To do this, pass
+  an argument of LIPO="xcrun lipo" on the make command line.
 
 make cygwinpkg
 
index 40ae4814f27153c28f9a6f0f095bbe9fe7a8cd5d..9fab2d12b1e540709a1de38d3907f4bd0af5b158 100644 (file)
@@ -315,7 +315,7 @@ configure/CMake switch in order to retain strict API/ABI compatibility with the
 libjpeg v6b or v7 API/ABI (or with previous versions of libjpeg-turbo.)  See
 README-turbo.txt for more details.
 
-[13] Added ARM v7s architecture to libjpeg.a and libturbojpeg.a in the official
+[13] Added ARMv7s architecture to libjpeg.a and libturbojpeg.a in the official
 libjpeg-turbo binary package for OS X, so that those libraries can be used to
 build applications that leverage the faster CPUs in the iPhone 5 and iPad 4.
 
@@ -398,7 +398,7 @@ K component is assigned a component ID of 1 instead of 4.  Although these files
 are in violation of the spec, other JPEG implementations handle them
 correctly.
 
-[7] Added ARM v6 and ARM v7 architectures to libjpeg.a and libturbojpeg.a in
+[7] Added ARMv6 and ARMv7 architectures to libjpeg.a and libturbojpeg.a in
 the official libjpeg-turbo binary package for OS X, so that those libraries can
 be used to build both OS X and iOS applications.
 
index 569c0bbca113b3aad69a551f727a47f5cf05199d..b32a41b285e2f25921503996aa84dcdf8a0d4224 100644 (file)
@@ -584,12 +584,12 @@ udmg: all pkgscripts/makemacpkg pkgscripts/uninstall
        sh pkgscripts/makemacpkg -build32 ${BUILDDIR32}
 
 iosdmg: all pkgscripts/makemacpkg pkgscripts/uninstall
-       sh pkgscripts/makemacpkg -build32 ${BUILDDIR32} -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
+       sh pkgscripts/makemacpkg -build32 ${BUILDDIR32} -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S} -buildarmv8 ${BUILDDIRARMV8} -lipo "${LIPO}"
 
 else
 
 iosdmg: all pkgscripts/makemacpkg pkgscripts/uninstall
-       sh pkgscripts/makemacpkg -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
+       sh pkgscripts/makemacpkg -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S} -buildarmv8 ${BUILDDIRARMV8} -lipo "${LIPO}"
 
 endif
 
index d0edecb0ae605bb538231dde2df3938fed1f99c9..716375732b51adc26c610b95015f03a9345ee77f 100644 (file)
@@ -17,7 +17,7 @@ onexit()
 
 usage()
 {
-       echo "$0 [-build32 [32-bit build dir]] [-buildarmv6 [ARM v6 build dir]] [-buildarmv7 [ARM v7 build dir]] [-buildarmv7s [ARM v7s build dir]]"
+       echo "$0 [-build32 [32-bit build dir]] [-buildarmv6 [ARMv6 build dir]] [-buildarmv7 [ARMv7 build dir]] [-buildarmv7s [ARMv7s build dir] [-buildarmv8 [ARMv8 build dir]] [-lipo [path to lipo]]"
        exit 1
 }
 
@@ -33,7 +33,10 @@ BUILDDIRARMV7=@abs_top_srcdir@/iosarmv7
 BUILDARMV7=0
 BUILDDIRARMV7S=@abs_top_srcdir@/iosarmv7s
 BUILDARMV7S=0
+BUILDDIRARMV8=@abs_top_srcdir@/iosarmv8
+BUILDARMV8=0
 WITH_JAVA=@WITH_JAVA@
+LIPO=lipo
 
 PREFIX=%{__prefix}
 BINDIR=%{__bindir}
@@ -75,6 +78,21 @@ while [ $# -gt 0 ]; do
                        fi
                fi
                ;;
+       -buildarmv8)
+               BUILDARMV8=1
+               if [ $# -gt 1 ]; then
+                       if [[ ! "$2" =~ -.* ]]; then
+                               BUILDDIRARMV8=$2;  shift
+                       fi
+               fi
+               ;;
+       -lipo)
+               if [ $# -gt 1 ]; then
+                       if [[ ! "$2" =~ -.* ]]; then
+                               LIPO=$2;  shift
+                       fi
+               fi
+               ;;
        esac
        shift
 done
@@ -110,50 +128,50 @@ if [ $BUILD32 = 1 ]; then
        popd
        if [ ! -h $TMPDIR/dist.x86/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        -arch i386 $TMPDIR/dist.x86/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -arch x86_64 $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
        elif [ ! -h $TMPDIR/dist.x86/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        -arch i386 $TMPDIR/dist.x86/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -arch x86_64 $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib
        fi
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$LIBDIR/libjpeg.a \
                -arch x86_64 $PKGROOT/$LIBDIR/libjpeg.a \
                -output $PKGROOT/$LIBDIR/libjpeg.a
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$LIBDIR/libturbojpeg.0.dylib \
                -arch x86_64 $PKGROOT/$LIBDIR/libturbojpeg.0.dylib \
                -output $PKGROOT/$LIBDIR/libturbojpeg.0.dylib
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$LIBDIR/libturbojpeg.a \
                -arch x86_64 $PKGROOT/$LIBDIR/libturbojpeg.a \
                -output $PKGROOT/$LIBDIR/libturbojpeg.a
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/cjpeg \
                -arch x86_64 $PKGROOT/$BINDIR/cjpeg \
                -output $PKGROOT/$BINDIR/cjpeg
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/djpeg \
                -arch x86_64 $PKGROOT/$BINDIR/djpeg \
                -output $PKGROOT/$BINDIR/djpeg
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/jpegtran \
                -arch x86_64 $PKGROOT/$BINDIR/jpegtran \
                -output $PKGROOT/$BINDIR/jpegtran
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/tjbench \
                -arch x86_64 $PKGROOT/$BINDIR/tjbench \
                -output $PKGROOT/$BINDIR/tjbench
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/rdjpgcom \
                -arch x86_64 $PKGROOT/$BINDIR/rdjpgcom \
                -output $PKGROOT/$BINDIR/rdjpgcom
-       lipo -create \
+       $LIPO -create \
                -arch i386 $TMPDIR/dist.x86/$BINDIR/wrjpgcom \
                -arch x86_64 $PKGROOT/$BINDIR/wrjpgcom \
                -output $PKGROOT/$BINDIR/wrjpgcom
@@ -162,11 +180,11 @@ fi
 
 if [ $BUILDARMV6 = 1 ]; then
        if [ ! -d $BUILDDIRARMV6 ]; then
-               echo ERROR: ARM v6 build directory $BUILDDIRARMV6 does not exist
+               echo ERROR: ARMv6 build directory $BUILDDIRARMV6 does not exist
                exit 1
        fi
        if [ ! -f $BUILDDIRARMV6/Makefile ]; then
-               echo ERROR: ARM v6 build directory $BUILDDIRARMV6 is not configured
+               echo ERROR: ARMv6 build directory $BUILDDIRARMV6 is not configured
                exit 1
        fi
        mkdir -p $TMPDIR/dist.armv6
@@ -175,50 +193,50 @@ if [ $BUILDARMV6 = 1 ]; then
        popd
        if [ ! -h $TMPDIR/dist.armv6/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv6/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
        elif [ ! -h $TMPDIR/dist.armv6/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv6/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib
        fi
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libjpeg.a \
                -arch arm $TMPDIR/dist.armv6/$LIBDIR/libjpeg.a \
                -output $PKGROOT/$LIBDIR/libjpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.0.dylib \
                -arch arm $TMPDIR/dist.armv6/$LIBDIR/libturbojpeg.0.dylib \
                -output $PKGROOT/$LIBDIR/libturbojpeg.0.dylib
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.a \
                -arch arm $TMPDIR/dist.armv6/$LIBDIR/libturbojpeg.a \
                -output $PKGROOT/$LIBDIR/libturbojpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/cjpeg \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/cjpeg \
                -output $PKGROOT/$BINDIR/cjpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/djpeg \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/djpeg \
                -output $PKGROOT/$BINDIR/djpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/jpegtran \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/jpegtran \
                -output $PKGROOT/$BINDIR/jpegtran
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/tjbench \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/tjbench \
                -output $PKGROOT/$BINDIR/tjbench
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/rdjpgcom \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/rdjpgcom \
                -output $PKGROOT/$BINDIR/rdjpgcom
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/wrjpgcom \
                -arch arm $TMPDIR/dist.armv6/$BINDIR/wrjpgcom \
                -output $PKGROOT/$BINDIR/wrjpgcom
@@ -226,11 +244,11 @@ fi
 
 if [ $BUILDARMV7 = 1 ]; then
        if [ ! -d $BUILDDIRARMV7 ]; then
-               echo ERROR: ARM v7 build directory $BUILDDIRARMV7 does not exist
+               echo ERROR: ARMv7 build directory $BUILDDIRARMV7 does not exist
                exit 1
        fi
        if [ ! -f $BUILDDIRARMV7/Makefile ]; then
-               echo ERROR: ARM v7 build directory $BUILDDIRARMV7 is not configured
+               echo ERROR: ARMv7 build directory $BUILDDIRARMV7 is not configured
                exit 1
        fi
        mkdir -p $TMPDIR/dist.armv7
@@ -239,50 +257,50 @@ if [ $BUILDARMV7 = 1 ]; then
        popd
        if [ ! -h $TMPDIR/dist.armv7/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv7/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
        elif [ ! -h $TMPDIR/dist.armv7/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv7/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib
        fi
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libjpeg.a \
                -arch arm $TMPDIR/dist.armv7/$LIBDIR/libjpeg.a \
                -output $PKGROOT/$LIBDIR/libjpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.0.dylib \
                -arch arm $TMPDIR/dist.armv7/$LIBDIR/libturbojpeg.0.dylib \
                -output $PKGROOT/$LIBDIR/libturbojpeg.0.dylib
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.a \
                -arch arm $TMPDIR/dist.armv7/$LIBDIR/libturbojpeg.a \
                -output $PKGROOT/$LIBDIR/libturbojpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/cjpeg \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/cjpeg \
                -output $PKGROOT/$BINDIR/cjpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/djpeg \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/djpeg \
                -output $PKGROOT/$BINDIR/djpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/jpegtran \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/jpegtran \
                -output $PKGROOT/$BINDIR/jpegtran
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/tjbench \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/tjbench \
                -output $PKGROOT/$BINDIR/tjbench
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/rdjpgcom \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/rdjpgcom \
                -output $PKGROOT/$BINDIR/rdjpgcom
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/wrjpgcom \
                -arch arm $TMPDIR/dist.armv7/$BINDIR/wrjpgcom \
                -output $PKGROOT/$BINDIR/wrjpgcom
@@ -290,11 +308,11 @@ fi
 
 if [ $BUILDARMV7S = 1 ]; then
        if [ ! -d $BUILDDIRARMV7S ]; then
-               echo ERROR: ARM v7s build directory $BUILDDIRARMV7S does not exist
+               echo ERROR: ARMv7s build directory $BUILDDIRARMV7S does not exist
                exit 1
        fi
        if [ ! -f $BUILDDIRARMV7S/Makefile ]; then
-               echo ERROR: ARM v7s build directory $BUILDDIRARMV7S is not configured
+               echo ERROR: ARMv7s build directory $BUILDDIRARMV7S is not configured
                exit 1
        fi
        mkdir -p $TMPDIR/dist.armv7s
@@ -303,55 +321,119 @@ if [ $BUILDARMV7S = 1 ]; then
        popd
        if [ ! -h $TMPDIR/dist.armv7s/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv7s/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
        elif [ ! -h $TMPDIR/dist.armv7s/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib -a \
                ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib ]; then
-               lipo -create \
+               $LIPO -create \
                        $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -arch arm $TMPDIR/dist.armv7s/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
                        -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib
        fi
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libjpeg.a \
                -arch arm $TMPDIR/dist.armv7s/$LIBDIR/libjpeg.a \
                -output $PKGROOT/$LIBDIR/libjpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.0.dylib \
                -arch arm $TMPDIR/dist.armv7s/$LIBDIR/libturbojpeg.0.dylib \
                -output $PKGROOT/$LIBDIR/libturbojpeg.0.dylib
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$LIBDIR/libturbojpeg.a \
                -arch arm $TMPDIR/dist.armv7s/$LIBDIR/libturbojpeg.a \
                -output $PKGROOT/$LIBDIR/libturbojpeg.a
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/cjpeg \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/cjpeg \
                -output $PKGROOT/$BINDIR/cjpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/djpeg \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/djpeg \
                -output $PKGROOT/$BINDIR/djpeg
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/jpegtran \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/jpegtran \
                -output $PKGROOT/$BINDIR/jpegtran
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/tjbench \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/tjbench \
                -output $PKGROOT/$BINDIR/tjbench
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/rdjpgcom \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/rdjpgcom \
                -output $PKGROOT/$BINDIR/rdjpgcom
-       lipo -create \
+       $LIPO -create \
                $PKGROOT/$BINDIR/wrjpgcom \
                -arch arm $TMPDIR/dist.armv7s/$BINDIR/wrjpgcom \
                -output $PKGROOT/$BINDIR/wrjpgcom
 fi
 
+if [ $BUILDARMV8 = 1 ]; then
+       if [ ! -d $BUILDDIRARMV8 ]; then
+               echo ERROR: ARMv8 build directory $BUILDDIRARMV8 does not exist
+               exit 1
+       fi
+       if [ ! -f $BUILDDIRARMV8/Makefile ]; then
+               echo ERROR: ARMv8 build directory $BUILDDIRARMV8 is not configured
+               exit 1
+       fi
+       mkdir -p $TMPDIR/dist.armv8
+       pushd $BUILDDIRARMV8
+       make install DESTDIR=$TMPDIR/dist.armv8
+       popd
+       if [ ! -h $TMPDIR/dist.armv8/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib -a \
+               ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib ]; then
+               $LIPO -create \
+                       $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
+                       -arch arm64 $TMPDIR/dist.armv8/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib \
+                       -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
+       elif [ ! -h $TMPDIR/dist.armv8/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib -a \
+               ! -h $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib ]; then
+               $LIPO -create \
+                       $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
+                       -arch arm64 $TMPDIR/dist.armv8/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib \
+                       -output $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.0.@SO_MINOR_VERSION@.dylib
+       fi
+       $LIPO -create \
+               $PKGROOT/$LIBDIR/libjpeg.a \
+               -arch arm64 $TMPDIR/dist.armv8/$LIBDIR/libjpeg.a \
+               -output $PKGROOT/$LIBDIR/libjpeg.a
+       $LIPO -create \
+               $PKGROOT/$LIBDIR/libturbojpeg.0.dylib \
+               -arch arm64 $TMPDIR/dist.armv8/$LIBDIR/libturbojpeg.0.dylib \
+               -output $PKGROOT/$LIBDIR/libturbojpeg.0.dylib
+       $LIPO -create \
+               $PKGROOT/$LIBDIR/libturbojpeg.a \
+               -arch arm64 $TMPDIR/dist.armv8/$LIBDIR/libturbojpeg.a \
+               -output $PKGROOT/$LIBDIR/libturbojpeg.a
+       $LIPO -create \
+               $PKGROOT/$BINDIR/cjpeg \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/cjpeg \
+               -output $PKGROOT/$BINDIR/cjpeg
+       $LIPO -create \
+               $PKGROOT/$BINDIR/djpeg \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/djpeg \
+               -output $PKGROOT/$BINDIR/djpeg
+       $LIPO -create \
+               $PKGROOT/$BINDIR/jpegtran \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/jpegtran \
+               -output $PKGROOT/$BINDIR/jpegtran
+       $LIPO -create \
+               $PKGROOT/$BINDIR/tjbench \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/tjbench \
+               -output $PKGROOT/$BINDIR/tjbench
+       $LIPO -create \
+               $PKGROOT/$BINDIR/rdjpgcom \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/rdjpgcom \
+               -output $PKGROOT/$BINDIR/rdjpgcom
+       $LIPO -create \
+               $PKGROOT/$BINDIR/wrjpgcom \
+               -arch arm64 $TMPDIR/dist.armv8/$BINDIR/wrjpgcom \
+               -output $PKGROOT/$BINDIR/wrjpgcom
+fi
+
 install_name_tool -id $LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib $PKGROOT/$LIBDIR/libjpeg.@SO_MAJOR_VERSION@.dylib
 install_name_tool -id $LIBDIR/libturbojpeg.0.dylib $PKGROOT/$LIBDIR/libturbojpeg.0.dylib