]> granicus.if.org Git - libjpeg-turbo/commitdiff
Include ARM v7s (iPhone 5, iPad 4) support in the universal libjpeg/libturbojpeg... 1.2.90
authorDRC <dcommander@users.sourceforge.net>
Mon, 4 Feb 2013 22:29:57 +0000 (22:29 +0000)
committerDRC <dcommander@users.sourceforge.net>
Mon, 4 Feb 2013 22:29:57 +0000 (22:29 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@923 632fc199-4ca6-4c93-a231-07263d6284db

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

index 3207d2404ecd3d1718c04455aa7a235ad0e361c5..1528fce2c9249fc8d571bb63b5aee96d08663ccc 100644 (file)
@@ -322,16 +322,27 @@ Additional build requirements:
 
 Set the following shell variables for simplicity:
 
+  Xcode 3.2.x / iOS 4.3 SDK:
   IOS_PLATFORMDIR="/Developer/Platforms/iPhoneOS.platform"
   IOS_SYSROOT="$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS4.3.sdk"
   IOS_GCC="$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2"
 
+  Xcode 4.5.x / iOS 6.0 SDK:
+  IOS_PLATFORMDIR="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform"
+  IOS_SYSROOT="$IOS_PLATFORMDIR/Developer/SDKs/iPhoneOS6.0.sdk"
+  IOS_GCC="$IOS_PLATFORMDIR/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2"
+
   ARM v6 only (up to and including iPhone 3G):
+  [NOTE: Requires Xcode 4.4.x or earlier]
   IOS_CFLAGS="-march=armv6 -mcpu=arm1176jzf-s -mfpu=vfp"
 
   ARM v7 only (iPhone 3GS-4S, iPad 1st-3rd Generation):
   IOS_CFLAGS="-march=armv7 -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon"
 
+  ARM v7s only (iPhone 5, iPad 4th Generation):
+  [NOTE: Requires Xcode 4.5 or later]
+  IOS_CFLAGS="-march=armv7s -mcpu=swift -mtune=swift -mfpu=neon"
+
 Follow the procedure under "Building libjpeg-turbo" above, adding
 
   --host arm-apple-darwin10 --enable-static --disable-shared \
@@ -341,21 +352,8 @@ Follow the procedure under "Building libjpeg-turbo" above, adding
 
 to the configure command line.
 
-Once built, lipo can be used to combine the ARM v6 and v7 variants into a
-universal library.
-
-An ARM v7s version of libjpeg-turbo, for iPhone 5 and iPad 4th Generation
-devices, can be built by using the iPhone 5 SDK in XCode 4.5.  You will have to
-adjust IOS_PLATFORMDIR, IOS_SYSROOT, and IOS_GCC accordingly, and use the
-following compiler flags:
-
-IOS_CFLAGS="-march=armv7s -mcpu=swift -mtune=swift -mfpu=neon"
-
-Unfortunately, XCode 4.5 also dropped support for ARM v6, so it will not be
-possible to use a single version of XCode to build a universal binary that
-supports both the iPhone 3G and earlier and the iPhone 5/iPad 4 and later.
-Even more unfortunately, XCode 4.5 requires OS X 10.7, which means that we
-cannot currently install and test it.
+Once built, lipo can be used to combine the ARM v6, v7, and/or v7s variants
+into a universal library.
 
 
 *******************************************************************************
@@ -691,21 +689,24 @@ make udmg [BUILDDIR32={32-bit build directory}]
 make iosdmg [BUILDDIR32={32-bit build directory}] \
   [BUILDDIRARMV6={ARM v6 build directory}] \
   [BUILDDIRARMV7={ARM v7 build directory}] \
+  [BUILDDIRARMV7S={ARM v7s 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 and ARM v7 out-of-tree builds of libjpeg-turbo (see
-  "Building libjpeg-turbo for iOS" above.)  If you are building an x86-64
+  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,
-  and (if applicable) the 32-bit build under {source_directory}/osxx86 by
-  default, but you can override this by setting the BUILDDIR32, BUILDDIRARMV6,
-  and/or BUILDDIRARMV7 variables on the make command line as shown above.
+  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.
 
 make cygwinpkg
 
index 56a858f2858a9da0f124dcd46d2c94a22e75b984..7eee85d18d91d1ea77aeb6e7baf45e5341a14c99 100644 (file)
@@ -57,6 +57,10 @@ 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
+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.
+
 
 1.2.1
 =====
@@ -137,8 +141,8 @@ 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
-the official OS X distribution package, so that those libraries can be used to
-build both OS X and iOS applications.
+the official libjpeg-turbo binary package for OS X, so that those libraries can
+be used to build both OS X and iOS applications.
 
 
 1.1.90 (1.2 beta1)
index c0100924b1ca9321fdbd2bdc0392106ef54345d4..eefccba17db2a1eb381e73753ec97236a0ad197f 100644 (file)
@@ -371,12 +371,12 @@ udmg: all
        sh pkgscripts/makemacpkg -build32 ${BUILDDIR32}
 
 iosdmg: all
-       sh pkgscripts/makemacpkg -build32 ${BUILDDIR32} -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7}
+       sh pkgscripts/makemacpkg -build32 ${BUILDDIR32} -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
 
 else
 
 iosdmg: all
-       sh pkgscripts/makemacpkg -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7}
+       sh pkgscripts/makemacpkg -buildarmv6 ${BUILDDIRARMV6} -buildarmv7 ${BUILDDIRARMV7} -buildarmv7s ${BUILDDIRARMV7S}
 
 endif
 
index d53699d4e3814ebd46b72842e4b5f9eb162727fc..fb8d692ce1047129cb505585fb416c827666b1b3 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]]"
+       echo "$0 [-build32 [32-bit build dir]] [-buildarmv6 [ARM v6 build dir]] [-buildarmv7 [ARM v7 build dir]] [-buildarmv7s [ARM v7s build dir]]"
        exit 1
 }
 
