Commit | Line | Data |
---|---|---|
bde51e6a JR |
1 | include config.mak |
2 | ||
f038cf3c MR |
3 | vpath %.c $(SRC_PATH) |
4 | vpath %.h $(SRC_PATH) | |
5 | vpath %.S $(SRC_PATH) | |
6 | vpath %.asm $(SRC_PATH) | |
7 | vpath %.v $(SRC_PATH) | |
8 | vpath %.texi $(SRC_PATH) | |
bde51e6a | 9 | |
bb524924 MR |
10 | ifndef V |
11 | Q = @ | |
12 | ECHO = printf "$(1)\t%s\n" $(2) | |
13 | BRIEF = CC AS YASM AR LD HOSTCC | |
14 | SILENT = DEPCC YASMDEP RM RANLIB | |
15 | MSG = $@ | |
16 | M = @$(call ECHO,$(TAG),$@); | |
17 | $(foreach VAR,$(BRIEF), \ | |
18 | $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR)))) | |
19 | $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR)))) | |
f038cf3c | 20 | $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_PATH)/%=%)); $(INSTALL)) |
bb524924 MR |
21 | endif |
22 | ||
371584c4 MR |
23 | ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale |
24 | ||
bb524924 MR |
25 | IFLAGS := -I. -I$(SRC_PATH) |
26 | CPPFLAGS := $(IFLAGS) $(CPPFLAGS) | |
27 | CFLAGS += $(ECFLAGS) | |
bc877faf | 28 | CCFLAGS = $(CFLAGS) |
cc73511e | 29 | YASMFLAGS += $(IFLAGS) -I$(SRC_PATH)/libavutil/x86/ -Pconfig.asm |
bb524924 | 30 | HOSTCFLAGS += $(IFLAGS) |
371584c4 | 31 | LDFLAGS := $(ALLFFLIBS:%=-Llib%) $(LDFLAGS) |
bb524924 | 32 | |
bc877faf MR |
33 | define COMPILE |
34 | $($(1)DEP) | |
35 | $($(1)) $(CPPFLAGS) $($(1)FLAGS) $($(1)_DEPFLAGS) -c $($(1)_O) $< | |
36 | endef | |
37 | ||
38 | COMPILE_C = $(call COMPILE,CC) | |
39 | COMPILE_S = $(call COMPILE,AS) | |
40 | ||
bb524924 | 41 | %.o: %.c |
bc877faf | 42 | $(COMPILE_C) |
bb524924 MR |
43 | |
44 | %.o: %.S | |
bc877faf | 45 | $(COMPILE_S) |
bb524924 MR |
46 | |
47 | %.ho: %.h | |
48 | $(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused -c -o $@ -x c $< | |
49 | ||
50 | %.ver: %.v | |
51 | $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@ | |
52 | ||
53 | %.c %.h: TAG = GEN | |
54 | ||
6291d7e4 | 55 | PROGS-$(CONFIG_AVCONV) += avconv |
266463da | 56 | PROGS-$(CONFIG_AVPLAY) += avplay |
9e12f0bf | 57 | PROGS-$(CONFIG_AVPROBE) += avprobe |
4d58e4cb | 58 | PROGS-$(CONFIG_AVSERVER) += avserver |
bde51e6a | 59 | |
583fcb52 | 60 | PROGS := $(PROGS-yes:%=%$(EXESUF)) |
583fcb52 | 61 | OBJS = $(PROGS-yes:%=%.o) cmdutils.o |
3d157bf3 MR |
62 | TESTTOOLS = audiogen videogen rotozoom tiny_psnr base64 |
63 | HOSTPROGS := $(TESTTOOLS:%=tests/%) | |
28e1c979 MR |
64 | TOOLS = qt-faststart trasher |
65 | TOOLS-$(CONFIG_ZLIB) += cws2fws | |
bde51e6a | 66 | |
0fec2cb1 | 67 | BASENAMES = avconv avplay avprobe avserver |
583fcb52 | 68 | ALLPROGS = $(BASENAMES:%=%$(EXESUF)) |
583fcb52 | 69 | ALLMANPAGES = $(BASENAMES:%=%.1) |
bde51e6a | 70 | |
5a0f7131 | 71 | FFLIBS-$(CONFIG_AVDEVICE) += avdevice |
bde51e6a | 72 | FFLIBS-$(CONFIG_AVFILTER) += avfilter |
5a0f7131 | 73 | FFLIBS-$(CONFIG_AVFORMAT) += avformat |
97d5fa38 | 74 | FFLIBS-$(CONFIG_AVCODEC) += avcodec |
bde51e6a | 75 | FFLIBS-$(CONFIG_POSTPROC) += postproc |
5a0f7131 | 76 | FFLIBS-$(CONFIG_SWSCALE) += swscale |
bde51e6a | 77 | |
5a0f7131 | 78 | FFLIBS := avutil |
bde51e6a | 79 | |
8096fdf0 | 80 | DATA_FILES := $(wildcard $(SRC_PATH)/presets/*.avpreset) |
a1a84f69 | 81 | |
9b55e2e7 MR |
82 | SKIPHEADERS = cmdutils_common_opts.h |
83 | ||
57b4a3dd | 84 | include $(SRC_PATH)/common.mak |
bde51e6a | 85 | |
bde51e6a JR |
86 | FF_EXTRALIBS := $(FFEXTRALIBS) |
87 | FF_DEP_LIBS := $(DEP_LIBS) | |
88 | ||
1fef92fd | 89 | all: $(PROGS) |
bde51e6a | 90 | |
28e1c979 MR |
91 | $(TOOLS): %$(EXESUF): %.o |
92 | $(LD) $(LDFLAGS) -o $@ $< $(ELIBS) | |
93 | ||
94 | tools/cws2fws$(EXESUF): ELIBS = -lz | |
95 | ||
86601915 | 96 | config.h: .config |
f038cf3c | 97 | .config: $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) |
9d0b3042 MR |
98 | @-tput bold 2>/dev/null |
99 | @-printf '\nWARNING: $(?F) newer than config.h, rerun configure\n\n' | |
100 | @-tput sgr0 2>/dev/null | |
86601915 | 101 | |
95f2c769 | 102 | SUBDIR_VARS := OBJS FFLIBS CLEANFILES DIRS TESTPROGS EXAMPLES SKIPHEADERS \ |
de4070b5 | 103 | ALTIVEC-OBJS MMX-OBJS NEON-OBJS X86-OBJS YASM-OBJS-FFT YASM-OBJS \ |
28e1c979 | 104 | HOSTPROGS BUILT_HEADERS TESTOBJS ARCH_HEADERS ARMV6-OBJS TOOLS |
bde51e6a JR |
105 | |
106 | define RESET | |
107 | $(1) := | |
108 | $(1)-yes := | |
109 | endef | |
110 | ||
111 | define DOSUBDIR | |
112 | $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V)))) | |
113 | SUBDIR := $(1)/ | |
57b4a3dd | 114 | include $(SRC_PATH)/$(1)/Makefile |
144904e9 | 115 | include $(SRC_PATH)/library.mak |
bde51e6a JR |
116 | endef |
117 | ||
118 | $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D)))) | |
119 | ||
266463da AK |
120 | avplay.o: CFLAGS += $(SDL_CFLAGS) |
121 | avplay$(EXESUF): FF_EXTRALIBS += $(SDL_LIBS) | |
4d58e4cb | 122 | avserver$(EXESUF): LDFLAGS += $(AVSERVERLDFLAGS) |
bde51e6a | 123 | |
6d170962 | 124 | $(PROGS): %$(EXESUF): %.o cmdutils.o $(FF_DEP_LIBS) |
ca903615 | 125 | $(LD) $(LDFLAGS) -o $@ $< cmdutils.o $(FF_EXTRALIBS) |
bde51e6a | 126 | |
5e27ec28 MR |
127 | OBJDIRS += tools |
128 | ||
08df7f86 | 129 | -include $(wildcard tools/*.d) |
bde51e6a | 130 | |
f038cf3c MR |
131 | VERSION_SH = $(SRC_PATH)/version.sh |
132 | GIT_LOG = $(SRC_PATH)/.git/logs/HEAD | |
6a53fffd | 133 | |
faa6f1c3 | 134 | .version: $(wildcard $(GIT_LOG)) $(VERSION_SH) config.mak |
6a53fffd MR |
135 | .version: M=@ |
136 | ||
137 | version.h .version: | |
0853a2b4 | 138 | $(M)$(VERSION_SH) $(SRC_PATH) version.h $(EXTRA_VERSION) |
6a53fffd MR |
139 | $(Q)touch .version |
140 | ||
141 | # force version.sh to run whenever version might have changed | |
142 | -include .version | |
36798f1b | 143 | |
623ffe8c MR |
144 | ifdef PROGS |
145 | install: install-progs install-data | |
146 | endif | |
147 | ||
148 | install: install-libs install-headers | |
d7a72d25 MR |
149 | |
150 | install-libs: install-libs-yes | |
bde51e6a | 151 | |
151c5841 | 152 | install-progs-yes: |
623ffe8c MR |
153 | install-progs-$(CONFIG_SHARED): install-libs |
154 | ||
155 | install-progs: install-progs-yes $(PROGS) | |
63611f31 | 156 | $(Q)mkdir -p "$(BINDIR)" |
fd676deb | 157 | $(INSTALL) -c -m 755 $(PROGS) "$(BINDIR)" |
bde51e6a | 158 | |
a1a84f69 | 159 | install-data: $(DATA_FILES) |
63611f31 | 160 | $(Q)mkdir -p "$(DATADIR)" |
fd676deb | 161 | $(INSTALL) -m 644 $(DATA_FILES) "$(DATADIR)" |
a1a84f69 | 162 | |
f87b03b5 | 163 | uninstall: uninstall-libs uninstall-headers uninstall-progs uninstall-data |
d3cb93b3 RP |
164 | |
165 | uninstall-progs: | |
50e10cbd | 166 | $(RM) $(addprefix "$(BINDIR)/", $(ALLPROGS)) |
d3cb93b3 RP |
167 | |
168 | uninstall-data: | |
50e10cbd | 169 | $(RM) -r "$(DATADIR)" |
d3cb93b3 | 170 | |
698a183e | 171 | clean:: |
e0be794a | 172 | $(RM) $(ALLPROGS) |
50e10cbd | 173 | $(RM) $(CLEANSUFFIXES) |
50e10cbd | 174 | $(RM) $(TOOLS) |
40321376 | 175 | $(RM) $(CLEANSUFFIXES:%=tools/%) |
bde51e6a JR |
176 | |
177 | distclean:: | |
50e10cbd | 178 | $(RM) $(DISTCLEANSUFFIXES) |
59748689 | 179 | $(RM) config.* .version version.h libavutil/avconfig.h |
bde51e6a | 180 | |
9d0b3042 | 181 | config: |
29ba0911 | 182 | $(SRC_PATH)/configure $(value LIBAV_CONFIGURATION) |
0c3b2d65 | 183 | |
57b4a3dd MR |
184 | include $(SRC_PATH)/doc/Makefile |
185 | include $(SRC_PATH)/tests/Makefile | |
d29d9ccc | 186 | |
5e27ec28 MR |
187 | $(sort $(OBJDIRS)): |
188 | $(Q)mkdir -p $@ | |
189 | ||
8d853efe MR |
190 | # Dummy rule to stop make trying to rebuild removed or renamed headers |
191 | %.h: | |
192 | @: | |
193 | ||
194 | # Disable suffix rules. Most of the builtin rules are suffix rules, | |
195 | # so this saves some time on slow systems. | |
196 | .SUFFIXES: | |
197 | ||
db54be09 | 198 | .PHONY: all all-yes alltools *clean config examples install* |
698a183e | 199 | .PHONY: testprogs uninstall* |