1include $(SRC_PATH)/common.mak 2 3LIBVERSION := $(lib$(NAME)_VERSION) 4LIBMAJOR := $(lib$(NAME)_VERSION_MAJOR) 5LIBMINOR := $(lib$(NAME)_VERSION_MINOR) 6INCINSTDIR := $(INCDIR)/lib$(NAME) 7 8INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%) 9 10all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) 11all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) 12 13$(SUBDIR)%-test.o: $(SUBDIR)%-test.c 14 $(COMPILE_C) 15 16$(SUBDIR)%-test.o: $(SUBDIR)%.c 17 $(COMPILE_C) 18 19$(SUBDIR)%-test.i: $(SUBDIR)%-test.c 20 $(CC) $(CCFLAGS) $(CC_E) $< 21 22$(SUBDIR)%-test.i: $(SUBDIR)%.c 23 $(CC) $(CCFLAGS) $(CC_E) $< 24 25$(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm 26 $(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d) 27 $(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $< 28 -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) 29 30LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS) 31$(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i): CPPFLAGS += -DHAVE_AV_CONFIG_H 32$(TESTOBJS) $(TESTOBJS:.o=.i): CPPFLAGS += -DTEST 33 34$(SUBDIR)$(LIBNAME): $(OBJS) 35 $(RM) $@ 36 $(AR) $(ARFLAGS) $(AR_O) $^ 37 $(RANLIB) $@ 38 39install-headers: install-lib$(NAME)-headers install-lib$(NAME)-pkgconfig 40 41install-libs-$(CONFIG_STATIC): install-lib$(NAME)-static 42install-libs-$(CONFIG_SHARED): install-lib$(NAME)-shared 43 44define RULES 45$(TOOLS): THISLIB = $(FULLNAME:%=$(LD_LIB)) 46$(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME) 47 48$(TESTPROGS) $(TOOLS): %$(EXESUF): %.o $(EXEOBJS) 49 $$(LD) $(LDFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(ELIBS) 50 51$(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) 52 $(Q)cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME) 53 54$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver 55 $(SLIB_CREATE_DEF_CMD) 56 $$(LD) $(SHFLAGS) $(LDFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS) 57 $(SLIB_EXTRA_CMD) 58 59ifdef SUBDIR 60$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS) 61endif 62 63clean:: 64 $(RM) $(addprefix $(SUBDIR),*-test$(EXESUF) $(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \ 65 $(CLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) 66 67distclean:: clean 68 $(RM) $(DISTCLEANSUFFIXES:%=$(SUBDIR)%) $(DISTCLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) 69 70install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME) 71 $(Q)mkdir -p "$(SHLIBDIR)" 72 $$(INSTALL) -m 755 $$< "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)" 73 $$(STRIP) "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)" 74 $(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd "$(SHLIBDIR)" && $(LN_S) $(SLIB_INSTALL_NAME) $(F));) 75 $(if $(SLIB_INSTALL_EXTRA_SHLIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%) "$(SHLIBDIR)") 76 $(if $(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p "$(LIBDIR)") 77 $(if $(SLIB_INSTALL_EXTRA_LIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%) "$(LIBDIR)") 78 79install-lib$(NAME)-static: $(SUBDIR)$(LIBNAME) 80 $(Q)mkdir -p "$(LIBDIR)" 81 $$(INSTALL) -m 644 $$< "$(LIBDIR)" 82 $(LIB_INSTALL_EXTRA_CMD) 83 84install-lib$(NAME)-headers: $(addprefix $(SUBDIR),$(HEADERS) $(BUILT_HEADERS)) 85 $(Q)mkdir -p "$(INCINSTDIR)" 86 $$(INSTALL) -m 644 $$^ "$(INCINSTDIR)" 87 88install-lib$(NAME)-pkgconfig: $(SUBDIR)lib$(FULLNAME).pc 89 $(Q)mkdir -p "$(LIBDIR)/pkgconfig" 90 $$(INSTALL) -m 644 $$^ "$(LIBDIR)/pkgconfig" 91 92uninstall-libs:: 93 -$(RM) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR)" \ 94 "$(SHLIBDIR)/$(SLIBNAME)" \ 95 "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)" 96 -$(RM) $(SLIB_INSTALL_EXTRA_SHLIB:%="$(SHLIBDIR)/%") 97 -$(RM) $(SLIB_INSTALL_EXTRA_LIB:%="$(LIBDIR)/%") 98 -$(RM) "$(LIBDIR)/$(LIBNAME)" 99 100uninstall-headers:: 101 $(RM) $(addprefix "$(INCINSTDIR)/",$(HEADERS) $(BUILT_HEADERS)) 102 $(RM) "$(LIBDIR)/pkgconfig/lib$(FULLNAME).pc" 103 -rmdir "$(INCINSTDIR)" 104endef 105 106$(eval $(RULES)) 107 108$(TOOLS): $(DEP_LIBS) $(SUBDIR)$($(CONFIG_SHARED:yes=S)LIBNAME) 109$(TESTPROGS): $(DEP_LIBS) $(SUBDIR)$(LIBNAME) 110 111testprogs: $(TESTPROGS) 112