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