1LOCAL_PATH := $(call my-dir) 2 3WEBP_CFLAGS := -Wall -DANDROID -DHAVE_MALLOC_H -DHAVE_PTHREAD -DWEBP_USE_THREAD 4WEBP_CFLAGS += -fvisibility=hidden 5 6ifeq ($(APP_OPTIM),release) 7 WEBP_CFLAGS += -finline-functions -ffast-math \ 8 -ffunction-sections -fdata-sections 9 ifeq ($(findstring clang,$(NDK_TOOLCHAIN_VERSION)),) 10 WEBP_CFLAGS += -frename-registers -s 11 endif 12endif 13 14# mips32 fails to build with clang from r14b 15# https://bugs.chromium.org/p/webp/issues/detail?id=343 16ifeq ($(findstring clang,$(NDK_TOOLCHAIN_VERSION)),clang) 17 ifeq ($(TARGET_ARCH),mips) 18 clang_version := $(shell $(TARGET_CC) --version) 19 ifneq ($(findstring clang version 3,$(clang_version)),) 20 WEBP_CFLAGS += -no-integrated-as 21 endif 22 endif 23endif 24 25ifneq ($(findstring armeabi-v7a, $(TARGET_ARCH_ABI)),) 26 # Setting LOCAL_ARM_NEON will enable -mfpu=neon which may cause illegal 27 # instructions to be generated for armv7a code. Instead target the neon code 28 # specifically. 29 NEON := c.neon 30 USE_CPUFEATURES := yes 31 WEBP_CFLAGS += -DHAVE_CPU_FEATURES_H 32else 33 NEON := c 34endif 35 36dec_srcs := \ 37 src/dec/alpha_dec.c \ 38 src/dec/buffer_dec.c \ 39 src/dec/frame_dec.c \ 40 src/dec/idec_dec.c \ 41 src/dec/io_dec.c \ 42 src/dec/quant_dec.c \ 43 src/dec/tree_dec.c \ 44 src/dec/vp8_dec.c \ 45 src/dec/vp8l_dec.c \ 46 src/dec/webp_dec.c \ 47 48demux_srcs := \ 49 src/demux/anim_decode.c \ 50 src/demux/demux.c \ 51 52dsp_dec_srcs := \ 53 src/dsp/alpha_processing.c \ 54 src/dsp/alpha_processing_mips_dsp_r2.c \ 55 src/dsp/alpha_processing_neon.$(NEON) \ 56 src/dsp/alpha_processing_sse2.c \ 57 src/dsp/alpha_processing_sse41.c \ 58 src/dsp/cpu.c \ 59 src/dsp/dec.c \ 60 src/dsp/dec_clip_tables.c \ 61 src/dsp/dec_mips32.c \ 62 src/dsp/dec_mips_dsp_r2.c \ 63 src/dsp/dec_msa.c \ 64 src/dsp/dec_neon.$(NEON) \ 65 src/dsp/dec_sse2.c \ 66 src/dsp/dec_sse41.c \ 67 src/dsp/filters.c \ 68 src/dsp/filters_mips_dsp_r2.c \ 69 src/dsp/filters_msa.c \ 70 src/dsp/filters_neon.$(NEON) \ 71 src/dsp/filters_sse2.c \ 72 src/dsp/lossless.c \ 73 src/dsp/lossless_mips_dsp_r2.c \ 74 src/dsp/lossless_msa.c \ 75 src/dsp/lossless_neon.$(NEON) \ 76 src/dsp/lossless_sse2.c \ 77 src/dsp/rescaler.c \ 78 src/dsp/rescaler_mips32.c \ 79 src/dsp/rescaler_mips_dsp_r2.c \ 80 src/dsp/rescaler_msa.c \ 81 src/dsp/rescaler_neon.$(NEON) \ 82 src/dsp/rescaler_sse2.c \ 83 src/dsp/upsampling.c \ 84 src/dsp/upsampling_mips_dsp_r2.c \ 85 src/dsp/upsampling_msa.c \ 86 src/dsp/upsampling_neon.$(NEON) \ 87 src/dsp/upsampling_sse2.c \ 88 src/dsp/upsampling_sse41.c \ 89 src/dsp/yuv.c \ 90 src/dsp/yuv_mips32.c \ 91 src/dsp/yuv_mips_dsp_r2.c \ 92 src/dsp/yuv_neon.$(NEON) \ 93 src/dsp/yuv_sse2.c \ 94 src/dsp/yuv_sse41.c \ 95 96dsp_enc_srcs := \ 97 src/dsp/cost.c \ 98 src/dsp/cost_mips32.c \ 99 src/dsp/cost_mips_dsp_r2.c \ 100 src/dsp/cost_neon.$(NEON) \ 101 src/dsp/cost_sse2.c \ 102 src/dsp/enc.c \ 103 src/dsp/enc_mips32.c \ 104 src/dsp/enc_mips_dsp_r2.c \ 105 src/dsp/enc_msa.c \ 106 src/dsp/enc_neon.$(NEON) \ 107 src/dsp/enc_sse2.c \ 108 src/dsp/enc_sse41.c \ 109 src/dsp/lossless_enc.c \ 110 src/dsp/lossless_enc_mips32.c \ 111 src/dsp/lossless_enc_mips_dsp_r2.c \ 112 src/dsp/lossless_enc_msa.c \ 113 src/dsp/lossless_enc_neon.$(NEON) \ 114 src/dsp/lossless_enc_sse2.c \ 115 src/dsp/lossless_enc_sse41.c \ 116 src/dsp/ssim.c \ 117 src/dsp/ssim_sse2.c \ 118 119enc_srcs := \ 120 src/enc/alpha_enc.c \ 121 src/enc/analysis_enc.c \ 122 src/enc/backward_references_cost_enc.c \ 123 src/enc/backward_references_enc.c \ 124 src/enc/config_enc.c \ 125 src/enc/cost_enc.c \ 126 src/enc/filter_enc.c \ 127 src/enc/frame_enc.c \ 128 src/enc/histogram_enc.c \ 129 src/enc/iterator_enc.c \ 130 src/enc/near_lossless_enc.c \ 131 src/enc/picture_enc.c \ 132 src/enc/picture_csp_enc.c \ 133 src/enc/picture_psnr_enc.c \ 134 src/enc/picture_rescale_enc.c \ 135 src/enc/picture_tools_enc.c \ 136 src/enc/predictor_enc.c \ 137 src/enc/quant_enc.c \ 138 src/enc/syntax_enc.c \ 139 src/enc/token_enc.c \ 140 src/enc/tree_enc.c \ 141 src/enc/vp8l_enc.c \ 142 src/enc/webp_enc.c \ 143 144mux_srcs := \ 145 src/mux/anim_encode.c \ 146 src/mux/muxedit.c \ 147 src/mux/muxinternal.c \ 148 src/mux/muxread.c \ 149 150utils_dec_srcs := \ 151 src/utils/bit_reader_utils.c \ 152 src/utils/color_cache_utils.c \ 153 src/utils/filters_utils.c \ 154 src/utils/huffman_utils.c \ 155 src/utils/quant_levels_dec_utils.c \ 156 src/utils/random_utils.c \ 157 src/utils/rescaler_utils.c \ 158 src/utils/thread_utils.c \ 159 src/utils/utils.c \ 160 161utils_enc_srcs := \ 162 src/utils/bit_writer_utils.c \ 163 src/utils/huffman_encode_utils.c \ 164 src/utils/quant_levels_utils.c \ 165 166################################################################################ 167# libwebpdecoder 168 169include $(CLEAR_VARS) 170 171LOCAL_SRC_FILES := \ 172 $(dec_srcs) \ 173 $(dsp_dec_srcs) \ 174 $(utils_dec_srcs) \ 175 176LOCAL_CFLAGS := $(WEBP_CFLAGS) 177LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 178 179# prefer arm over thumb mode for performance gains 180LOCAL_ARM_MODE := arm 181 182ifeq ($(USE_CPUFEATURES),yes) 183 LOCAL_STATIC_LIBRARIES := cpufeatures 184endif 185 186LOCAL_MODULE := webpdecoder_static 187 188include $(BUILD_STATIC_LIBRARY) 189 190ifeq ($(ENABLE_SHARED),1) 191include $(CLEAR_VARS) 192 193LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static 194 195LOCAL_MODULE := webpdecoder 196 197include $(BUILD_SHARED_LIBRARY) 198endif # ENABLE_SHARED=1 199 200################################################################################ 201# libwebp 202 203include $(CLEAR_VARS) 204 205LOCAL_SRC_FILES := \ 206 $(dsp_enc_srcs) \ 207 $(enc_srcs) \ 208 $(utils_enc_srcs) \ 209 210LOCAL_CFLAGS := $(WEBP_CFLAGS) 211LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 212 213# prefer arm over thumb mode for performance gains 214LOCAL_ARM_MODE := arm 215 216LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static 217 218LOCAL_MODULE := webp 219 220ifeq ($(ENABLE_SHARED),1) 221 include $(BUILD_SHARED_LIBRARY) 222else 223 include $(BUILD_STATIC_LIBRARY) 224endif 225 226################################################################################ 227# libwebpdemux 228 229include $(CLEAR_VARS) 230 231LOCAL_SRC_FILES := $(demux_srcs) 232 233LOCAL_CFLAGS := $(WEBP_CFLAGS) 234LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 235 236# prefer arm over thumb mode for performance gains 237LOCAL_ARM_MODE := arm 238 239LOCAL_MODULE := webpdemux 240 241ifeq ($(ENABLE_SHARED),1) 242 LOCAL_SHARED_LIBRARIES := webp 243 include $(BUILD_SHARED_LIBRARY) 244else 245 LOCAL_STATIC_LIBRARIES := webp 246 include $(BUILD_STATIC_LIBRARY) 247endif 248 249################################################################################ 250# libwebpmux 251 252include $(CLEAR_VARS) 253 254LOCAL_SRC_FILES := $(mux_srcs) 255 256LOCAL_CFLAGS := $(WEBP_CFLAGS) 257LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 258 259# prefer arm over thumb mode for performance gains 260LOCAL_ARM_MODE := arm 261 262LOCAL_MODULE := webpmux 263 264ifeq ($(ENABLE_SHARED),1) 265 LOCAL_SHARED_LIBRARIES := webp 266 include $(BUILD_SHARED_LIBRARY) 267else 268 LOCAL_STATIC_LIBRARIES := webp 269 include $(BUILD_STATIC_LIBRARY) 270endif 271 272################################################################################ 273 274WEBP_SRC_PATH := $(LOCAL_PATH) 275include $(WEBP_SRC_PATH)/imageio/Android.mk 276#include $(WEBP_SRC_PATH)/examples/Android.mk 277 278ifeq ($(USE_CPUFEATURES),yes) 279 $(call import-module,android/cpufeatures) 280endif 281