Replace our custom version of Android.mk with instructions on how to build a libjpeg-turbo SDK for Android using autotools. Upon consulting with AOSP, it appears that Android.mk isn't really necessary except when building libjpeg-turbo for use by the Android platform itself, and it makes more sense for them to maintain the makefile for that purpose rather than for it to be upstreamed. ndk-build has serious limitations that prevent it from being used to generate static libjpeg-turbo libraries (mainly, it isn't possible to combine pre-built objects from one module into a static library for another module, which is necessary because the SIMD extensions sometimes have to be built with different CFLAGS than the rest of the code.) In general, it's just better not to introduce a new build system.

git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1272 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
DRC 2014-05-06 21:03:35 +00:00
Родитель dab6b8a1a3
Коммит b0a9cca1e3
4 изменённых файлов: 40 добавлений и 325 удалений

Просмотреть файл

@ -1,276 +0,0 @@
# Android makefile for libjpeg-turbo
ifneq ($(TARGET_SIMULATOR), true)
LOCAL_PATH := $(my-dir)
VERSION = 1.3.80
BUILD := $(shell date +%Y%m%d)
DEFINES = -DPACKAGE_NAME=\"libjpeg-turbo\" -DVERSION=\"$(VERSION)\" \
-DBUILD=\"$(BUILD)\"
# Default configuration (all of these can be overridden on the command line)
CFLAGS = -O3
ifeq ($(strip $(TARGET_ARCH)), arm)
ifeq ($(TARGET_ARCH_VARIANT), armv7-a-neon)
WITH_SIMD = 1
SIMD_ARCH = arm
endif
ifneq ($(findstring armv7-a, $(TARGET_ARCH_VARIANT)),)
CFLAGS += -fstrict-aliasing
endif
endif
WITH_TURBOJPEG = 1
WITH_ARITH_ENC = 1
WITH_ARITH_DEC = 1
JPEG_LIB_VERSION = 62
WITH_JPEG7 = 0
WITH_JPEG8 = 0
WITH_MEM_SRCDST = 1
# Define C macros based on configuration
ifeq ($(WITH_SIMD), 1)
DEFINES += -DWITH_SIMD
endif
ifeq ($(WITH_ARITH_ENC), 1)
WITH_ARITH = 1
DEFINES += -DC_ARITH_CODING_SUPPORTED
endif
ifeq ($(WITH_ARITH_DEC), 1)
WITH_ARITH = 1
DEFINES += -DD_ARITH_CODING_SUPPORTED
endif
ifeq ($(WITH_JPEG7), 1)
JPEG_LIB_VERSION = 70
endif
ifeq ($(WITH_JPEG8), 1)
JPEG_LIB_VERSION = 80
endif
DEFINES += -DJPEG_LIB_VERSION=$(JPEG_LIB_VERSION)
ifeq ($(WITH_MEM_SRCDST), 1)
DEFINES += -DMEM_SRCDST_SUPPORTED
endif
##################################################
### SIMD ###
##################################################
include $(CLEAR_VARS)
ifeq ($(WITH_SIMD), 1)
ifeq ($(SIMD_ARCH), arm)
LOCAL_SRC_FILES = simd/jsimd_arm_neon.S simd/jsimd_arm.c
LOCAL_ARM_NEON := true
endif
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/simd $(LOCAL_PATH)/android
LOCAL_MODULE = simd
include $(BUILD_STATIC_LIBRARY)
endif # WITH_SIMD
##################################################
### libjpeg ###
##################################################
include $(CLEAR_VARS)
LIBJPEG_SRC_FILES = jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c \
jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c \
jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c \
jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdinput.c jdmainct.c \
jdmarker.c jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c \
jerror.c jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c \
jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c
ifneq ($(WITH_SIMD), 1)
LIBJPEG_SRC_FILES += jsimd_none.c
endif
ifeq ($(WITH_ARITH), 1)
LIBJPEG_SRC_FILES += jaricom.c
endif
ifeq ($(WITH_ARITH_ENC), 1)
LIBJPEG_SRC_FILES += jcarith.c
endif
ifeq ($(WITH_ARITH_DEC), 1)
LIBJPEG_SRC_FILES += jdarith.c
endif
LOCAL_SRC_FILES := ${LIBJPEG_SRC_FILES}
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
ifeq ($(WITH_SIMD), 1)
LOCAL_STATIC_LIBRARIES = libsimd
endif
LOCAL_MODULE = jpeg
include $(BUILD_SHARED_LIBRARY)
##################################################
### libturbojpeg ###
##################################################
ifeq ($(WITH_TURBOJPEG), 1)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := ${LIBJPEG_SRC_FILES} turbojpeg.c transupp.c jdatadst-tj.c \
jdatasrc-tj.c turbojpeg-jni.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
ifeq ($(WITH_SIMD), 1)
LOCAL_STATIC_LIBRARIES = libsimd
endif
LOCAL_MODULE = turbojpeg
include $(BUILD_SHARED_LIBRARY)
endif # WITH_TURBOJPEG
######################################################
### cjpeg ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = cdjpeg.c cjpeg.c rdbmp.c rdgif.c rdppm.c rdswitch.c \
rdtarga.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES) -DBMP_SUPPORTED -DGIF_SUPPORTED \
-DPPM_SUPPORTED -DTARGA_SUPPORTED
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_MODULE = cjpeg
include $(BUILD_EXECUTABLE)
######################################################
### djpeg ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = cdjpeg.c djpeg.c rdcolmap.c rdswitch.c wrbmp.c wrgif.c \
wrppm.c wrtarga.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES) -DBMP_SUPPORTED -DGIF_SUPPORTED \
-DPPM_SUPPORTED -DTARGA_SUPPORTED
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_MODULE = djpeg
include $(BUILD_EXECUTABLE)
######################################################
### jpegtran ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = jpegtran.c rdswitch.c cdjpeg.c transupp.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_MODULE = jpegtran
include $(BUILD_EXECUTABLE)
######################################################
### rdjpgcom ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = rdjpgcom.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_MODULE = rdjpgcom
include $(BUILD_EXECUTABLE)
######################################################
### wrjpgcom ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = wrjpgcom.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libjpeg
LOCAL_MODULE = wrjpgcom
include $(BUILD_EXECUTABLE)
######################################################
### tjunittest ###
######################################################
ifeq ($(WITH_TURBOJPEG), 1)
include $(CLEAR_VARS)
LOCAL_SRC_FILES = tjunittest.c tjutil.c
LOCAL_CFLAGS := $(CFLAGS) $(DEFINES)
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libturbojpeg
LOCAL_MODULE = tjunittest
include $(BUILD_EXECUTABLE)
######################################################
### tjbench ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = tjbench.c bmp.c tjutil.c rdbmp.c rdppm.c wrbmp.c wrppm.c
LOCAL_CFLAGS = $(DEFINES) -DBMP_SUPPORTED -DPPM_SUPPORTED
LOCAL_C_INCLUDES := $(LOCAL_PATH) $(LOCAL_PATH)/android
LOCAL_SHARED_LIBRARIES = libturbojpeg
LOCAL_MODULE = tjbench
include $(BUILD_EXECUTABLE)
endif # WITH_TURBOJPEG
######################################################
### md5cmp ###
######################################################
include $(CLEAR_VARS)
LOCAL_SRC_FILES = md5/md5cmp.c md5/md5.c md5/md5hl.c
LOCAL_MODULE = md5cmp
include $(BUILD_EXECUTABLE)
endif # TARGET_SIMULATOR != true

