1# Ignore this file during non-NDK builds. 2ifdef NDK_ROOT 3LOCAL_PATH := $(call my-dir) 4 5WEBP_CFLAGS := -Wall -DANDROID -DHAVE_MALLOC_H -DHAVE_PTHREAD -DWEBP_USE_THREAD 6WEBP_CFLAGS += -fvisibility=hidden 7 8ifeq ($(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 14endif 15 16# mips32 fails to build with clang from r14b 17# https://bugs.chromium.org/p/webp/issues/detail?id=343 18ifeq ($(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 25endif 26 27ifneq ($(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 34else 35 NEON := c 36endif 37 38sharpyuv_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 47dec_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 59demux_srcs := \ 60 src/demux/anim_decode.c \ 61 src/demux/demux.c \ 62 63dsp_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 108dsp_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 131enc_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 156mux_srcs := \ 157 src/mux/anim_encode.c \ 158 src/mux/muxedit.c \ 159 src/mux/muxinternal.c \ 160 src/mux/muxread.c \ 161 162utils_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 174utils_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 182include $(CLEAR_VARS) 183 184LOCAL_SRC_FILES := \ 185 $(dec_srcs) \ 186 $(dsp_dec_srcs) \ 187 $(utils_dec_srcs) \ 188 189LOCAL_CFLAGS := $(WEBP_CFLAGS) 190LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 191 192# prefer arm over thumb mode for performance gains 193LOCAL_ARM_MODE := arm 194 195ifeq ($(USE_CPUFEATURES),yes) 196 LOCAL_STATIC_LIBRARIES := cpufeatures 197endif 198 199LOCAL_MODULE := webpdecoder_static 200 201LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD 202LOCAL_LICENSE_CONDITIONS := notice 203LOCAL_NOTICE_FILE := $(LOCAL_PATH)/COPYING $(LOCAL_PATH)/NOTICE $(LOCAL_PATH)/PATENTS 204include $(BUILD_STATIC_LIBRARY) 205 206ifeq ($(ENABLE_SHARED),1) 207include $(CLEAR_VARS) 208 209LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static 210 211LOCAL_MODULE := webpdecoder 212 213LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD 214LOCAL_LICENSE_CONDITIONS := notice 215LOCAL_NOTICE_FILE := $(LOCAL_PATH)/COPYING $(LOCAL_PATH)/NOTICE $(LOCAL_PATH)/PATENTS 216include $(BUILD_SHARED_LIBRARY) 217endif # ENABLE_SHARED=1 218 219################################################################################ 220# libwebp 221 222include $(CLEAR_VARS) 223 224LOCAL_SRC_FILES := \ 225 $(sharpyuv_srcs) \ 226 $(dsp_enc_srcs) \ 227 $(enc_srcs) \ 228 $(utils_enc_srcs) \ 229 230LOCAL_CFLAGS := $(WEBP_CFLAGS) 231LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src $(LOCAL_PATH) 232 233# prefer arm over thumb mode for performance gains 234LOCAL_ARM_MODE := arm 235 236LOCAL_WHOLE_STATIC_LIBRARIES := webpdecoder_static 237 238LOCAL_MODULE := webp 239 240ifeq ($(ENABLE_SHARED),1) 241 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD 242 LOCAL_LICENSE_CONDITIONS := notice 243 LOCAL_NOTICE_FILE := $(LOCAL_PATH)/COPYING $(LOCAL_PATH)/NOTICE $(LOCAL_PATH)/PATENTS 244 include $(BUILD_SHARED_LIBRARY) 245else 246 include $(BUILD_STATIC_LIBRARY) 247endif 248 249################################################################################ 250# libwebpdemux 251 252include $(CLEAR_VARS) 253 254LOCAL_SRC_FILES := $(demux_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 := webpdemux 263 264ifeq ($(ENABLE_SHARED),1) 265 LOCAL_SHARED_LIBRARIES := webp 266 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD 267 LOCAL_LICENSE_CONDITIONS := notice 268 LOCAL_NOTICE_FILE := $(LOCAL_PATH)/COPYING $(LOCAL_PATH)/NOTICE $(LOCAL_PATH)/PATENTS 269 include $(BUILD_SHARED_LIBRARY) 270else 271 LOCAL_STATIC_LIBRARIES := webp 272 include $(BUILD_STATIC_LIBRARY) 273endif 274 275################################################################################ 276# libwebpmux 277 278include $(CLEAR_VARS) 279 280LOCAL_SRC_FILES := $(mux_srcs) 281 282LOCAL_CFLAGS := $(WEBP_CFLAGS) 283LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/src 284 285# prefer arm over thumb mode for performance gains 286LOCAL_ARM_MODE := arm 287 288LOCAL_MODULE := webpmux 289 290ifeq ($(ENABLE_SHARED),1) 291 LOCAL_SHARED_LIBRARIES := webp 292 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD 293 LOCAL_LICENSE_CONDITIONS := notice 294 LOCAL_NOTICE_FILE := $(LOCAL_PATH)/COPYING $(LOCAL_PATH)/NOTICE $(LOCAL_PATH)/PATENTS 295 include $(BUILD_SHARED_LIBRARY) 296else 297 LOCAL_STATIC_LIBRARIES := webp 298 include $(BUILD_STATIC_LIBRARY) 299endif 300 301################################################################################ 302 303WEBP_SRC_PATH := $(LOCAL_PATH) 304include $(WEBP_SRC_PATH)/imageio/Android.mk 305include $(WEBP_SRC_PATH)/examples/Android.mk 306 307ifeq ($(USE_CPUFEATURES),yes) 308 $(call import-module,android/cpufeatures) 309endif 310endif # NDK_ROOT 311