@@ -31,6 +31,8 @@ BUILDDIRARMV6=@abs_top_srcdir@/iosarmv6
 BUILDARMV6=0
 BUILDDIRARMV7=@abs_top_srcdir@/iosarmv7
 BUILDARMV7=0
+BUILDDIRARMV7S=@abs_top_srcdir@/iosarmv7s
+BUILDARMV7S=0
 WITH_JAVA=@WITH_JAVA@
 while [ $# -gt 0 ]; do
        case $1 in
@@ -59,6 +61,14 @@ while [ $# -gt 0 ]; do
                        fi
                fi
                ;;
+       -buildarmv7s)
+               BUILDARMV7S=1
+               if [ $# -gt 1 ]; then
+                       if [[ ! "$2" =~ -.* ]]; then
+                               BUILDDIRARMV7S=$2;  shift
+                       fi
+               fi
+               ;;
        esac
        shift
 done
@@ -193,6 +203,29 @@ if [ $BUILDARMV7 = 1 ]; then
                -output $PKGROOT/usr/lib/libturbojpeg.a
 fi
 
+if [ $BUILDARMV7S = 1 ]; then
+       if [ ! -d $BUILDDIRARMV7S ]; then
+               echo ERROR: ARM v7s build directory $BUILDDIRARMV7S does not exist
+               exit 1
+       fi
+       if [ ! -f $BUILDDIRARMV7S/Makefile ]; then
+               echo ERROR: ARM v7s build directory $BUILDDIRARMV7S is not configured
+               exit 1
+       fi
+       mkdir -p $TMPDIR/dist.armv7s
+       pushd $BUILDDIRARMV7S
+       make install DESTDIR=$TMPDIR/dist.armv7s
+       popd
+       lipo -create \
+               $PKGROOT/opt/$PACKAGE_NAME/lib/libjpeg.a \
+               -arch arm $TMPDIR/dist.armv7s/opt/$PACKAGE_NAME/lib/libjpeg.a \
+               -output $PKGROOT/opt/$PACKAGE_NAME/lib/libjpeg.a
+       lipo -create \
+               $PKGROOT/usr/lib/libturbojpeg.a \
+               -arch arm $TMPDIR/dist.armv7s/opt/$PACKAGE_NAME/lib/libturbojpeg.a \
+               -output $PKGROOT/usr/lib/libturbojpeg.a
+fi
+
 install_name_tool -id /opt/$PACKAGE_NAME/lib/libjpeg.@SO_MAJOR_VERSION@.dylib $PKGROOT/opt/$PACKAGE_NAME/lib/libjpeg.@SO_MAJOR_VERSION@.dylib
 install_name_tool -id libturbojpeg.0.dylib $PKGROOT/usr/lib/libturbojpeg.0.dylib