Просмотреть файл

@ -319,7 +319,7 @@ This release of libjpeg-turbo can use ARM NEON SIMD instructions to accelerate
JPEG compression/decompression by approximately 2-4x on ARMv7 and later
platforms. If libjpeg-turbo is configured on an ARM Linux platform, then the
build system will automatically include the NEON SIMD routines, if they are
supported.
supported. Build instructions for other ARM-based platforms follow.
Building libjpeg-turbo for iOS
@ -393,6 +393,45 @@ described above. Otherwise, you may get a libtool error such as "unable to
infer tagged configuration."
Building libjpeg-turbo for Android
----------------------------------
Building libjpeg-turbo for Android platforms requires the Android NDK
(https://developer.android.com/tools/sdk/ndk) and autotools. The following is
a general recipe script that can be modified for your specific needs.
# Set these variables to suit your needs
NDK_PATH={full path to the "ndk" directory-- for example, /opt/android/ndk}
BUILD_PLATFORM={the platform name for the NDK package you installed--
for example, "windows-x86" or "linux-x86_64"}
TOOLCHAIN_VERSION={"4.6", "4.8", etc. This corresponds to a toolchain
directory under ${NDK_PATH}/toolchains/.}
ANDROID_VERSION={The minimum version of Android to support-- for example,
"9", "19", etc.}
HOST=arm-linux-androideabi
TOOLCHAIN=${NDK_PATH}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM}
SYSROOT=${NDK_PATH}/platforms/android-${ANDROID_VERSION}/arch-arm
ANDROID_INCLUDES="-I${SYSROOT}/usr/include -I${TOOLCHAIN}/include"
ANDROID_CFLAGS="-march=armv7-a -mfloat-abi=softfp -fprefetch-loop-arrays \
-fstrict-aliasing --sysroot=${SYSROOT}"
export CPP=${TOOLCHAIN}/bin/${HOST}-cpp
export AR=${TOOLCHAIN}/bin/${HOST}-ar
export AS=${TOOLCHAIN}/bin/${HOST}-as
export NM=${TOOLCHAIN}/bin/${HOST}-nm
export CC=${TOOLCHAIN}/bin/${HOST}-gcc
export LD=${TOOLCHAIN}/bin/${HOST}-ld
export RANLIB=${TOOLCHAIN}/bin/${HOST}-ranlib
export OBJDUMP=${TOOLCHAIN}/bin/${HOST}-objdump
export STRIP=${TOOLCHAIN}/bin/${HOST}-strip
cd {build_directory}
sh {source_directory}/configure --host=${HOST} \
CFLAGS="${ANDROID_INCLUDES} ${ANDROID_CFLAGS} -O3" \
CPPFLAGS="${ANDROID_INCLUDES} ${ANDROID_CFLAGS}" \
LDFLAGS="${ANDROID_CFLAGS}" --with-simd ${1+"$@"}
make
*******************************************************************************
** Building on Windows (Visual C++ or MinGW)
*******************************************************************************

