/
githubmirror
/
FFmpeg
Обзор
Документация
Войти
/
githubmirror
/
FFmpeg
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ffbuild/library.mak
158 строк
6 KB
Kacper Michajłow
ffbuild: show install destinations in the INSTALL build output
10 авг 2026, 20:45
10 авг 2026, 20:45
33d5616
Код
Авторство
О чём код?
include $(SRC_PATH)/ffbuild/common.mak ifeq (,$(filter %clean config,$(MAKECMDGOALS))) -include $(SUBDIR)lib$(NAME).version endif LIBVERSION := $(lib$(NAME)_VERSION) LIBMAJOR := $(lib$(NAME)_VERSION_MAJOR) LIBMINOR := $(lib$(NAME)_VERSION_MINOR) INCINSTDIR := $(INCDIR)/lib$(NAME) INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%) all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) $(SUBDIR)lib$(FULLNAME).pc all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)lib$(FULLNAME).pc # Make <4.0 does not support the built-in file function; # versions that do support it should use it, as it's # faster and isn't bound by command line length limits. ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION)))) HAVE_BUILTIN_FILE := yes else HAVE_BUILTIN_FILE := no endif LIBOBJS := $(OBJS) $(SHLIBOBJS) $(STLIBOBJS) $(SUBDIR)%.h.o $(TESTOBJS) $(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i): CPPFLAGS += -DHAVE_AV_CONFIG_H ifdef CONFIG_SHARED # In case both shared libs and static libs are enabled, it can happen # that a user might want to link e.g. libavformat statically, but # libavcodec and the other libs dynamically. In this case # libavformat won't be able to access libavcodec's internal symbols, # so that they have to be duplicated into the archive just like # for purely shared builds. # Test programs are always statically linked against their library # to be able to access their library's internals, even with shared builds. # Yet linking against dependent libraries still uses dynamic linking. # This means that we are in the scenario described above. # In case only static libs are used, the linker will only use # one of these copies; this depends on the duplicated object files # containing exactly the same symbols. OBJS += $(SHLIBOBJS) endif $(SUBDIR)$(LIBNAME): $(OBJS) $(STLIBOBJS) $(RM) $@ ifeq ($(RESPONSE_FILES),yes) ifeq ($(HAVE_BUILTIN_FILE),yes) $(file >$@.objs,$^) else $(Q)echo $^ > $@.objs endif $(AR) $(ARFLAGS) $(AR_O) @$@.objs else $(AR) $(ARFLAGS) $(AR_O) $^ endif $(RANLIB) $@ -$(RM) $@.objs 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 $(TOOLS): THISLIB = $(FULLNAME:%=$(LD_LIB)) $(TESTPROGS) $(DEVPROGS): THISLIB = $(SUBDIR)$(LIBNAME) $(NAME)LINK_EXE_ARGS = $(LDFLAGS) $(LDEXEFLAGS) $(NAME)LINK_SO_ARGS = $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $(NAME)LINK_EXTRA = $(FFEXTRALIBS) $(DEVPROGS) $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o $$(call LINK,$$(call $(NAME)LINK_EXE_ARGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $$(call $(NAME)LINK_EXTRA) $$(EXTRALIBS-$$(*F)) $$(ELIBS)) $(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h $(SUBDIR)version_major.h | $(SUBDIR) $$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$^ > $$@ $(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h ffbuild/config.sh | $(SUBDIR) $$(M) $$(SRC_PATH)/ffbuild/pkgconfig_generate.sh $(NAME) "$(DESC)" $(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS) $$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@ $(SUBDIR)$(SLIBNAME): $(SUBDIR)$(SLIBNAME_WITH_MAJOR) $(Q)cd ./$(SUBDIR) && $(LN_S) $(SLIBNAME_WITH_MAJOR) $(SLIBNAME) $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SHLIBOBJS) $(SUBDIR)lib$(NAME).ver ifeq ($(RESPONSE_FILES),yes) ifeq ($(HAVE_BUILTIN_FILE),yes) $$(file >$$@.objs,$$(filter %.o,$$^)) else $(Q)echo $$(filter %.o,$$^) > $$@.objs endif endif $(Q)$(SLIB_CREATE_DEF_CMD) ifeq ($(RESPONSE_FILES),yes) $$(call LINK,$$(call $(NAME)LINK_SO_ARGS) $$(LD_O) @$$@.objs $$(call $(NAME)LINK_EXTRA)) else $$(call LINK,$$(call $(NAME)LINK_SO_ARGS) $$(LD_O) $$(filter %.o,$$^) $$(call $(NAME)LINK_EXTRA)) endif $(Q)$(SLIB_EXTRA_CMD) -$(RM) $$@.objs ifdef SUBDIR $(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS) endif clean:: $(RM) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \ $(CLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) $(CLEANSUFFIXES:%=$(SUBDIR)tests/%) install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME) $(Q)mkdir -p "$(SHLIBDIR)" $$(call INSTALL_FILES,-m 755,$$<,$(SHLIBDIR)/$(SLIB_INSTALL_NAME)) ifneq ($(STRIPTYPE),nostrip) $$(STRIP) "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)" endif $(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd "$(SHLIBDIR)" && $(LN_S) $(SLIB_INSTALL_NAME) $(F));) $(if $(SLIB_INSTALL_EXTRA_SHLIB),$$(call INSTALL_FILES,-m 644,$(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%),$(SHLIBDIR))) $(if $(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p "$(LIBDIR)") $(if $(SLIB_INSTALL_EXTRA_LIB),$$(call INSTALL_FILES,-m 644,$(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%),$(LIBDIR))) install-lib$(NAME)-static: $(SUBDIR)$(LIBNAME) $(Q)mkdir -p "$(LIBDIR)" $$(call INSTALL_FILES,-m 644,$$<,$(LIBDIR)) $(LIB_INSTALL_EXTRA_CMD) install-lib$(NAME)-headers: $(addprefix $(SUBDIR),$(HEADERS) $(BUILT_HEADERS)) $(Q)mkdir -p "$(INCINSTDIR)" $$(call INSTALL_FILES,-m 644,$$^,$(INCINSTDIR)) install-lib$(NAME)-pkgconfig: $(SUBDIR)lib$(FULLNAME).pc $(Q)mkdir -p "$(PKGCONFIGDIR)" $$(call INSTALL_FILES,-m 644,$$^,$(PKGCONFIGDIR)) uninstall-libs:: -$(RM) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR)" \ "$(SHLIBDIR)/$(SLIBNAME)" \ "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)" -$(RM) $(SLIB_INSTALL_EXTRA_SHLIB:%="$(SHLIBDIR)/%") -$(RM) $(SLIB_INSTALL_EXTRA_LIB:%="$(LIBDIR)/%") -$(RM) "$(LIBDIR)/$(LIBNAME)" uninstall-headers:: $(RM) $(addprefix "$(INCINSTDIR)/",$(HEADERS) $(BUILT_HEADERS)) -rmdir "$(INCINSTDIR)" uninstall-pkgconfig:: $(RM) "$(PKGCONFIGDIR)/lib$(FULLNAME).pc" endef $(eval $(RULES)) $(TOOLS): $(DEP_LIBS) $(SUBDIR)$($(CONFIG_SHARED:yes=S)LIBNAME) $(TESTPROGS) $(DEVPROGS): $(DEP_LIBS) $(SUBDIR)$(LIBNAME) testprogs: $(TESTPROGS)