xref: /aosp_15_r20/external/webp/Android.mk (revision b2055c353e87c8814eb2b6b1b11112a1562253bd)
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