mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-08-02 01:09:59 +02:00
![Måns Rullgård](/assets/img/avatar_default.png)
Force version.sh to run whenever the version might have changed, regardless of what is being built. This is done by attaching the dependencies to a dummy file (.version) which is included from the makefile. As make will always attempt to rebuild any included files before considering other rules, this ensures that the real version.h is (re-)created before it is required by any source file. Originally committed as revision 22420 to svn://svn.ffmpeg.org/ffmpeg/trunk
110 lines
3.0 KiB
Makefile
110 lines
3.0 KiB
Makefile
#
|
|
# common bits used by all libraries
|
|
#
|
|
|
|
# first so "all" becomes default target
|
|
all: all-yes
|
|
|
|
ifndef SUBDIR
|
|
vpath %.c $(SRC_DIR)
|
|
vpath %.h $(SRC_DIR)
|
|
vpath %.S $(SRC_DIR)
|
|
vpath %.asm $(SRC_DIR)
|
|
vpath %.v $(SRC_DIR)
|
|
|
|
ifeq ($(SRC_DIR),$(SRC_PATH_BARE))
|
|
BUILD_ROOT_REL = .
|
|
else
|
|
BUILD_ROOT_REL = ..
|
|
endif
|
|
|
|
ifndef V
|
|
Q = @
|
|
ECHO = printf "$(1)\t%s\n" $(2)
|
|
BRIEF = CC AS YASM AR LD HOSTCC RANLIB STRIP CP
|
|
SILENT = DEPCC YASMDEP RM
|
|
MSG = $@
|
|
M = @$(call ECHO,$(MSG),$@);
|
|
$(foreach VAR,$(BRIEF), \
|
|
$(eval $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
|
|
$(foreach VAR,$(SILENT),$(eval $(VAR) = @$($(VAR))))
|
|
$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
|
|
endif
|
|
|
|
ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale
|
|
|
|
CPPFLAGS := -I$(BUILD_ROOT_REL) -I$(SRC_PATH) $(CPPFLAGS)
|
|
CFLAGS += $(ECFLAGS)
|
|
|
|
%.o: %.c
|
|
$(CCDEP)
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(CC_DEPFLAGS) -c $(CC_O) $<
|
|
|
|
%.o: %.S
|
|
$(ASDEP)
|
|
$(AS) $(CPPFLAGS) $(ASFLAGS) $(AS_DEPFLAGS) -c -o $@ $<
|
|
|
|
%.ho: %.h
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -Wno-unused -c -o $@ -x c $<
|
|
|
|
%$(EXESUF): %.c
|
|
|
|
%.ver: %.v
|
|
$(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
|
|
|
|
%.c %.h: MSG = GEN
|
|
|
|
install: install-libs install-headers
|
|
install-libs: install-libs-yes
|
|
|
|
uninstall: uninstall-libs uninstall-headers
|
|
|
|
.PHONY: all depend dep *clean install* uninstall* examples testprogs
|
|
|
|
# Disable suffix rules. Most of the builtin rules are suffix rules,
|
|
# so this saves some time on slow systems.
|
|
.SUFFIXES:
|
|
|
|
# Do not delete intermediate files from chains of implicit rules
|
|
.SECONDARY:
|
|
endif
|
|
|
|
OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes)
|
|
|
|
CFLAGS += $(CFLAGS-yes)
|
|
OBJS += $(OBJS-yes)
|
|
FFLIBS := $(FFLIBS-yes) $(FFLIBS)
|
|
TESTPROGS += $(TESTPROGS-yes)
|
|
|
|
FFEXTRALIBS := $(addprefix -l,$(addsuffix $(BUILDSUF),$(FFLIBS))) $(EXTRALIBS)
|
|
FFLDFLAGS := $(addprefix -L$(BUILD_ROOT)/lib,$(ALLFFLIBS)) $(LDFLAGS)
|
|
|
|
EXAMPLES := $(addprefix $(SUBDIR),$(addsuffix -example$(EXESUF),$(EXAMPLES)))
|
|
OBJS := $(addprefix $(SUBDIR),$(sort $(OBJS)))
|
|
TESTOBJS := $(addprefix $(SUBDIR),$(TESTOBJS))
|
|
TESTPROGS := $(addprefix $(SUBDIR),$(addsuffix -test$(EXESUF),$(TESTPROGS)))
|
|
HOSTOBJS := $(addprefix $(SUBDIR),$(addsuffix .o,$(HOSTPROGS)))
|
|
HOSTPROGS := $(addprefix $(SUBDIR),$(addsuffix $(HOSTEXESUF),$(HOSTPROGS)))
|
|
|
|
DEP_LIBS := $(foreach NAME,$(FFLIBS),$(BUILD_ROOT_REL)/lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME))
|
|
|
|
ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
|
|
SKIPHEADERS += $(addprefix $(ARCH)/,$(ARCH_HEADERS))
|
|
SKIPHEADERS := $(addprefix $(SUBDIR),$(SKIPHEADERS-) $(SKIPHEADERS))
|
|
checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho))
|
|
|
|
$(HOSTOBJS): %.o: %.c
|
|
$(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
|
|
|
|
$(HOSTPROGS): %$(HOSTEXESUF): %.o
|
|
$(HOSTCC) $(HOSTLDFLAGS) -o $@ $< $(HOSTLIBS)
|
|
|
|
DEPS := $(OBJS:.o=.d)
|
|
depend dep: $(DEPS)
|
|
|
|
CLEANSUFFIXES = *.d *.o *~ *.ho *.map *.ver
|
|
DISTCLEANSUFFIXES = *.pc
|
|
LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp
|
|
|
|
-include $(wildcard $(DEPS))
|