You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge commit '92db5083077a8b0f8e1050507671b456fd155125'
* commit '92db5083077a8b0f8e1050507671b456fd155125': build: Generate pkg-config files from Make and not from configure build: Store library version numbers in .version files Includes cherry-picked commits8a34f36593andee164727ddto 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>
This commit is contained in:
		
							
								
								
									
										7
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Makefile
									
									
									
									
									
								
							| @@ -87,7 +87,6 @@ tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS) | ||||
|  | ||||
| CONFIGURABLE_COMPONENTS =                                           \ | ||||
|     $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c))                 \ | ||||
|     $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/version.h))              \ | ||||
|     $(SRC_PATH)/libavcodec/bitstream_filters.c                      \ | ||||
|     $(SRC_PATH)/libavformat/protocols.c                             \ | ||||
|  | ||||
| @@ -109,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)/ | ||||
|   | ||||
							
								
								
									
										92
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -6756,20 +6756,6 @@ 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" >> ffbuild/config.mak' $LIBRARY_LIST | ||||
|  | ||||
| print_program_extralibs(){ | ||||
| @@ -6866,64 +6852,32 @@ if test -n "$WARNINGS"; then | ||||
|     enabled fatal_warnings && exit 1 | ||||
| fi | ||||
|  | ||||
| # build pkg-config files | ||||
| # 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 > 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 | ||||
| incdir=$incdir | ||||
| rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}") | ||||
| source_path=${source_path} | ||||
| LIBPREF=${LIBPREF} | ||||
| LIBSUF=${LIBSUF} | ||||
|  | ||||
| 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} | ||||
| 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 | ||||
|   | ||||
							
								
								
									
										1
									
								
								ffbuild/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								ffbuild/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -2,3 +2,4 @@ | ||||
| /config.fate | ||||
| /config.log | ||||
| /config.mak | ||||
| /config.sh | ||||
|   | ||||
| @@ -89,7 +89,7 @@ COMPILE_HOSTC = $(call COMPILE,HOSTCC) | ||||
| %.h.c: | ||||
| 	$(Q)echo '#include "$*.h"' >$@ | ||||
|  | ||||
| %.c %.h %.ver: TAG = GEN | ||||
| %.c %.h %.pc %.ver %.version: TAG = GEN | ||||
|  | ||||
| # Dummy rule to stop make trying to rebuild removed or renamed headers | ||||
| %.h: | ||||
| @@ -154,7 +154,7 @@ $(TOOLOBJS): | tools | ||||
|  | ||||
| OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOBJS) $(HOSTOBJS) $(SLIBOBJS) $(TESTOBJS)) | ||||
|  | ||||
| CLEANSUFFIXES     = *.d *.o *~ *.h.c *.gcda *.gcno *.map *.ver *.ho *$(DEFAULT_YASMD).asm | ||||
| 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 | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| 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) | ||||
| @@ -7,8 +9,8 @@ INCINSTDIR := $(INCDIR)/lib$(NAME) | ||||
|  | ||||
| INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%) | ||||
|  | ||||
| all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) | ||||
| all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) | ||||
| 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 | ||||
| @@ -31,6 +33,12 @@ $(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) > $$@ | ||||
|  | ||||
|   | ||||
							
								
								
									
										15
									
								
								ffbuild/libversion.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								ffbuild/libversion.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,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" | ||||
							
								
								
									
										62
									
								
								ffbuild/pkgconfig_generate.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										62
									
								
								ffbuild/pkgconfig_generate.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,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,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = avcodec | ||||
| DESC = FFmpeg codec library | ||||
|  | ||||
| HEADERS = avcodec.h                                                     \ | ||||
|           avdct.h                                                       \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME    = avdevice | ||||
| DESC    = FFmpeg device handling library | ||||
|  | ||||
| HEADERS = avdevice.h                                                    \ | ||||
|           version.h                                                     \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = avfilter | ||||
| DESC = FFmpeg audio/video filtering library | ||||
|  | ||||
| HEADERS = avfilter.h                                                    \ | ||||
|           avfiltergraph.h                                               \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = avformat | ||||
| DESC = FFmpeg container format library | ||||
|  | ||||
| HEADERS = avformat.h                                                    \ | ||||
|           avio.h                                                        \ | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| NAME = avresample | ||||
| DESC = Libav audio resampling library | ||||
|  | ||||
| HEADERS = avresample.h                                                  \ | ||||
|           version.h                                                     \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = avutil | ||||
| DESC = FFmpeg utility library | ||||
|  | ||||
| HEADERS = adler32.h                                                     \ | ||||
|           aes.h                                                         \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = postproc | ||||
| DESC = FFmpeg postprocessing library | ||||
| FFLIBS = avutil | ||||
|  | ||||
| HEADERS = postprocess.h        \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = swresample | ||||
| DESC = FFmpeg audio resampling library | ||||
| FFLIBS = avutil | ||||
|  | ||||
| HEADERS = swresample.h                       \ | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| include $(SUBDIR)../ffbuild/config.mak | ||||
|  | ||||
| NAME = swscale | ||||
| DESC = FFmpeg image rescaling library | ||||
|  | ||||
| HEADERS = swscale.h                                                     \ | ||||
|           version.h                                                     \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user