mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-19 13:27:00 +00:00
build: Generate pkg-config files from Make and not from configure
This moves work from the configure to the Make stage where it can be parallelized and ensures that pkgconfig files are updated when library versions change. Bug-Id: 449
This commit is contained in:
parent
edb4348732
commit
92db508307
3
Makefile
3
Makefile
@ -67,7 +67,7 @@ COMPILE_HOSTC = $(call COMPILE,HOSTCC)
|
||||
%.h.c:
|
||||
$(Q)echo '#include "$*.h"' >$@
|
||||
|
||||
%.c %.h %.ver %.version: TAG = GEN
|
||||
%.c %.h %.pc %.ver %.version: TAG = GEN
|
||||
|
||||
AVPROGS-$(CONFIG_AVCONV) += avconv
|
||||
AVPROGS-$(CONFIG_AVPLAY) += avplay
|
||||
@ -125,7 +125,6 @@ tools/cws2fws$(EXESUF): ELIBS = $(ZLIB)
|
||||
|
||||
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 \
|
||||
|
||||
|
1
avbuild/.gitignore
vendored
1
avbuild/.gitignore
vendored
@ -2,3 +2,4 @@
|
||||
/config.fate
|
||||
/config.log
|
||||
/config.mak
|
||||
/config.sh
|
||||
|
@ -9,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=.i): CPPFLAGS += -DHAVE_AV_CONFIG_H
|
||||
@ -35,6 +35,9 @@ $(TESTPROGS) $(TOOLS): %$(EXESUF): %.o
|
||||
$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
|
||||
$$(M) $$(SRC_PATH)/avbuild/libversion.sh $(NAME) $$< > $$@
|
||||
|
||||
$(SUBDIR)lib$(NAME).pc: $(SUBDIR)version.h | $(SUBDIR)
|
||||
$$(M) $$(SRC_PATH)/avbuild/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) > $$@
|
||||
|
||||
|
50
avbuild/pkgconfig_generate.sh
Executable file
50
avbuild/pkgconfig_generate.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
. avbuild/config.sh
|
||||
|
||||
if test "$shared" = "yes"; then
|
||||
shared=true
|
||||
else
|
||||
shared=false
|
||||
fi
|
||||
|
||||
shortname=$1
|
||||
name=lib${shortname}
|
||||
comment=$2
|
||||
libs=$(eval echo \$extralibs_${shortname})
|
||||
requires=$(eval echo \$requires_${shortname})
|
||||
requires=${requires%, }
|
||||
|
||||
version=$(grep ${name}_VERSION= $name/${name}.version | cut -d= -f2)
|
||||
|
||||
cat <<EOF > $name/$name.pc
|
||||
prefix=$prefix
|
||||
exec_prefix=\${prefix}
|
||||
libdir=$libdir
|
||||
includedir=$incdir
|
||||
|
||||
Name: $name
|
||||
Description: $comment
|
||||
Version: $version
|
||||
Requires: $($shared || echo $requires)
|
||||
Requires.private: $($shared && echo $requires)
|
||||
Conflicts:
|
||||
Libs: -L\${libdir} -l${shortname} $($shared || echo $libs)
|
||||
Libs.private: $($shared && echo $libs)
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
|
||||
cat <<EOF > $name/$name-uninstalled.pc
|
||||
prefix=
|
||||
exec_prefix=
|
||||
libdir=\${pcfiledir}
|
||||
includedir=${source_path}
|
||||
|
||||
Name: $name
|
||||
Description: $comment
|
||||
Version: $version
|
||||
Requires: $requires
|
||||
Conflicts:
|
||||
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
65
configure
vendored
65
configure
vendored
@ -5402,52 +5402,29 @@ lib_version(){
|
||||
eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \""
|
||||
}
|
||||
|
||||
pkgconfig_generate(){
|
||||
name=$1
|
||||
shortname=${name#lib}
|
||||
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.pc
|
||||
cat > avbuild/config.sh <<EOF
|
||||
# Automatically generated by configure - do not modify!
|
||||
shared=$shared
|
||||
prefix=$prefix
|
||||
exec_prefix=\${prefix}
|
||||
libdir=$libdir
|
||||
includedir=$incdir
|
||||
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} -l${shortname} $(enabled shared || echo $libs)
|
||||
Libs.private: $(enabled shared && echo $libs)
|
||||
Cflags: -I\${includedir}
|
||||
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_swscale="$LIBM"
|
||||
EOF
|
||||
cat <<EOF > $name/$name-uninstalled.pc
|
||||
prefix=
|
||||
exec_prefix=
|
||||
libdir=\${pcfiledir}
|
||||
includedir=${source_path}
|
||||
|
||||
Name: $name
|
||||
Description: $comment
|
||||
Version: $version
|
||||
Requires: $requires
|
||||
Conflicts:
|
||||
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
}
|
||||
|
||||
pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBRT $LIBM"
|
||||
pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs"
|
||||
pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs"
|
||||
pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs"
|
||||
pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
|
||||
pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$LIBM"
|
||||
pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM"
|
||||
|
@ -1,4 +1,5 @@
|
||||
NAME = avcodec
|
||||
DESC = Libav codec library
|
||||
|
||||
HEADERS = avcodec.h \
|
||||
avfft.h \
|
||||
|
@ -1,4 +1,5 @@
|
||||
NAME = avdevice
|
||||
DESC = Libav device handling library
|
||||
|
||||
HEADERS = avdevice.h \
|
||||
version.h \
|
||||
|
@ -1,4 +1,5 @@
|
||||
NAME = avfilter
|
||||
DESC = Libav video filtering library
|
||||
|
||||
HEADERS = avfilter.h \
|
||||
avfiltergraph.h \
|
||||
|
@ -1,4 +1,5 @@
|
||||
NAME = avformat
|
||||
DESC = Libav 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,4 +1,5 @@
|
||||
NAME = avutil
|
||||
DESC = Libav utility library
|
||||
|
||||
HEADERS = adler32.h \
|
||||
aes.h \
|
||||
|
@ -1,4 +1,5 @@
|
||||
NAME = swscale
|
||||
DESC = Libav image rescaling library
|
||||
|
||||
HEADERS = swscale.h \
|
||||
version.h \
|
||||
|
Loading…
Reference in New Issue
Block a user