mirror of https://git.ffmpeg.org/ffmpeg.git
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:
|
%.h.c:
|
||||||
$(Q)echo '#include "$*.h"' >$@
|
$(Q)echo '#include "$*.h"' >$@
|
||||||
|
|
||||||
%.c %.h %.ver %.version: TAG = GEN
|
%.c %.h %.pc %.ver %.version: TAG = GEN
|
||||||
|
|
||||||
AVPROGS-$(CONFIG_AVCONV) += avconv
|
AVPROGS-$(CONFIG_AVCONV) += avconv
|
||||||
AVPROGS-$(CONFIG_AVPLAY) += avplay
|
AVPROGS-$(CONFIG_AVPLAY) += avplay
|
||||||
|
@ -125,7 +125,6 @@ tools/cws2fws$(EXESUF): ELIBS = $(ZLIB)
|
||||||
|
|
||||||
CONFIGURABLE_COMPONENTS = \
|
CONFIGURABLE_COMPONENTS = \
|
||||||
$(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) \
|
$(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) \
|
||||||
$(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/version.h)) \
|
|
||||||
$(SRC_PATH)/libavcodec/bitstream_filters.c \
|
$(SRC_PATH)/libavcodec/bitstream_filters.c \
|
||||||
$(SRC_PATH)/libavformat/protocols.c \
|
$(SRC_PATH)/libavformat/protocols.c \
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,4 @@
|
||||||
/config.fate
|
/config.fate
|
||||||
/config.log
|
/config.log
|
||||||
/config.mak
|
/config.mak
|
||||||
|
/config.sh
|
||||||
|
|
|
@ -9,8 +9,8 @@ INCINSTDIR := $(INCDIR)/lib$(NAME)
|
||||||
|
|
||||||
INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%)
|
INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%)
|
||||||
|
|
||||||
all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME)
|
all-$(CONFIG_STATIC): $(SUBDIR)$(LIBNAME) $(SUBDIR)lib$(NAME).pc
|
||||||
all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME)
|
all-$(CONFIG_SHARED): $(SUBDIR)$(SLIBNAME) $(SUBDIR)lib$(NAME).pc
|
||||||
|
|
||||||
LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
|
LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
|
||||||
$(LIBOBJS) $(LIBOBJS:.o=.i): CPPFLAGS += -DHAVE_AV_CONFIG_H
|
$(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)
|
$(SUBDIR)lib$(NAME).version: $(SUBDIR)version.h | $(SUBDIR)
|
||||||
$$(M) $$(SRC_PATH)/avbuild/libversion.sh $(NAME) $$< > $$@
|
$$(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)
|
$(SUBDIR)lib$(NAME).ver: $(SUBDIR)lib$(NAME).v $(OBJS)
|
||||||
$$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@
|
$$(M)sed 's/MAJOR/$(lib$(NAME)_VERSION_MAJOR)/' $$< | $(VERSION_SCRIPT_POSTPROCESS_CMD) > $$@
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -5402,52 +5402,29 @@ lib_version(){
|
||||||
eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \""
|
eval printf "\"lib${1} >= \$LIB$(toupper ${1})_VERSION, \""
|
||||||
}
|
}
|
||||||
|
|
||||||
pkgconfig_generate(){
|
cat > avbuild/config.sh <<EOF
|
||||||
name=$1
|
# Automatically generated by configure - do not modify!
|
||||||
shortname=${name#lib}
|
shared=$shared
|
||||||
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
|
|
||||||
prefix=$prefix
|
prefix=$prefix
|
||||||
exec_prefix=\${prefix}
|
|
||||||
libdir=$libdir
|
libdir=$libdir
|
||||||
includedir=$incdir
|
includedir=$incdir
|
||||||
|
source_path=${source_path}
|
||||||
|
LIBPREF=${LIBPREF}
|
||||||
|
LIBSUF=${LIBSUF}
|
||||||
|
|
||||||
Name: $name
|
requires_avutil="$(map 'lib_version $v' $(echo $avutil_deps))"
|
||||||
Description: $comment
|
requires_avcodec="$(map 'lib_version $v' $(echo $avcodec_deps))"
|
||||||
Version: $version
|
requires_avformat="$(map 'lib_version $v' $(echo $avformat_deps))"
|
||||||
Requires: $(enabled shared || echo $requires)
|
requires_avdevice="$(map 'lib_version $v' $(echo $avdevice_deps))"
|
||||||
Requires.private: $(enabled shared && echo $requires)
|
requires_avfilter="$(map 'lib_version $v' $(echo $avfilter_deps))"
|
||||||
Conflicts:
|
requires_avresample="$(map 'lib_version $v' $(echo $avresample_deps))"
|
||||||
Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
|
requires_swscale="$(map 'lib_version $v' $(echo $swscale_deps))"
|
||||||
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_swscale="$LIBM"
|
||||||
EOF
|
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
|
NAME = avcodec
|
||||||
|
DESC = Libav codec library
|
||||||
|
|
||||||
HEADERS = avcodec.h \
|
HEADERS = avcodec.h \
|
||||||
avfft.h \
|
avfft.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = avdevice
|
NAME = avdevice
|
||||||
|
DESC = Libav device handling library
|
||||||
|
|
||||||
HEADERS = avdevice.h \
|
HEADERS = avdevice.h \
|
||||||
version.h \
|
version.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = avfilter
|
NAME = avfilter
|
||||||
|
DESC = Libav video filtering library
|
||||||
|
|
||||||
HEADERS = avfilter.h \
|
HEADERS = avfilter.h \
|
||||||
avfiltergraph.h \
|
avfiltergraph.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = avformat
|
NAME = avformat
|
||||||
|
DESC = Libav container format library
|
||||||
|
|
||||||
HEADERS = avformat.h \
|
HEADERS = avformat.h \
|
||||||
avio.h \
|
avio.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = avresample
|
NAME = avresample
|
||||||
|
DESC = Libav audio resampling library
|
||||||
|
|
||||||
HEADERS = avresample.h \
|
HEADERS = avresample.h \
|
||||||
version.h \
|
version.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = avutil
|
NAME = avutil
|
||||||
|
DESC = Libav utility library
|
||||||
|
|
||||||
HEADERS = adler32.h \
|
HEADERS = adler32.h \
|
||||||
aes.h \
|
aes.h \
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
NAME = swscale
|
NAME = swscale
|
||||||
|
DESC = Libav image rescaling library
|
||||||
|
|
||||||
HEADERS = swscale.h \
|
HEADERS = swscale.h \
|
||||||
version.h \
|
version.h \
|
||||||
|
|
Loading…
Reference in New Issue