Commit | Line | Data |
---|---|---|
bde51e6a JR |
1 | include config.mak |
2 | ||
f038cf3c | 3 | vpath %.c $(SRC_PATH) |
9f57f134 | 4 | vpath %.m $(SRC_PATH) |
f038cf3c MR |
5 | vpath %.h $(SRC_PATH) |
6 | vpath %.S $(SRC_PATH) | |
7 | vpath %.asm $(SRC_PATH) | |
8 | vpath %.v $(SRC_PATH) | |
9 | vpath %.texi $(SRC_PATH) | |
bde51e6a | 10 | |
bb524924 MR |
11 | ifndef V |
12 | Q = @ | |
13 | ECHO = printf "$(1)\t%s\n" $(2) | |
095792f2 | 14 | BRIEF = CC HOSTCC HOSTLD AS YASM AR LD |
c7f25d4c | 15 | SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM STRIP |
bb524924 MR |
16 | MSG = $@ |
17 | M = @$(call ECHO,$(TAG),$@); | |
18 | $(foreach VAR,$(BRIEF), \ | |
19 | $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR)))) | |
20 | $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) | |
f038cf3c | 21 | $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_PATH)/%=%)); $(INSTALL)) |
bb524924 MR |
22 | endif |
23 | ||
c8af852b | 24 | ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil swscale |
371584c4 | 25 | |
bb524924 MR |
26 | IFLAGS := -I. -I$(SRC_PATH) |
27 | CPPFLAGS := $(IFLAGS) $(CPPFLAGS) | |
28 | CFLAGS += $(ECFLAGS) | |
a758c5e2 | 29 | CCFLAGS = $(CPPFLAGS) $(CFLAGS) |
9f57f134 LB |
30 | OBJCFLAGS += $(EOBJCFLAGS) |
31 | OBJCCFLAGS = $(CPPFLAGS) $(CFLAGS) $(OBJCFLAGS) | |
a758c5e2 | 32 | ASFLAGS := $(CPPFLAGS) $(ASFLAGS) |
04581c8c | 33 | YASMFLAGS += $(IFLAGS:%=%/) -Pconfig.asm |
4cc4b33f | 34 | HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS) |
8db73c61 | 35 | LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS) |
bb524924 | 36 | |
bc877faf | 37 | define COMPILE |
a758c5e2 | 38 | $(call $(1)DEP,$(1)) |
23565c26 | 39 | $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $< |
bc877faf MR |
40 | endef |
41 | ||
42 | COMPILE_C = $(call COMPILE,CC) | |
43 | COMPILE_S = $(call COMPILE,AS) | |
9f57f134 | 44 | COMPILE_M = $(call COMPILE,OBJCC) |
ad477710 | 45 | COMPILE_HOSTC = $(call COMPILE,HOSTCC) |
bc877faf | 46 | |
bb524924 | 47 | %.o: %.c |
bc877faf | 48 | $(COMPILE_C) |
bb524924 MR |
49 | |
50 | %.o: %.S | |
bc877faf | 51 | $(COMPILE_S) |
bb524924 | 52 | |
9f57f134 LB |
53 | %.o: %.m |
54 | $(COMPILE_M) | |
55 | ||
5a9fcc7d DB |
56 | %_host.o: %.c |
57 | $(COMPILE_HOSTC) | |
58 | ||
c2626492 MR |
59 | %.i: %.c |
60 | $(CC) $(CCFLAGS) $(CC_E) $< | |
61 | ||
dfd9159f MR |
62 | %.h.c: |
63 | $(Q)echo '#include "$*.h"' >$@ | |
bb524924 MR |
64 | |
65 | %.ver: %.v | |
c1aac39e SM |
66 | $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ | sed -e 's/:/:\ |
67 | /' -e 's/; /;\ | |
68 | /g' > $@ | |
bb524924 MR |
69 | |
70 | %.c %.h: TAG = GEN | |
71 | ||
14abeaa4 DB |
72 | AVPROGS-$(CONFIG_AVCONV) += avconv |
73 | AVPROGS-$(CONFIG_AVPLAY) += avplay | |
74 | AVPROGS-$(CONFIG_AVPROBE) += avprobe | |
bde51e6a | 75 | |
14abeaa4 DB |
76 | AVPROGS := $(AVPROGS-yes:%=%$(EXESUF)) |
77 | PROGS += $(AVPROGS) | |
7671dd7c | 78 | |
894682a9 | 79 | AVBASENAMES = avconv avplay avprobe |
14abeaa4 DB |
80 | ALLAVPROGS = $(AVBASENAMES:%=%$(EXESUF)) |
81 | ||
dc80e2f7 | 82 | $(foreach prog,$(AVBASENAMES),$(eval OBJS-$(prog) += cmdutils.o)) |
14abeaa4 DB |
83 | |
84 | OBJS-avconv += avconv_opt.o avconv_filter.o | |
7671dd7c | 85 | OBJS-avconv-$(HAVE_VDPAU_X11) += avconv_vdpau.o |
a61c2115 | 86 | OBJS-avconv-$(HAVE_DXVA2_LIB) += avconv_dxva2.o |
1839fafa | 87 | OBJS-avconv-$(CONFIG_VDA) += avconv_vda.o |
fb472e1a | 88 | OBJS-avconv-$(CONFIG_LIBMFX) += avconv_qsv.o |
7671dd7c | 89 | |
3d157bf3 | 90 | TESTTOOLS = audiogen videogen rotozoom tiny_psnr base64 |
0d0b81f9 | 91 | HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options |
28e1c979 MR |
92 | TOOLS = qt-faststart trasher |
93 | TOOLS-$(CONFIG_ZLIB) += cws2fws | |
bde51e6a | 94 | |
5e2ba41d JG |
95 | # $(FFLIBS-yes) needs to be in linking order |
96 | FFLIBS-$(CONFIG_AVDEVICE) += avdevice | |
97 | FFLIBS-$(CONFIG_AVFILTER) += avfilter | |
98 | FFLIBS-$(CONFIG_AVFORMAT) += avformat | |
99 | FFLIBS-$(CONFIG_AVCODEC) += avcodec | |
c8af852b | 100 | FFLIBS-$(CONFIG_AVRESAMPLE) += avresample |
5e2ba41d | 101 | FFLIBS-$(CONFIG_SWSCALE) += swscale |
bde51e6a | 102 | |
5a0f7131 | 103 | FFLIBS := avutil |
bde51e6a | 104 | |
8096fdf0 | 105 | DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.avpreset) |
a1a84f69 | 106 | |
90f9a583 | 107 | SKIPHEADERS = cmdutils_common_opts.h compat/w32pthreads.h |
9b55e2e7 | 108 | |
57b4a3dd | 109 | include $(SRC_PATH)/common.mak |
bde51e6a | 110 | |
bde51e6a JR |
111 | FF_EXTRALIBS := $(FFEXTRALIBS) |
112 | FF_DEP_LIBS := $(DEP_LIBS) | |
3ae0e721 | 113 | FF_STATIC_DEP_LIBS := $(STATIC_DEP_LIBS) |
bde51e6a | 114 | |
14abeaa4 | 115 | all: $(AVPROGS) |
bde51e6a | 116 | |
80521c19 | 117 | $(TOOLS): %$(EXESUF): %.o $(EXEOBJS) |
bb0babd7 | 118 | $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $^ $(ELIBS) |
28e1c979 | 119 | |
7baa115a | 120 | tools/cws2fws$(EXESUF): ELIBS = $(ZLIB) |
28e1c979 | 121 | |
86601915 | 122 | config.h: .config |
f038cf3c | 123 | .config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) |
9d0b3042 MR |
124 | @-tput bold 2>/dev/null |
125 | @-printf '\nWARNING: $(?F) newer than config.h, rerun configure\n\n' | |
126 | @-tput sgr0 2>/dev/null | |
86601915 | 127 | |
e7e19b15 | 128 | SUBDIR_VARS := CLEANFILES EXAMPLES FFLIBS HOSTPROGS TESTPROGS TOOLS \ |
121604b0 | 129 | HEADERS ARCH_HEADERS BUILT_HEADERS SKIPHEADERS \ |
8675bcb0 | 130 | ARMV5TE-OBJS ARMV6-OBJS ARMV8-OBJS VFP-OBJS NEON-OBJS \ |
b4dd424d | 131 | ALTIVEC-OBJS MMX-OBJS YASM-OBJS \ |
24d3796d | 132 | OBJS HOSTOBJS TESTOBJS |
bde51e6a JR |
133 | |
134 | define RESET | |
135 | $(1) := | |
136 | $(1)-yes := | |
137 | endef | |
138 | ||
139 | define DOSUBDIR | |
140 | $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) | |
141 | SUBDIR := $(1)/ | |
57b4a3dd | 142 | include $(SRC_PATH)/$(1)/Makefile |
07a873a2 | 143 | -include $(SRC_PATH)/$(1)/$(ARCH)/Makefile |
d45ebd48 | 144 | -include $(SRC_PATH)/$(1)/$(INTRINSICS)/Makefile |
144904e9 | 145 | include $(SRC_PATH)/library.mak |
bde51e6a JR |
146 | endef |
147 | ||
148 | $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) | |
149 | ||
ab81f24a DB |
150 | include $(SRC_PATH)/doc/Makefile |
151 | ||
baac24e6 | 152 | define DOPROG |
14abeaa4 | 153 | OBJS-$(1) += $(1).o $(EXEOBJS) $(OBJS-$(1)-yes) |
07b3790d | 154 | $(1)$(EXESUF): $$(OBJS-$(1)) |
baac24e6 MR |
155 | $$(OBJS-$(1)): CFLAGS += $(CFLAGS-$(1)) |
156 | $(1)$(EXESUF): LDFLAGS += $(LDFLAGS-$(1)) | |
157 | $(1)$(EXESUF): FF_EXTRALIBS += $(LIBS-$(1)) | |
158 | -include $$(OBJS-$(1):.o=.d) | |
159 | endef | |
160 | ||
dc80e2f7 | 161 | $(foreach P,$(PROGS),$(eval $(call DOPROG,$(P:$(EXESUF)=)))) |
bde51e6a | 162 | |
07b3790d | 163 | $(PROGS): %$(EXESUF): %.o $(FF_DEP_LIBS) |
bb0babd7 | 164 | $(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(OBJS-$*) $(FF_EXTRALIBS) |
bde51e6a | 165 | |
5e27ec28 MR |
166 | OBJDIRS += tools |
167 | ||
08df7f86 | 168 | -include $(wildcard tools/*.d) |
bde51e6a | 169 | |
f038cf3c MR |
170 | VERSION_SH = $(SRC_PATH)/version.sh |
171 | GIT_LOG = $(SRC_PATH)/.git/logs/HEAD | |
6a53fffd | 172 | |
faa6f1c3 | 173 | .version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak |
6a53fffd MR |
174 | .version: M=@ |
175 | ||
1316df7a | 176 | avversion.h .version: |
177 | $(M)$(VERSION_SH) $(SRC_PATH) avversion.h $(EXTRA_VERSION) | |
6a53fffd MR |
178 | $(Q)touch .version |
179 | ||
180 | # force version.sh to run whenever version might have changed | |
181 | -include .version | |
36798f1b | 182 | |
14abeaa4 | 183 | ifdef AVPROGS |
623ffe8c MR |
184 | install: install-progs install-data |
185 | endif | |
186 | ||
187 | install: install-libs install-headers | |
d7a72d25 MR |
188 | |
189 | install-libs: install-libs-yes | |
bde51e6a | 190 | |
151c5841 | 191 | install-progs-yes: |
623ffe8c MR |
192 | install-progs-$(CONFIG_SHARED): install-libs |
193 | ||
14abeaa4 | 194 | install-progs: install-progs-yes $(AVPROGS) |
63611f31 | 195 | $(Q)mkdir -p "$(BINDIR)" |
14abeaa4 | 196 | $(INSTALL) -c -m 755 $(AVPROGS) "$(BINDIR)" |
bde51e6a | 197 | |
a1a84f69 | 198 | install-data: $(DATA_FILES) |
63611f31 | 199 | $(Q)mkdir -p "$(DATADIR)" |
fd676deb | 200 | $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" |
a1a84f69 | 201 | |
f87b03b5 | 202 | uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data |
d3cb93b3 RP |
203 | |
204 | uninstall-progs: | |
14abeaa4 | 205 | $(RM) $(addprefix "$(BINDIR)/", $(ALLAVPROGS)) |
d3cb93b3 RP |
206 | |
207 | uninstall-data: | |
50e10cbd | 208 | $(RM) -r "$(DATADIR)" |
d3cb93b3 | 209 | |
698a183e | 210 | clean:: |
14abeaa4 | 211 | $(RM) $(ALLAVPROGS) |
50e10cbd | 212 | $(RM) $(CLEANSUFFIXES) |
40321376 | 213 | $(RM) $(CLEANSUFFIXES:%=tools/%) |
a862c7d3 | 214 | $(RM) -rf coverage.info lcov |
bde51e6a JR |
215 | |
216 | distclean:: | |
50e10cbd | 217 | $(RM) $(DISTCLEANSUFFIXES) |
1316df7a | 218 | $(RM) config.* .config libavutil/avconfig.h .version avversion.h |
bde51e6a | 219 | |
9d0b3042 | 220 | config: |
29ba0911 | 221 | $(SRC_PATH)/configure $(value LIBAV_CONFIGURATION) |
0c3b2d65 | 222 | |
4982e1dd DB |
223 | check: all alltools checkheaders examples testprogs fate |
224 | ||
57b4a3dd | 225 | include $(SRC_PATH)/tests/Makefile |
d29d9ccc | 226 | |
5e27ec28 MR |
227 | $(sort $(OBJDIRS)): |
228 | $(Q)mkdir -p $@ | |
229 | ||
8d853efe MR |
230 | # Dummy rule to stop make trying to rebuild removed or renamed headers |
231 | %.h: | |
232 | @: | |
233 | ||
234 | # Disable suffix rules. Most of the builtin rules are suffix rules, | |
235 | # so this saves some time on slow systems. | |
236 | .SUFFIXES: | |
237 | ||
4982e1dd | 238 | .PHONY: all all-yes alltools check *clean config examples install* |
698a183e | 239 | .PHONY: testprogs uninstall* |