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