Rev 6147 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6147 | serge | 1 | MAIN_MAKEFILE=1 |
2 | include config.mak |
||
3 | |||
4 | vpath %.c $(SRC_PATH) |
||
5 | vpath %.cpp $(SRC_PATH) |
||
6 | vpath %.h $(SRC_PATH) |
||
7 | vpath %.m $(SRC_PATH) |
||
8 | vpath %.S $(SRC_PATH) |
||
9 | vpath %.asm $(SRC_PATH) |
||
10 | vpath %.rc $(SRC_PATH) |
||
11 | vpath %.v $(SRC_PATH) |
||
12 | vpath %.texi $(SRC_PATH) |
||
13 | vpath %/fate_config.sh.template $(SRC_PATH) |
||
14 | |||
15 | AVPROGS-$(CONFIG_FFMPEG) += ffmpeg |
||
16 | AVPROGS-$(CONFIG_FFPLAY) += ffplay |
||
17 | AVPROGS-$(CONFIG_FFPROBE) += ffprobe |
||
18 | AVPROGS-$(CONFIG_FFSERVER) += ffserver |
||
19 | |||
20 | AVPROGS := $(AVPROGS-yes:%=%$(PROGSSUF)$(EXESUF)) |
||
21 | INSTPROGS = $(AVPROGS-yes:%=%$(PROGSSUF)$(EXESUF)) |
||
22 | PROGS += $(AVPROGS) |
||
23 | |||
24 | AVBASENAMES = ffmpeg ffplay ffprobe ffserver |
||
25 | ALLAVPROGS = $(AVBASENAMES:%=%$(PROGSSUF)$(EXESUF)) |
||
26 | ALLAVPROGS_G = $(AVBASENAMES:%=%$(PROGSSUF)_g$(EXESUF)) |
||
27 | |||
28 | $(foreach prog,$(AVBASENAMES),$(eval OBJS-$(prog) += cmdutils.o)) |
||
29 | $(foreach prog,$(AVBASENAMES),$(eval OBJS-$(prog)-$(CONFIG_OPENCL) += cmdutils_opencl.o)) |
||
30 | |||
31 | OBJS-ffmpeg += ffmpeg_opt.o ffmpeg_filter.o |
||
32 | OBJS-ffmpeg-$(HAVE_VDPAU_X11) += ffmpeg_vdpau.o |
||
33 | OBJS-ffmpeg-$(HAVE_DXVA2_LIB) += ffmpeg_dxva2.o |
||
34 | ifndef CONFIG_VIDEOTOOLBOX |
||
35 | OBJS-ffmpeg-$(CONFIG_VDA) += ffmpeg_videotoolbox.o |
||
36 | endif |
||
37 | OBJS-ffmpeg-$(CONFIG_VIDEOTOOLBOX) += ffmpeg_videotoolbox.o |
||
38 | OBJS-ffserver += ffserver_config.o |
||
39 | |||
40 | TESTTOOLS = audiogen videogen rotozoom tiny_psnr tiny_ssim base64 |
||
41 | HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options |
||
42 | TOOLS = qt-faststart trasher uncoded_frame |
||
43 | TOOLS-$(CONFIG_ZLIB) += cws2fws |
||
44 | |||
45 | # $(FFLIBS-yes) needs to be in linking order |
||
46 | FFLIBS-$(CONFIG_AVDEVICE) += avdevice |
||
47 | FFLIBS-$(CONFIG_AVFILTER) += avfilter |
||
48 | FFLIBS-$(CONFIG_AVFORMAT) += avformat |
||
49 | FFLIBS-$(CONFIG_AVCODEC) += avcodec |
||
50 | FFLIBS-$(CONFIG_AVRESAMPLE) += avresample |
||
51 | FFLIBS-$(CONFIG_POSTPROC) += postproc |
||
52 | FFLIBS-$(CONFIG_SWRESAMPLE) += swresample |
||
53 | FFLIBS-$(CONFIG_SWSCALE) += swscale |
||
54 | |||
55 | FFLIBS := avutil |
||
56 | |||
57 | DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.ffpreset) $(SRC_PATH)/doc/ffprobe.xsd |
||
58 | EXAMPLES_FILES := $(wildcard $(SRC_PATH)/doc/examples/*.c) $(SRC_PATH)/doc/examples/Makefile $(SRC_PATH)/doc/examples/README |
||
59 | |||
60 | SKIPHEADERS = cmdutils_common_opts.h compat/w32pthreads.h |
||
61 | |||
62 | include $(SRC_PATH)/common.mak |
||
63 | |||
64 | FF_EXTRALIBS := $(FFEXTRALIBS) |
||
65 | FF_DEP_LIBS := $(DEP_LIBS) |
||
66 | FF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS) |
||
67 | |||
68 | all: $(AVPROGS) |
||
69 | |||
70 | $(TOOLS): %$(EXESUF): %.o $(EXEOBJS) |
||
71 | $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) |
||
72 | |||
73 | tools/cws2fws$(EXESUF): ELIBS = $(ZLIB) |
||
74 | tools/uncoded_frame$(EXESUF): $(FF_DEP_LIBS) |
||
75 | tools/uncoded_frame$(EXESUF): ELIBS = $(FF_EXTRALIBS) |
||
76 | |||
77 | config.h: .config |
||
78 | .config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) |
||
79 | @-tput bold 2>/dev/null |
||
80 | @-printf '\nWARNING: $(?F) newer than config.h, rerun configure\n\n' |
||
81 | @-tput sgr0 2>/dev/null |
||
82 | |||
83 | SUBDIR_VARS := CLEANFILES EXAMPLES 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 MMX-OBJS YASM-OBJS \ |
||
87 | MIPSFPU-OBJS MIPSDSPR2-OBJS MIPSDSPR1-OBJS MSA-OBJS \ |
||
88 | MMI-OBJS OBJS SLIBOBJS HOSTOBJS TESTOBJS |
||
89 | |||
90 | define RESET |
||
91 | $(1) := |
||
92 | $(1)-yes := |
||
93 | endef |
||
94 | |||
95 | define DOSUBDIR |
||
96 | $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) |
||
97 | SUBDIR := $(1)/ |
||
98 | include $(SRC_PATH)/$(1)/Makefile |
||
99 | -include $(SRC_PATH)/$(1)/$(ARCH)/Makefile |
||
100 | -include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile |
||
101 | include $(SRC_PATH)/library.mak |
||
102 | endef |
||
103 | |||
104 | $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) |
||
105 | |||
106 | define DOPROG |
||
107 | OBJS-$(1) += $(1).o $(EXEOBJS) $(OBJS-$(1)-yes) |
||
108 | $(1)$(PROGSSUF)_g$(EXESUF): $$(OBJS-$(1)) |
||
109 | $$(OBJS-$(1)): CFLAGS += $(CFLAGS-$(1)) |
||
110 | $(1)$(PROGSSUF)_g$(EXESUF): LDFLAGS += $(LDFLAGS-$(1)) |
||
111 | $(1)$(PROGSSUF)_g$(EXESUF): FF_EXTRALIBS += $(LIBS-$(1)) |
||
112 | -include $$(OBJS-$(1):.o=.d) |
||
113 | endef |
||
114 | |||
115 | $(foreach P,$(PROGS),$(eval $(call DOPROG,$(P:$(PROGSSUF)$(EXESUF)=)))) |
||
116 | |||
117 | ffprobe.o cmdutils.o libavcodec/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 |
||
118 | |||
119 | $(PROGS): %$(PROGSSUF)$(EXESUF): %$(PROGSSUF)_g$(EXESUF) |
||
120 | $(CP) $< $@ |
||
121 | $(STRIP) $@ |
||
122 | |||
123 | %$(PROGSSUF)_g$(EXESUF): %.o $(FF_DEP_LIBS) |
||
124 | $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS) |
||
125 | |||
126 | OBJDIRS += tools |
||
127 | |||
128 | -include $(wildcard tools/*.d) |
||
129 | |||
130 | VERSION_SH = $(SRC_PATH)/version.sh |
||
131 | GIT_LOG = $(SRC_PATH)/.git/logs/HEAD |
||
132 | |||
133 | .version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak |
||
134 | .version: M=@ |
||
135 | |||
136 | libavutil/ffversion.h .version: |
||
137 | $(M)$(VERSION_SH) $(SRC_PATH) libavutil/ffversion.h $(EXTRA_VERSION) |
||
138 | $(Q)touch .version |
||
139 | |||
140 | # force version.sh to run whenever version might have changed |
||
141 | -include .version |
||
142 | |||
143 | ifdef AVPROGS |
||
144 | install: install-progs install-data |
||
145 | endif |
||
146 | |||
147 | install: install-libs install-headers |
||
148 | |||
149 | install-libs: install-libs-yes |
||
150 | |||
151 | install-progs-yes: |
||
152 | install-progs-$(CONFIG_SHARED): install-libs |
||
153 | |||
154 | install-progs: install-progs-yes $(AVPROGS) |
||
155 | $(Q)mkdir -p "$(BINDIR)" |
||
156 | $(INSTALL) -c -m 755 $(INSTPROGS) "$(BINDIR)" |
||
157 | |||
158 | install-data: $(DATA_FILES) $(EXAMPLES_FILES) |
||
159 | $(Q)mkdir -p "$(DATADIR)/examples" |
||
160 | $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" |
||
161 | $(INSTALL) -m 644 $(EXAMPLES_FILES) "$(DATADIR)/examples" |
||
162 | |||
163 | uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data |
||
164 | |||
165 | uninstall-progs: |
||
166 | $(RM) $(addprefix "$(BINDIR)/", $(ALLAVPROGS)) |
||
167 | |||
168 | uninstall-data: |
||
169 | $(RM) -r "$(DATADIR)" |
||
170 | |||
171 | clean:: |
||
172 | $(RM) $(ALLAVPROGS) $(ALLAVPROGS_G) |
||
173 | $(RM) $(CLEANSUFFIXES) |
||
174 | $(RM) $(CLEANSUFFIXES:%=tools/%) |
||
175 | $(RM) -r coverage-html |
||
176 | $(RM) -rf coverage.info lcov |
||
177 | |||
178 | distclean:: |
||
179 | $(RM) $(DISTCLEANSUFFIXES) |
||
180 | $(RM) config.* .config libavutil/avconfig.h .version avversion.h version.h libavutil/ffversion.h libavcodec/codec_names.h |
||
181 | |||
182 | config: |
||
183 | $(SRC_PATH)/configure $(value FFMPEG_CONFIGURATION) |
||
184 | |||
185 | check: all alltools examples testprogs fate |
||
186 | |||
187 | include $(SRC_PATH)/tests/Makefile |
||
188 | |||
189 | $(sort $(OBJDIRS)): |
||
190 | $(Q)mkdir -p $@ |
||
191 | |||
192 | # Dummy rule to stop make trying to rebuild removed or renamed headers |
||
193 | %.h: |
||
194 | @: |
||
195 | |||
196 | # Disable suffix rules. Most of the builtin rules are suffix rules, |
||
197 | # so this saves some time on slow systems. |
||
198 | .SUFFIXES: |
||
199 | |||
200 | .PHONY: all all-yes alltools check *clean config install* |
||
201 | .PHONY: testprogs uninstall*> |