From: DRC Date: Fri, 19 Dec 2014 17:34:30 +0000 (+0000) Subject: Include ARMv8 binaries when generating a combined OS X/iOS package using 'make iosdmg' X-Git-Tag: 1.4.0~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6e6b28c3ceca781f7a292b9021827a74c05ecfc9;p=libjpeg-turbo Include ARMv8 binaries when generating a combined OS X/iOS package using 'make iosdmg' git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.4.x@1452 632fc199-4ca6-4c93-a231-07263d6284db --- diff --git a/BUILDING.txt b/BUILDING.txt index a19d8ce..c800b6e 100644 --- a/BUILDING.txt +++ b/BUILDING.txt @@ -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 diff --git a/ChangeLog.txt b/ChangeLog.txt index 40ae481..9fab2d1 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -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. diff --git a/Makefile.am b/Makefile.am index 569c0bb..b32a41b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/release/makemacpkg.in b/release/makemacpkg.in index d0edecb..7163757 100644 --- a/release/makemacpkg.in +++ b/release/makemacpkg.in @@ -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