annotate ffmpeg/common.mak @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 #
yading@10 2 # common bits used by all libraries
yading@10 3 #
yading@10 4
yading@10 5 # first so "all" becomes default target
yading@10 6 all: all-yes
yading@10 7
yading@10 8 ifndef SUBDIR
yading@10 9
yading@10 10 ifndef V
yading@10 11 Q = @
yading@10 12 ECHO = printf "$(1)\t%s\n" $(2)
yading@10 13 BRIEF = CC CXX HOSTCC HOSTLD AS YASM AR LD STRIP CP
yading@10 14 SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM
yading@10 15
yading@10 16 MSG = $@
yading@10 17 M = @$(call ECHO,$(TAG),$@);
yading@10 18 $(foreach VAR,$(BRIEF), \
yading@10 19 $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
yading@10 20 $(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
yading@10 21 $(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
yading@10 22 endif
yading@10 23
yading@10 24 ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample
yading@10 25
yading@10 26 # NASM requires -I path terminated with /
yading@10 27 IFLAGS := -I. -I$(SRC_PATH)/
yading@10 28 CPPFLAGS := $(IFLAGS) $(CPPFLAGS)
yading@10 29 CFLAGS += $(ECFLAGS)
yading@10 30 CCFLAGS = $(CPPFLAGS) $(CFLAGS)
yading@10 31 ASFLAGS := $(CPPFLAGS) $(ASFLAGS)
yading@10 32 CXXFLAGS += $(CPPFLAGS) $(CFLAGS)
yading@10 33 YASMFLAGS += $(IFLAGS:%=%/) -Pconfig.asm
yading@10 34
yading@10 35 HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS)
yading@10 36 LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS)
yading@10 37
yading@10 38 define COMPILE
yading@10 39 $(call $(1)DEP,$(1))
yading@10 40 $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $<
yading@10 41 endef
yading@10 42
yading@10 43 COMPILE_C = $(call COMPILE,CC)
yading@10 44 COMPILE_CXX = $(call COMPILE,CXX)
yading@10 45 COMPILE_S = $(call COMPILE,AS)
yading@10 46
yading@10 47 %.o: %.c
yading@10 48 $(COMPILE_C)
yading@10 49
yading@10 50 %.o: %.cpp
yading@10 51 $(COMPILE_CXX)
yading@10 52
yading@10 53 %.s: %.c
yading@10 54 $(CC) $(CPPFLAGS) $(CFLAGS) -S -o $@ $<
yading@10 55
yading@10 56 %.o: %.S
yading@10 57 $(COMPILE_S)
yading@10 58
yading@10 59 %.i: %.c
yading@10 60 $(CC) $(CCFLAGS) $(CC_E) $<
yading@10 61
yading@10 62 %.h.c:
yading@10 63 $(Q)echo '#include "$*.h"' >$@
yading@10 64
yading@10 65 %.ver: %.v
yading@10 66 $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
yading@10 67
yading@10 68 %.c %.h: TAG = GEN
yading@10 69
yading@10 70 # Dummy rule to stop make trying to rebuild removed or renamed headers
yading@10 71 %.h:
yading@10 72 @:
yading@10 73
yading@10 74 # Disable suffix rules. Most of the builtin rules are suffix rules,
yading@10 75 # so this saves some time on slow systems.
yading@10 76 .SUFFIXES:
yading@10 77
yading@10 78 # Do not delete intermediate files from chains of implicit rules
yading@10 79 $(OBJS):
yading@10 80 endif
yading@10 81
yading@10 82 include $(SRC_PATH)/arch.mak
yading@10 83
yading@10 84 OBJS += $(OBJS-yes)
yading@10 85 FFLIBS := $(FFLIBS-yes) $(FFLIBS)
yading@10 86 TESTPROGS += $(TESTPROGS-yes)
yading@10 87
yading@10 88 LDLIBS = $(FFLIBS:%=%$(BUILDSUF))
yading@10 89 FFEXTRALIBS := $(LDLIBS:%=$(LD_LIB)) $(EXTRALIBS)
yading@10 90
yading@10 91 EXAMPLES := $(EXAMPLES:%=$(SUBDIR)%-example$(EXESUF))
yading@10 92 OBJS := $(sort $(OBJS:%=$(SUBDIR)%))
yading@10 93 TESTOBJS := $(TESTOBJS:%=$(SUBDIR)%) $(TESTPROGS:%=$(SUBDIR)%-test.o)
yading@10 94 TESTPROGS := $(TESTPROGS:%=$(SUBDIR)%-test$(EXESUF))
yading@10 95 HOSTOBJS := $(HOSTPROGS:%=$(SUBDIR)%.o)
yading@10 96 HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF))
yading@10 97 TOOLS += $(TOOLS-yes)
yading@10 98 TOOLOBJS := $(TOOLS:%=tools/%.o)
yading@10 99 TOOLS := $(TOOLS:%=tools/%$(EXESUF))
yading@10 100 HEADERS += $(HEADERS-yes)
yading@10 101
yading@10 102 DEP_LIBS := $(foreach NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
yading@10 103
yading@10 104 SRC_DIR := $(SRC_PATH)/lib$(NAME)
yading@10 105 ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
yading@10 106 SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
yading@10 107 SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
yading@10 108 HOBJS = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o))
yading@10 109 checkheaders: $(HOBJS)
yading@10 110 .SECONDARY: $(HOBJS:.o=.c)
yading@10 111
yading@10 112 alltools: $(TOOLS)
yading@10 113
yading@10 114 $(HOSTOBJS): %.o: %.c
yading@10 115 $(call COMPILE,HOSTCC)
yading@10 116
yading@10 117 $(HOSTPROGS): %$(HOSTEXESUF): %.o
yading@10 118 $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $< $(HOSTLIBS)
yading@10 119
yading@10 120 $(OBJS): | $(sort $(dir $(OBJS)))
yading@10 121 $(HOBJS): | $(sort $(dir $(HOBJS)))
yading@10 122 $(HOSTOBJS): | $(sort $(dir $(HOSTOBJS)))
yading@10 123 $(TESTOBJS): | $(sort $(dir $(TESTOBJS)))
yading@10 124 $(TOOLOBJS): | tools
yading@10 125
yading@10 126 OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(TESTOBJS))
yading@10 127
yading@10 128 CLEANSUFFIXES = *.d *.o *~ *.h.c *.map *.ver *.ho *.gcno *.gcda
yading@10 129 DISTCLEANSUFFIXES = *.pc
yading@10 130 LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
yading@10 131
yading@10 132 define RULES
yading@10 133 clean::
yading@10 134 $(RM) $(OBJS) $(OBJS:.o=.d)
yading@10 135 $(RM) $(HOSTPROGS)
yading@10 136 $(RM) $(TOOLS)
yading@10 137 endef
yading@10 138
yading@10 139 $(eval $(RULES))
yading@10 140
yading@10 141 -include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d) $(HOBJS:.o=.d))