mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
a854bcdbec
Test programs may be named either %.c or %-test.c. In some cases (ie. fft), both files exist and make has to choose which rule to use. Up to gnu make 3.81, rules were applied in definition order, in this case favouring the generic %.c rule from common.mak. gnu make 3.82 uses a shortest stem first order, applying definition order for same length stems. In this case, %-test.c must come first in order for make to pick the proper source file. Originally committed as revision 25918 to svn://svn.ffmpeg.org/ffmpeg/trunk
102 lines
3.1 KiB
Makefile
102 lines
3.1 KiB
Makefile
SRC_DIR := $(SRC_PATH_BARE)/lib$(NAME)
|
|
|
|
include $(SUBDIR)../common.mak
|
|
|
|
LIBVERSION := $(lib$(NAME)_VERSION)
|
|
LIBMAJOR := $(lib$(NAME)_VERSION_MAJOR)
|
|
INCINSTDIR := $(INCDIR)/lib$(NAME)
|
|
THIS_LIB := $(SUBDIR)$($(CONFIG_SHARED:yes=S)LIBNAME)
|
|
|
|
all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME)
|
|
all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME)
|
|
|
|
$(SUBDIR)%-test.o: $(SUBDIR)%-test.c
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -DTEST -c $(CC_O) $^
|
|
|
|
$(SUBDIR)%-test.o: $(SUBDIR)%.c
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -DTEST -c $(CC_O) $^
|
|
|
|
$(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm
|
|
$(YASMDEP) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
|
|
$(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $<
|
|
|
|
$(OBJS) $(SUBDIR)%.ho $(SUBDIR)%-test.o $(TESTOBJS): CPPFLAGS += -DHAVE_AV_CONFIG_H
|
|
|
|
$(SUBDIR)$(LIBNAME): $(OBJS)
|
|
$(RM) $@
|
|
$(AR) rc $@ $^ $(EXTRAOBJS)
|
|
$(RANLIB) $@
|
|
|
|
install-headers: install-lib$(NAME)-headers install-lib$(NAME)-pkgconfig
|
|
|
|
install-libs-$(CONFIG_STATIC): install-lib$(NAME)-static
|
|
install-libs-$(CONFIG_SHARED): install-lib$(NAME)-shared
|
|
|
|
define RULES
|
|
$(SUBDIR)%$(EXESUF): $(SUBDIR)%.o
|
|
$$(LD) $(FFLDFLAGS) -o $$@ $$^ -l$(FULLNAME) $(FFEXTRALIBS) $$(ELIBS)
|
|
|
|
$(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR)
|
|
$(Q)cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME)
|
|
|
|
$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SUBDIR)lib$(NAME).ver
|
|
$(SLIB_CREATE_DEF_CMD)
|
|
$$(LD) $(SHFLAGS) $(FFLDFLAGS) -o $$@ $$(filter %.o,$$^) $(FFEXTRALIBS) $(EXTRAOBJS)
|
|
$(SLIB_EXTRA_CMD)
|
|
|
|
ifdef SUBDIR
|
|
$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS)
|
|
endif
|
|
|
|
clean::
|
|
$(RM) $(addprefix $(SUBDIR),*-example$(EXESUF) *-test$(EXESUF) $(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \
|
|
$(addprefix $(SUBDIR), $(foreach suffix,$(CLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS)))) \
|
|
$(HOSTOBJS) $(HOSTPROGS)
|
|
|
|
distclean:: clean
|
|
$(RM) $(addprefix $(SUBDIR),$(DISTCLEANSUFFIXES)) \
|
|
$(addprefix $(SUBDIR), $(foreach suffix,$(DISTCLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS))))
|
|
|
|
install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME)
|
|
$(Q)mkdir -p "$(SHLIBDIR)"
|
|
$$(INSTALL) -m 755 $$< "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)"
|
|
$$(STRIP) "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)"
|
|
$(Q)cd "$(SHLIBDIR)" && \
|
|
$(LN_S) $(SLIBNAME_WITH_VERSION) $(SLIBNAME_WITH_MAJOR)
|
|
$(Q)cd "$(SHLIBDIR)" && \
|
|
$(LN_S) $(SLIBNAME_WITH_VERSION) $(SLIBNAME)
|
|
$(SLIB_INSTALL_EXTRA_CMD)
|
|
|
|
install-lib$(NAME)-static: $(SUBDIR)$(LIBNAME)
|
|
$(Q)mkdir -p "$(LIBDIR)"
|
|
$$(INSTALL) -m 644 $$< "$(LIBDIR)"
|
|
$(LIB_INSTALL_EXTRA_CMD)
|
|
|
|
install-lib$(NAME)-headers: $(addprefix $(SUBDIR),$(HEADERS) $(BUILT_HEADERS))
|
|
$(Q)mkdir -p "$(INCINSTDIR)"
|
|
$$(INSTALL) -m 644 $$^ "$(INCINSTDIR)"
|
|
|
|
install-lib$(NAME)-pkgconfig: $(SUBDIR)lib$(NAME).pc
|
|
$(Q)mkdir -p "$(LIBDIR)/pkgconfig"
|
|
$$(INSTALL) -m 644 $$^ "$(LIBDIR)/pkgconfig"
|
|
|
|
uninstall-libs::
|
|
-$(RM) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR)" \
|
|
"$(SHLIBDIR)/$(SLIBNAME)" \
|
|
"$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)"
|
|
-$(SLIB_UNINSTALL_EXTRA_CMD)
|
|
-$(RM) "$(LIBDIR)/$(LIBNAME)"
|
|
|
|
uninstall-headers::
|
|
$(RM) $(addprefix "$(INCINSTDIR)/",$(HEADERS))
|
|
$(RM) "$(LIBDIR)/pkgconfig/lib$(NAME).pc"
|
|
-rmdir "$(INCDIR)"
|
|
endef
|
|
|
|
$(eval $(RULES))
|
|
|
|
$(EXAMPLES) $(TESTPROGS): $(THIS_LIB) $(DEP_LIBS)
|
|
|
|
examples: $(EXAMPLES)
|
|
testprogs: $(TESTPROGS)
|