Просмотреть файл

@ -1,46 +0,0 @@
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define if your compiler supports prototypes */
#define HAVE_PROTOTYPES 1
/* Define to 1 if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if the system has the type `unsigned char'. */
#define HAVE_UNSIGNED_CHAR 1
/* Define to 1 if the system has the type `unsigned short'. */
#define HAVE_UNSIGNED_SHORT 1
/* Compiler does not support pointers to undefined structures. */
/* #undef INCOMPLETE_TYPES_BROKEN */
/* Define if you have BSD-like bzero and bcopy in <strings.h> rather than
memset/memcpy in <string.h>. */
/* #undef NEED_BSD_STRINGS */
/* Define if linker requires that the first 15 characters of global names be
unique. */
/* #undef NEED_SHORT_EXTERNAL_NAMES */
/* Define if you need to include <sys/types.h> to get size_t. */
#define NEED_SYS_TYPES_H 1
/* Define if your (broken) compiler shifts signed values as if they were
unsigned. */
/* #undef RIGHT_SHIFT_IS_UNSIGNED */
/* Define to 1 if type `char' is unsigned and you are not using gcc. */
#ifndef __CHAR_UNSIGNED__
/* # undef __CHAR_UNSIGNED__ */
#endif
/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

Просмотреть файл

@ -1,2 +0,0 @@
/* How to obtain function inlining. */
#define INLINE inline __attribute__((always_inline))