Merge commit '92db5083077a8b0f8e1050507671b456fd155125'
authorJames Almer <jamrial@gmail.com>
Thu, 4 May 2017 22:59:30 +0000 (19:59 -0300)
committerJames Almer <jamrial@gmail.com>
Thu, 4 May 2017 22:59:30 +0000 (19:59 -0300)
* commit '92db5083077a8b0f8e1050507671b456fd155125':
  build: Generate pkg-config files from Make and not from configure
  build: Store library version numbers in .version files

Includes cherry-picked commits 8a34f3659371680ca523aecfd9098c28f0f809eb and
ee164727dd64c199b87118917e674b17c25e0da3 to fix issues.

Changes were also made to retain support for raise_major and build_suffix.

Reviewed-by: ubitux
Merged-by: James Almer <jamrial@gmail.com>
16 files changed:
1  2 
Makefile
configure
ffbuild/.gitignore
ffbuild/common.mak
ffbuild/library.mak
ffbuild/libversion.sh
ffbuild/pkgconfig_generate.sh
libavcodec/Makefile
libavdevice/Makefile
libavfilter/Makefile
libavformat/Makefile
libavresample/Makefile
libavutil/Makefile
libpostproc/Makefile
libswresample/Makefile
libswscale/Makefile

diff --cc Makefile
+++ b/Makefile
@@@ -109,6 -145,6 +108,12 @@@ $(1) :
  $(1)-yes :=
  endef
  
++ifdef CONFIG_RAISE_MAJOR
++RAISE_MAJOR = 100
++else
++RAISE_MAJOR = 0
++endif
++
  define DOSUBDIR
  $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
  SUBDIR := $(1)/
diff --cc configure
+++ b/configure
@@@ -6751,26 -5315,10 +6751,12 @@@ SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS
  SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
  SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
  VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
 -SAMPLES:=${samples:-\$(LIBAV_SAMPLES)}
 +SAMPLES:=${samples:-\$(FATE_SAMPLES)}
 +NOREDZONE_FLAGS=$noredzone_flags
 +LIBFUZZER_PATH=$libfuzzer_path
  EOF
  
