1cabdff1aSopenharmony_ciMAIN_MAKEFILE=1
2cabdff1aSopenharmony_ciinclude ffbuild/config.mak
3cabdff1aSopenharmony_ci
4cabdff1aSopenharmony_civpath %.c    $(SRC_PATH)
5cabdff1aSopenharmony_civpath %.cpp  $(SRC_PATH)
6cabdff1aSopenharmony_civpath %.h    $(SRC_PATH)
7cabdff1aSopenharmony_civpath %.inc  $(SRC_PATH)
8cabdff1aSopenharmony_civpath %.m    $(SRC_PATH)
9cabdff1aSopenharmony_civpath %.S    $(SRC_PATH)
10cabdff1aSopenharmony_civpath %.asm  $(SRC_PATH)
11cabdff1aSopenharmony_civpath %.rc   $(SRC_PATH)
12cabdff1aSopenharmony_civpath %.v    $(SRC_PATH)
13cabdff1aSopenharmony_civpath %.texi $(SRC_PATH)
14cabdff1aSopenharmony_civpath %.cu   $(SRC_PATH)
15cabdff1aSopenharmony_civpath %.ptx  $(SRC_PATH)
16cabdff1aSopenharmony_civpath %.metal $(SRC_PATH)
17cabdff1aSopenharmony_civpath %/fate_config.sh.template $(SRC_PATH)
18cabdff1aSopenharmony_ci
19cabdff1aSopenharmony_ciTESTTOOLS   = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 audiomatch
20cabdff1aSopenharmony_ciHOSTPROGS  := $(TESTTOOLS:%=tests/%) doc/print_options
21cabdff1aSopenharmony_ci
22cabdff1aSopenharmony_ciALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale swresample
23cabdff1aSopenharmony_ci
24cabdff1aSopenharmony_ci# $(FFLIBS-yes) needs to be in linking order
25cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_AVDEVICE)   += avdevice
26cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_AVFILTER)   += avfilter
27cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_AVFORMAT)   += avformat
28cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_AVCODEC)    += avcodec
29cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_POSTPROC)   += postproc
30cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_SWRESAMPLE) += swresample
31cabdff1aSopenharmony_ciFFLIBS-$(CONFIG_SWSCALE)    += swscale
32cabdff1aSopenharmony_ci
33cabdff1aSopenharmony_ciFFLIBS := avutil
34cabdff1aSopenharmony_ci
35cabdff1aSopenharmony_ciDATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd
36cabdff1aSopenharmony_ci
37cabdff1aSopenharmony_ciSKIPHEADERS = compat/w32pthreads.h
38cabdff1aSopenharmony_ci
39cabdff1aSopenharmony_ci# first so "all" becomes default target
40cabdff1aSopenharmony_ciall: all-yes
41cabdff1aSopenharmony_ci
42cabdff1aSopenharmony_ciinclude $(SRC_PATH)/tools/Makefile
43cabdff1aSopenharmony_ciinclude $(SRC_PATH)/ffbuild/common.mak
44cabdff1aSopenharmony_ci
45cabdff1aSopenharmony_ciFF_EXTRALIBS := $(FFEXTRALIBS)
46cabdff1aSopenharmony_ciFF_DEP_LIBS  := $(DEP_LIBS)
47cabdff1aSopenharmony_ciFF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS)
48cabdff1aSopenharmony_ci
49cabdff1aSopenharmony_ci$(TOOLS): %$(EXESUF): %.o
50cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(EXTRALIBS-$(*F)) $(EXTRALIBS) $(ELIBS)
51cabdff1aSopenharmony_ci
52cabdff1aSopenharmony_citarget_dec_%_fuzzer$(EXESUF): target_dec_%_fuzzer.o $(FF_DEP_LIBS)
53cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
54cabdff1aSopenharmony_ci
55cabdff1aSopenharmony_citools/target_bsf_%_fuzzer$(EXESUF): tools/target_bsf_%_fuzzer.o $(FF_DEP_LIBS)
56cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
57cabdff1aSopenharmony_ci
58cabdff1aSopenharmony_citarget_dem_%_fuzzer$(EXESUF): target_dem_%_fuzzer.o $(FF_DEP_LIBS)
59cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
60cabdff1aSopenharmony_ci
61cabdff1aSopenharmony_citools/target_dem_fuzzer$(EXESUF): tools/target_dem_fuzzer.o $(FF_DEP_LIBS)
62cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
63cabdff1aSopenharmony_ci
64cabdff1aSopenharmony_citools/target_io_dem_fuzzer$(EXESUF): tools/target_io_dem_fuzzer.o $(FF_DEP_LIBS)
65cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) $(FF_EXTRALIBS) $(LIBFUZZER_PATH)
66cabdff1aSopenharmony_ci
67cabdff1aSopenharmony_ci
68cabdff1aSopenharmony_citools/enum_options$(EXESUF): ELIBS = $(FF_EXTRALIBS)
69cabdff1aSopenharmony_citools/enum_options$(EXESUF): $(FF_DEP_LIBS)
70cabdff1aSopenharmony_citools/scale_slice_test$(EXESUF): $(FF_DEP_LIBS)
71cabdff1aSopenharmony_citools/scale_slice_test$(EXESUF): ELIBS = $(FF_EXTRALIBS)
72cabdff1aSopenharmony_citools/sofa2wavs$(EXESUF): ELIBS = $(FF_EXTRALIBS)
73cabdff1aSopenharmony_citools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS)
74cabdff1aSopenharmony_citools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS)
75cabdff1aSopenharmony_citools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
76cabdff1aSopenharmony_citools/target_dem_%_fuzzer$(EXESUF): $(FF_DEP_LIBS)
77cabdff1aSopenharmony_ci
78cabdff1aSopenharmony_ciCONFIGURABLE_COMPONENTS =                                           \
79cabdff1aSopenharmony_ci    $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))                 \
80cabdff1aSopenharmony_ci    $(SRC_PATH)/libavcodec/bitstream_filters.c                      \
81cabdff1aSopenharmony_ci    $(SRC_PATH)/libavcodec/hwaccels.h                               \
82cabdff1aSopenharmony_ci    $(SRC_PATH)/libavcodec/parsers.c                                \
83cabdff1aSopenharmony_ci    $(SRC_PATH)/libavformat/protocols.c                             \
84cabdff1aSopenharmony_ci
85cabdff1aSopenharmony_ciconfig_components.h: ffbuild/.config
86cabdff1aSopenharmony_ciffbuild/.config: $(CONFIGURABLE_COMPONENTS)
87cabdff1aSopenharmony_ci	@-tput bold 2>/dev/null
88cabdff1aSopenharmony_ci	@-printf '\nWARNING: $(?) newer than config_components.h, rerun configure\n\n'
89cabdff1aSopenharmony_ci	@-tput sgr0 2>/dev/null
90cabdff1aSopenharmony_ci
91cabdff1aSopenharmony_ciSUBDIR_VARS := CLEANFILES FFLIBS HOSTPROGS TESTPROGS TOOLS               \
92cabdff1aSopenharmony_ci               HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS            \
93cabdff1aSopenharmony_ci               ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS     \
94cabdff1aSopenharmony_ci               ALTIVEC-OBJS VSX-OBJS MMX-OBJS X86ASM-OBJS                \
95cabdff1aSopenharmony_ci               MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSP-OBJS MSA-OBJS         \
96cabdff1aSopenharmony_ci               MMI-OBJS LSX-OBJS LASX-OBJS OBJS SLIBOBJS SHLIBOBJS       \
97cabdff1aSopenharmony_ci               STLIBOBJS HOSTOBJS TESTOBJS
98cabdff1aSopenharmony_ci
99cabdff1aSopenharmony_cidefine RESET
100cabdff1aSopenharmony_ci$(1) :=
101cabdff1aSopenharmony_ci$(1)-yes :=
102cabdff1aSopenharmony_ciendef
103cabdff1aSopenharmony_ci
104cabdff1aSopenharmony_cidefine DOSUBDIR
105cabdff1aSopenharmony_ci$(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
106cabdff1aSopenharmony_ciSUBDIR := $(1)/
107cabdff1aSopenharmony_ciinclude $(SRC_PATH)/$(1)/Makefile
108cabdff1aSopenharmony_ci-include $(SRC_PATH)/$(1)/$(ARCH)/Makefile
109cabdff1aSopenharmony_ci-include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile
110cabdff1aSopenharmony_ciinclude $(SRC_PATH)/ffbuild/library.mak
111cabdff1aSopenharmony_ciendef
112cabdff1aSopenharmony_ci
113cabdff1aSopenharmony_ci$(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
114cabdff1aSopenharmony_ci
115cabdff1aSopenharmony_ciinclude $(SRC_PATH)/fftools/Makefile
116cabdff1aSopenharmony_ciinclude $(SRC_PATH)/doc/Makefile
117cabdff1aSopenharmony_ciinclude $(SRC_PATH)/doc/examples/Makefile
118cabdff1aSopenharmony_ci
119cabdff1aSopenharmony_ci$(ALLFFLIBS:%=lib%/version.o): libavutil/ffversion.h
120cabdff1aSopenharmony_ci
121cabdff1aSopenharmony_ci$(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF)
122cabdff1aSopenharmony_ciifeq ($(STRIPTYPE),direct)
123cabdff1aSopenharmony_ci	$(STRIP) -o $@ $<
124cabdff1aSopenharmony_cielse
125cabdff1aSopenharmony_ci	$(RM) $@
126cabdff1aSopenharmony_ci	$(CP) $< $@
127cabdff1aSopenharmony_ci	$(STRIP) $@
128cabdff1aSopenharmony_ciendif
129cabdff1aSopenharmony_ci
130cabdff1aSopenharmony_ci%$(PROGSSUF)_g$(EXESUF): $(FF_DEP_LIBS)
131cabdff1aSopenharmony_ci	$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS)
132cabdff1aSopenharmony_ci
133cabdff1aSopenharmony_ciVERSION_SH  = $(SRC_PATH)/ffbuild/version.sh
134cabdff1aSopenharmony_ciGIT_LOG     = $(SRC_PATH)/.git/logs/HEAD
135cabdff1aSopenharmony_ci
136cabdff1aSopenharmony_ci.version: $(wildcard $(GIT_LOG)) $(VERSION_SH) ffbuild/config.mak
137cabdff1aSopenharmony_ci.version: M=@
138cabdff1aSopenharmony_ci
139cabdff1aSopenharmony_cilibavutil/ffversion.h .version:
140cabdff1aSopenharmony_ci	$(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION)
141cabdff1aSopenharmony_ci	$(Q)touch .version
142cabdff1aSopenharmony_ci
143cabdff1aSopenharmony_ci# force version.sh to run whenever version might have changed
144cabdff1aSopenharmony_ci-include .version
145cabdff1aSopenharmony_ci
146cabdff1aSopenharmony_ciinstall: install-libs install-headers
147cabdff1aSopenharmony_ci
148cabdff1aSopenharmony_ciinstall-libs: install-libs-yes
149cabdff1aSopenharmony_ci
150cabdff1aSopenharmony_ciinstall-data: $(DATA_FILES)
151cabdff1aSopenharmony_ci	$(Q)mkdir -p "$(DATADIR)"
152cabdff1aSopenharmony_ci	$(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)"
153cabdff1aSopenharmony_ci
154cabdff1aSopenharmony_ciuninstall: uninstall-data uninstall-headers uninstall-libs uninstall-pkgconfig
155cabdff1aSopenharmony_ci
156cabdff1aSopenharmony_ciuninstall-data:
157cabdff1aSopenharmony_ci	$(RM) -r "$(DATADIR)"
158cabdff1aSopenharmony_ci
159cabdff1aSopenharmony_ciclean::
160cabdff1aSopenharmony_ci	$(RM) $(CLEANSUFFIXES)
161cabdff1aSopenharmony_ci	$(RM) $(addprefix compat/,$(CLEANSUFFIXES)) $(addprefix compat/*/,$(CLEANSUFFIXES)) $(addprefix compat/*/*/,$(CLEANSUFFIXES))
162cabdff1aSopenharmony_ci	$(RM) -r coverage-html
163cabdff1aSopenharmony_ci	$(RM) -rf coverage.info coverage.info.in lcov
164cabdff1aSopenharmony_ci
165cabdff1aSopenharmony_cidistclean:: clean
166cabdff1aSopenharmony_ci	$(RM) .version config.asm config.h config_components.h mapfile  \
167cabdff1aSopenharmony_ci		ffbuild/.config ffbuild/config.* libavutil/avconfig.h \
168cabdff1aSopenharmony_ci		version.h libavutil/ffversion.h libavcodec/codec_names.h \
169cabdff1aSopenharmony_ci		libavcodec/bsf_list.c libavformat/protocol_list.c \
170cabdff1aSopenharmony_ci		libavcodec/codec_list.c libavcodec/parser_list.c \
171cabdff1aSopenharmony_ci		libavfilter/filter_list.c libavdevice/indev_list.c libavdevice/outdev_list.c \
172cabdff1aSopenharmony_ci		libavformat/muxer_list.c libavformat/demuxer_list.c
173cabdff1aSopenharmony_ciifeq ($(SRC_LINK),src)
174cabdff1aSopenharmony_ci	$(RM) src
175cabdff1aSopenharmony_ciendif
176cabdff1aSopenharmony_ci	$(RM) -rf doc/examples/pc-uninstalled
177cabdff1aSopenharmony_ci
178cabdff1aSopenharmony_ciconfig:
179cabdff1aSopenharmony_ci	$(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION)
180cabdff1aSopenharmony_ci
181cabdff1aSopenharmony_cibuild: all alltools examples testprogs
182cabdff1aSopenharmony_cicheck: all alltools examples testprogs fate
183cabdff1aSopenharmony_ci
184cabdff1aSopenharmony_ciinclude $(SRC_PATH)/tests/Makefile
185cabdff1aSopenharmony_ci
186cabdff1aSopenharmony_ci$(sort $(OUTDIRS)):
187cabdff1aSopenharmony_ci	$(Q)mkdir -p $@
188cabdff1aSopenharmony_ci
189cabdff1aSopenharmony_ci# Dummy rule to stop make trying to rebuild removed or renamed headers
190cabdff1aSopenharmony_ci%.h:
191cabdff1aSopenharmony_ci	@:
192cabdff1aSopenharmony_ci
193cabdff1aSopenharmony_ci# Disable suffix rules.  Most of the builtin rules are suffix rules,
194cabdff1aSopenharmony_ci# so this saves some time on slow systems.
195cabdff1aSopenharmony_ci.SUFFIXES:
196cabdff1aSopenharmony_ci
197cabdff1aSopenharmony_ci.PHONY: all all-yes alltools build check config testprogs
198cabdff1aSopenharmony_ci.PHONY: *clean install* uninstall*
199