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