- get_version(){
-     lcname=lib${1}
-     name=$(toupper $lcname)
-     file=$source_path/$lcname/version.h
-     eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
-     enabled raise_major && eval ${name}_VERSION_MAJOR=$((${name}_VERSION_MAJOR+100))
-     eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
-     eval echo "${lcname}_VERSION=\$${name}_VERSION"             >> ffbuild/config.mak
-     eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> ffbuild/config.mak
-     eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> ffbuild/config.mak
- }
- map 'get_version $v' $LIBRARY_LIST
 -map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> avbuild/config.mak' $LIBRARY_LIST
 +map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
  
  print_program_extralibs(){
      eval "program_extralibs=\$${1}_extralibs"
@@@ -6861,69 -5394,37 +6847,37 @@@ print_enabled_components()
  print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
  print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
  
 -test -n "$WARNINGS" && printf "\n$WARNINGS"
 -
 -# build pkg-config files
 +if test -n "$WARNINGS"; then
 +    printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
 +    enabled fatal_warnings && exit 1
 +fi
  
- # build pkg-config files
 -lib_version(){
 -    eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \""
 -}
++# Settings for pkg-config files
  
- lib_version(){
-     eval printf "\"lib${1}${build_suffix} >= \$LIB$(toupper ${1})_VERSION, \""
- }
- pkgconfig_generate(){
-     name=$1
-     shortname=${name#lib}${build_suffix}
-     comment=$2
-     version=$3
-     libs=$4
-     requires=$(map 'lib_version $v' $(eval echo \$${name#lib}_deps))
-     requires=${requires%, }
-     enabled ${name#lib} || return 0
-     mkdir -p $name
-     cat <<EOF > $name/$name${build_suffix}.pc
 -cat > avbuild/config.sh <<EOF
++cat > ffbuild/config.sh <<EOF
+ # Automatically generated by configure - do not modify!
+ shared=$shared
++build_suffix=$build_suffix
  prefix=$prefix
- exec_prefix=\${prefix}
  libdir=$libdir
--includedir=$incdir
- Name: $name
- Description: $comment
- Version: $version
- Requires: $(enabled shared || echo $requires)
- Requires.private: $(enabled shared && echo $requires)
- Conflicts:
- Libs: -L\${libdir} $(enabled rpath && echo "-Wl,-rpath,\${libdir}") -l${shortname} $(enabled shared || echo $libs)
- Libs.private: $(enabled shared && echo $libs)
- Cflags: -I\${includedir}
++incdir=$incdir
++rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
+ source_path=${source_path}
+ LIBPREF=${LIBPREF}
+ LIBSUF=${LIBSUF}
 -requires_avutil="$(map 'lib_version $v' $(echo $avutil_deps))"
 -requires_avcodec="$(map 'lib_version $v' $(echo $avcodec_deps))"
 -requires_avformat="$(map 'lib_version $v' $(echo $avformat_deps))"
 -requires_avdevice="$(map 'lib_version $v' $(echo $avdevice_deps))"
 -requires_avfilter="$(map 'lib_version $v' $(echo $avfilter_deps))"
 -requires_avresample="$(map 'lib_version $v' $(echo $avresample_deps))"
 -requires_swscale="$(map 'lib_version $v' $(echo $swscale_deps))"
 -
+ extralibs_avutil="$LIBRT $LIBM"
+ extralibs_avcodec="$extralibs"
+ extralibs_avformat="$extralibs"
+ extralibs_avdevice="$extralibs"
+ extralibs_avfilter="$extralibs"
+ extralibs_avresample="$LIBM"
++extralibs_postproc=""
+ extralibs_swscale="$LIBM"
++extralibs_swresample="$LIBM $LIBSOXR"
  EOF
- mkdir -p doc/examples/pc-uninstalled
- includedir=${source_path}
- [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
-     cat <<EOF > doc/examples/pc-uninstalled/${name}-uninstalled.pc
- prefix=
- exec_prefix=
- libdir=\${pcfiledir}/../../../$name
- includedir=${includedir}
- Name: $name
- Description: $comment
- Version: $version
- Requires: $requires
- Conflicts:
- Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${shortname} $(enabled shared || echo $libs)
- Cflags: -I\${includedir}
- EOF
- }
- pkgconfig_generate libavutil     "FFmpeg utility library"               "$LIBAVUTIL_VERSION"     "$LIBRT $LIBM"
- pkgconfig_generate libavcodec    "FFmpeg codec library"                 "$LIBAVCODEC_VERSION"    "$extralibs"
- pkgconfig_generate libavformat   "FFmpeg container format library"      "$LIBAVFORMAT_VERSION"   "$extralibs"
- pkgconfig_generate libavdevice   "FFmpeg device handling library"       "$LIBAVDEVICE_VERSION"   "$extralibs"
- pkgconfig_generate libavfilter   "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION"   "$extralibs"
- pkgconfig_generate libpostproc   "FFmpeg postprocessing library"        "$LIBPOSTPROC_VERSION"   ""
- pkgconfig_generate libavresample "Libav audio resampling library"       "$LIBAVRESAMPLE_VERSION" "$LIBM"
- pkgconfig_generate libswscale    "FFmpeg image rescaling library"       "$LIBSWSCALE_VERSION"    "$LIBM"
- pkgconfig_generate libswresample "FFmpeg audio resampling library"      "$LIBSWRESAMPLE_VERSION" "$LIBM $LIBSOXR"
 +
++for lib in $LIBRARY_LIST; do
++    lib_deps="$(eval echo \$${lib}_deps)"
++    echo ${lib}_deps=\"$lib_deps\" >> ffbuild/config.sh
++done
Simple merge
index 1957370,0000000..e61f853
mode 100644,000000..100644
--- /dev/null
@@@ -1,168 -1,0 +1,168 @@@
- %.c %.h %.ver: TAG = GEN
 +#
 +# common bits used by all libraries
 +#
 +
 +DEFAULT_YASMD=.dbg
 +
 +ifeq ($(DBG),1)
 +YASMD=$(DEFAULT_YASMD)
 +else
 +YASMD=
 +endif
 +
 +ifndef SUBDIR
 +
 +ifndef V
 +Q      = @
 +ECHO   = printf "$(1)\t%s\n" $(2)
 +BRIEF  = CC CXX OBJCC HOSTCC HOSTLD AS YASM AR LD STRIP CP WINDRES
 +SILENT = DEPCC DEPHOSTCC DEPAS DEPYASM RANLIB RM
 +
 +MSG    = $@
 +M      = @$(call ECHO,$(TAG),$@);
 +$(foreach VAR,$(BRIEF), \
 +    $(eval override $(VAR) = @$$(call ECHO,$(VAR),$$(MSG)); $($(VAR))))
 +$(foreach VAR,$(SILENT),$(eval override $(VAR) = @$($(VAR))))
 +$(eval INSTALL = @$(call ECHO,INSTALL,$$(^:$(SRC_DIR)/%=%)); $(INSTALL))
 +endif
 +
 +ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample
 +
 +# NASM requires -I path terminated with /
 +IFLAGS     := -I. -I$(SRC_LINK)/
 +CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
 +CFLAGS     += $(ECFLAGS)
 +CCFLAGS     = $(CPPFLAGS) $(CFLAGS)
 +OBJCFLAGS  += $(EOBJCFLAGS)
 +OBJCCFLAGS  = $(CPPFLAGS) $(CFLAGS) $(OBJCFLAGS)
 +ASFLAGS    := $(CPPFLAGS) $(ASFLAGS)
 +CXXFLAGS   := $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS)
 +YASMFLAGS  += $(IFLAGS:%=%/) -Pconfig.asm
 +
 +HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS)
 +LDFLAGS    := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS)
 +
 +define COMPILE
 +       $(call $(1)DEP,$(1))
 +       $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<)
 +endef
 +
 +COMPILE_C = $(call COMPILE,CC)
 +COMPILE_CXX = $(call COMPILE,CXX)
 +COMPILE_S = $(call COMPILE,AS)
 +COMPILE_M = $(call COMPILE,OBJCC)
 +COMPILE_HOSTC = $(call COMPILE,HOSTCC)
 +
 +%.o: %.c
 +      $(COMPILE_C)
 +
 +%.o: %.cpp
 +      $(COMPILE_CXX)
 +
 +%.o: %.m
 +      $(COMPILE_M)
 +
 +%.s: %.c
 +      $(CC) $(CCFLAGS) -S -o $@ $<
 +
 +%.o: %.S
 +      $(COMPILE_S)
 +
 +%_host.o: %.c
 +      $(COMPILE_HOSTC)
 +
 +%$(DEFAULT_YASMD).asm: %.asm
 +      $(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.asm=.d)
 +      $(YASM) $(YASMFLAGS) -I $(<D)/ -e $< | sed '/^%/d;/^$$/d;' > $@
 +
 +%.o: %.asm
 +      $(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
 +      $(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<)
 +      -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@)
 +
 +%.o: %.rc
 +      $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $<
 +
 +%.i: %.c
 +      $(CC) $(CCFLAGS) $(CC_E) $<
 +
 +%.h.c:
 +      $(Q)echo '#include "$*.h"' >$@
 +
- CLEANSUFFIXES     = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.ho *$(DEFAULT_YASMD).asm
++%.c %.h %.pc %.ver %.version: TAG = GEN
 +
 +# Dummy rule to stop make trying to rebuild removed or renamed headers
 +%.h:
 +      @:
 +
 +# 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
 +$(OBJS):
 +endif
 +
 +include $(SRC_PATH)/ffbuild/arch.mak
 +
 +OBJS      += $(OBJS-yes)
 +SLIBOBJS  += $(SLIBOBJS-yes)
 +FFLIBS    := $($(NAME)_FFLIBS) $(FFLIBS-yes) $(FFLIBS)
 +TESTPROGS += $(TESTPROGS-yes)
 +
 +LDLIBS       = $(FFLIBS:%=%$(BUILDSUF))
 +FFEXTRALIBS := $(LDLIBS:%=$(LD_LIB)) $(EXTRALIBS)
 +
 +OBJS      := $(sort $(OBJS:%=$(SUBDIR)%))
 +SLIBOBJS  := $(sort $(SLIBOBJS:%=$(SUBDIR)%))
 +TESTOBJS  := $(TESTOBJS:%=$(SUBDIR)tests/%) $(TESTPROGS:%=$(SUBDIR)tests/%.o)
 +TESTPROGS := $(TESTPROGS:%=$(SUBDIR)tests/%$(EXESUF))
 +HOSTOBJS  := $(HOSTPROGS:%=$(SUBDIR)%.o)
 +HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF))
 +TOOLS     += $(TOOLS-yes)
 +TOOLOBJS  := $(TOOLS:%=tools/%.o)
 +TOOLS     := $(TOOLS:%=tools/%$(EXESUF))
 +HEADERS   += $(HEADERS-yes)
 +
 +PATH_LIBNAME = $(foreach NAME,$(1),lib$(NAME)/$($(2)LIBNAME))
 +DEP_LIBS := $(foreach lib,$(FFLIBS),$(call PATH_LIBNAME,$(lib),$(CONFIG_SHARED:yes=S)))
 +STATIC_DEP_LIBS := $(foreach lib,$(FFLIBS),$(call PATH_LIBNAME,$(lib)))
 +
 +SRC_DIR    := $(SRC_PATH)/lib$(NAME)
 +ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h))
 +SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
 +SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
 +HOBJS        = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o))
 +$(HOBJS):     CCFLAGS += $(CFLAGS_HEADERS)
 +checkheaders: $(HOBJS)
 +.SECONDARY:   $(HOBJS:.o=.c)
 +
 +alltools: $(TOOLS)
 +
 +$(HOSTOBJS): %.o: %.c
 +      $(COMPILE_HOSTC)
 +
 +$(HOSTPROGS): %$(HOSTEXESUF): %.o
 +      $(HOSTLD) $(HOSTLDFLAGS) $(HOSTLD_O) $^ $(HOSTEXTRALIBS)
 +
 +$(OBJS):     | $(sort $(dir $(OBJS)))
 +$(HOBJS):    | $(sort $(dir $(HOBJS)))
 +$(HOSTOBJS): | $(sort $(dir $(HOSTOBJS)))
 +$(SLIBOBJS): | $(sort $(dir $(SLIBOBJS)))
 +$(TESTOBJS): | $(sort $(dir $(TESTOBJS)))
 +$(TOOLOBJS): | tools
 +
 +OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS))
 +
