Merge commit '857e26b655a769e5a56bada1a0d9adb44cc176b7'
authorJames Almer <jamrial@gmail.com>
Mon, 6 Nov 2017 20:55:26 +0000 (17:55 -0300)
committerJames Almer <jamrial@gmail.com>
Mon, 6 Nov 2017 20:57:53 +0000 (17:57 -0300)
* commit '857e26b655a769e5a56bada1a0d9adb44cc176b7':
  build: Add an option for passing linker flags to the shared library build

See e34a3468f294f21878875e0f6ad5564cd52af70e.

--extra-ldlibflags is left in place for compatibility reasons.

Merged-by: James Almer <jamrial@gmail.com>
1  2 
configure
ffbuild/library.mak

diff --cc configure
+++ b/configure
@@@ -3604,9 -2807,9 +3604,14 @@@ for opt d
          --extra-ldexeflags=*)
              add_ldexeflags $optval
          ;;
-             add_ldlibflags $optval
+         --extra-ldsoflags=*)
+             add_ldsoflags $optval
+         ;;
 +        --extra-ldlibflags=*)
++            warn "The --extra-ldlibflags option is only provided for compatibility and will be\n"\
++                 "removed in the future. Use --extra-ldsoflags instead."
++            add_ldsoflags $optval
 +        ;;
          --extra-libs=*)
              add_extralibs $optval
          ;;
@@@ -6360,9 -4957,8 +6365,8 @@@ EO
  
  # add some linker flags
  check_ldflags -Wl,--warn-common
 -check_ldflags -Wl,-rpath-link=libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
 +check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
- enabled rpath && add_ldexeflags -Wl,-rpath,$libdir
- enabled rpath && add_ldlibflags -Wl,-rpath,$libdir
+ enabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir
  test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
  
  # add some strip flags
@@@ -6949,18 -5416,12 +6953,18 @@@ X86ASM_O=$X86ASM_
  LD_LIB=$LD_LIB
  LD_PATH=$LD_PATH
  DLLTOOL=$dlltool
 +WINDRES=$windres
 +DEPWINDRES=$dep_cc
 +DOXYGEN=$doxygen
  LDFLAGS=$LDFLAGS
  LDEXEFLAGS=$LDEXEFLAGS
- LDLIBFLAGS=$LDLIBFLAGS
+ LDSOFLAGS=$LDSOFLAGS
  SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
 -STRIPFLAGS=$STRIPFLAGS
 +ASMSTRIPFLAGS=$ASMSTRIPFLAGS
  X86ASMFLAGS=$X86ASMFLAGS
 +BUILDSUF=$build_suffix
 +PROGSSUF=$progs_suffix
 +FULLNAME=$FULLNAME
  LIBPREF=$LIBPREF
  LIBSUF=$LIBSUF
  LIBNAME=$LIBNAME
index 42ef78d,0000000..ed269fd
mode 100644,000000..100644
--- /dev/null
@@@ -1,107 -1,0 +1,107 @@@
-       $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDLIBFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS)
 +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
 +
 +LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
 +$(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i):   CPPFLAGS += -DHAVE_AV_CONFIG_H
 +
 +$(SUBDIR)$(LIBNAME): $(OBJS)
 +      $(RM) $@
 +      $(AR) $(ARFLAGS) $(AR_O) $^
 +      $(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
 +$(TOOLS):     THISLIB = $(FULLNAME:%=$(LD_LIB))
 +$(TESTPROGS): THISLIB = $(SUBDIR)$(LIBNAME)
 +
 +$(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
 +      $$(LD) $(LDFLAGS) $(LDEXEFLAGS) $$(LD_O) $$(filter %.o,$$^) $$(THISLIB) $(FFEXTRALIBS) $$(EXTRALIBS-$$(*F)) $$(ELIBS)
 +
 +$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
 +      $$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$< > $$@
 +
 +$(SUBDIR)lib$(FULLNAME).pc: $(SUBDIR)version.h | $(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) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver
 +      $(SLIB_CREATE_DEF_CMD)
++      $$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS)
 +      $(SLIB_EXTRA_CMD)
 +
 +ifdef SUBDIR
 +$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(DEP_LIBS)
 +endif
 +
 +clean::
 +      $(RM) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \
 +          $(CLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) $(CLEANSUFFIXES:%=$(SUBDIR)tests/%)
 +
 +distclean:: clean
 +      $(RM) $(DISTCLEANSUFFIXES:%=$(SUBDIR)%) $(DISTCLEANSUFFIXES:%=$(SUBDIR)$(ARCH)/%) \
 +            $(DISTCLEANSUFFIXES:%=$(SUBDIR)tests/%)
 +
 +install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME)
 +      $(Q)mkdir -p "$(SHLIBDIR)"
 +      $$(INSTALL) -m 755 $$< "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"
 +      $$(STRIP) "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"
 +      $(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd "$(SHLIBDIR)" && $(LN_S) $(SLIB_INSTALL_NAME) $(F));)
 +      $(if $(SLIB_INSTALL_EXTRA_SHLIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%) "$(SHLIBDIR)")
 +      $(if $(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p "$(LIBDIR)")
 +      $(if $(SLIB_INSTALL_EXTRA_LIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%) "$(LIBDIR)")
 +
 +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$(FULLNAME).pc
 +      $(Q)mkdir -p "$(PKGCONFIGDIR)"
 +      $$(INSTALL) -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))
 +      $(RM) "$(PKGCONFIGDIR)/lib$(FULLNAME).pc"
 +      -rmdir "$(INCINSTDIR)"
 +endef
 +
 +$(eval $(RULES))
 +
 +$(TOOLS):     $(DEP_LIBS) $(SUBDIR)$($(CONFIG_SHARED:yes=S)LIBNAME)
 +$(TESTPROGS): $(DEP_LIBS) $(SUBDIR)$(LIBNAME)
 +
 +testprogs: $(TESTPROGS)