++CLEANSUFFIXES     = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.version *.ho *$(DEFAULT_YASMD).asm
 +DISTCLEANSUFFIXES = *.pc
 +LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
 +
 +define RULES
 +clean::
 +      $(RM) $(HOSTPROGS) $(TESTPROGS) $(TOOLS)
 +endef
 +
 +$(eval $(RULES))
 +
 +-include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d) $(HOBJS:.o=.d) $(SLIBOBJS:.o=.d)) $(OBJS:.o=$(DEFAULT_YASMD).d)
index 5e576d1,0000000..addc945
mode 100644,000000..100644
--- /dev/null
@@@ -1,98 -1,0 +1,106 @@@
- all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME)
- all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME)
 +include $(SRC_PATH)/ffbuild/common.mak
 +
++-include $(SUBDIR)lib$(NAME).version
++
 +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$(NAME).pc
++all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)lib$(NAME).pc
 +
 +LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
 +$(LIBOBJS) $(LIBOBJS:.o=.s) $(LIBOBJS:.o=.i):   CPPFLAGS += -DHAVE_AV_CONFIG_H
 +$(TESTOBJS) $(TESTOBJS:.o=.i): CFLAGS += -Umain
 +
 +$(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) $$(ELIBS)
 +
++$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
++      $$(M) $$(SRC_PATH)/ffbuild/libversion.sh $(NAME) $$< $(RAISE_MAJOR) > $$@
++
++$(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) $(LDLIBFLAGS) $$(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)
index 0000000,0000000..687adf2
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++toupper(){
++    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
++}
++
++name=lib$1
++ucname=$(toupper ${name})
++file=$2
++raise_major=$3
++
++eval $(awk "/#define ${ucname}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
++eval ${ucname}_VERSION_MAJOR=$((${ucname}_VERSION_MAJOR+${raise_major}))
++eval ${ucname}_VERSION=\$${ucname}_VERSION_MAJOR.\$${ucname}_VERSION_MINOR.\$${ucname}_VERSION_MICRO
++eval echo "${name}_VERSION=\$${ucname}_VERSION"
++eval echo "${name}_VERSION_MAJOR=\$${ucname}_VERSION_MAJOR"
++eval echo "${name}_VERSION_MINOR=\$${ucname}_VERSION_MINOR"
index 0000000,0000000..e5de671
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,62 @@@
++#!/bin/sh
++
++. ffbuild/config.sh
++
++if test "$shared" = "yes"; then
++    shared=true
++else
++    shared=false
++fi
++
++shortname=$1
++name=lib${shortname}
++fullname=${name}${build_suffix}
++comment=$2
++libs=$(eval echo \$extralibs_${shortname})
++deps=$(eval echo \$${shortname}_deps)
++
++for dep in $deps; do
++    depname=lib${dep}
++    fulldepname=${depname}${build_suffix}
++    . ${depname}/${depname}.version
++    depversion=$(eval echo \$${depname}_VERSION)
++    requires="$requires ${fulldepname} >= ${depversion}, "
++done
++requires=${requires%, }
++
++version=$(grep ${name}_VERSION= $name/${name}.version | cut -d= -f2)
++
++cat <<EOF > $name/$fullname.pc
++prefix=$prefix
++exec_prefix=\${prefix}
++libdir=$libdir
++includedir=$incdir
++
++Name: $fullname
++Description: $comment
++Version: $version
++Requires: $($shared || echo $requires)
++Requires.private: $($shared && echo $requires)
++Conflicts:
++Libs: -L\${libdir} $rpath -l${fullname#lib} $($shared || echo $libs)
++Libs.private: $($shared && echo $libs)
++Cflags: -I\${includedir}
++EOF
++
++mkdir -p doc/examples/pc-uninstalled
++includedir=${source_path}
++[ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
++    cat <<EOF > doc/examples/pc-uninstalled/${name}-uninstalled.pc
++prefix=
++exec_prefix=
++libdir=\${pcfiledir}/../../../$name
++includedir=${source_path}
++
++Name: $fullname
++Description: $comment
++Version: $version
++Requires: $requires
++Conflicts:
++Libs: -L\${libdir} -Wl,-rpath,\${libdir} -l${fullname#lib} $($shared || echo $libs)
++Cflags: -I\${includedir}
++EOF
@@@ -1,9 -1,7 +1,8 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME = avcodec
 -DESC = Libav codec library
++DESC = FFmpeg codec library
  
  HEADERS = avcodec.h                                                     \
 +          avdct.h                                                       \
            avfft.h                                                       \
            d3d11va.h                                                     \
            dirac.h                                                       \
@@@ -1,6 -1,5 +1,5 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME    = avdevice
 -DESC    = Libav device handling library
++DESC    = FFmpeg device handling library
  
  HEADERS = avdevice.h                                                    \
            version.h                                                     \
@@@ -1,6 -1,5 +1,5 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME = avfilter
 -DESC = Libav video filtering library
++DESC = FFmpeg audio/video filtering library
  
  HEADERS = avfilter.h                                                    \
            avfiltergraph.h                                               \
@@@ -1,6 -1,5 +1,5 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME = avformat
 -DESC = Libav container format library
++DESC = FFmpeg container format library
  
  HEADERS = avformat.h                                                    \
            avio.h                                                        \
Simple merge
@@@ -1,6 -1,5 +1,5 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME = avutil
 -DESC = Libav utility library
++DESC = FFmpeg utility library
  
  HEADERS = adler32.h                                                     \
            aes.h                                                         \
index 3c21f00,0000000..3431719
mode 100644,000000..100644
--- /dev/null
@@@ -1,12 -1,0 +1,11 @@@
- include $(SUBDIR)../ffbuild/config.mak
 +NAME = postproc
++DESC = FFmpeg postprocessing library
 +FFLIBS = avutil
 +
 +HEADERS = postprocess.h        \
 +          version.h            \
 +
 +OBJS = postprocess.o
 +
 +# Windows resource file
 +SLIBOBJS-$(HAVE_GNU_WINDRES) += postprocres.o
index f50ee0d,0000000..42666e4
mode 100644,000000..100644
--- /dev/null
@@@ -1,24 -1,0 +1,23 @@@
- include $(SUBDIR)../ffbuild/config.mak
 +NAME = swresample
++DESC = FFmpeg audio resampling library
 +FFLIBS = avutil
 +
 +HEADERS = swresample.h                       \
 +          version.h                          \
 +
 +OBJS = audioconvert.o                        \
 +       dither.o                              \
 +       options.o                             \
 +       rematrix.o                            \
 +       resample.o                            \
 +       resample_dsp.o                        \
 +       swresample.o                          \
 +       swresample_frame.o                    \
 +
 +OBJS-$(CONFIG_LIBSOXR) += soxr_resample.o
 +OBJS-$(CONFIG_SHARED)  += log2_tab.o
 +
 +# Windows resource file
 +SLIBOBJS-$(HAVE_GNU_WINDRES) += swresampleres.o
 +
 +TESTPROGS = swresample
@@@ -1,6 -1,5 +1,5 @@@
- include $(SUBDIR)../ffbuild/config.mak
  NAME = swscale
 -DESC = Libav image rescaling library
++DESC = FFmpeg image rescaling library
  
  HEADERS = swscale.h                                                     \
            version.h                                                     \