Browse Source

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
tags/n3.4
Diego Biurrun 8 years ago
parent
commit
92db508307
12 changed files with 86 additions and 49 deletions
  1. +1
    -2
      Makefile
  2. +1
    -0
      avbuild/.gitignore
  3. +5
    -2
      avbuild/library.mak
  4. +50
    -0
      avbuild/pkgconfig_generate.sh
  5. +22
    -45
      configure
  6. +1
    -0
      libavcodec/Makefile
  7. +1
    -0
      libavdevice/Makefile
  8. +1
    -0
      libavfilter/Makefile
  9. +1
    -0
      libavformat/Makefile
  10. +1
    -0
      libavresample/Makefile
  11. +1
    -0
      libavutil/Makefile
  12. +1
    -0
      libswscale/Makefile

+ 1
- 2
Makefile View File

@@ -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 \




+ 1
- 0
avbuild/.gitignore View File

@@ -2,3 +2,4 @@
/config.fate /config.fate
/config.log /config.log
/config.mak /config.mak
/config.sh

+ 5
- 2
avbuild/library.mak View File

@@ -9,8 +9,8 @@ INCINSTDIR := $(INCDIR)/lib$(NAME)


INSTHEADERS := $(INSTHEADERS) $(HEADERS:%=$(SUBDIR)%) 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 := $(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) > $$@




+ 50
- 0
avbuild/pkgconfig_generate.sh View 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

+ 22
- 45
configure View File

@@ -5402,52 +5402,29 @@ lib_version(){
eval printf "\"lib${1} >= \$LIB$(toupper ${1})_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 prefix=$prefix
exec_prefix=\${prefix}
libdir=$libdir libdir=$libdir
includedir=$incdir includedir=$incdir

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}
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_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
- 0
libavcodec/Makefile View File

@@ -1,4 +1,5 @@
NAME = avcodec NAME = avcodec
DESC = Libav codec library


HEADERS = avcodec.h \ HEADERS = avcodec.h \
avfft.h \ avfft.h \


+ 1
- 0
libavdevice/Makefile View File

@@ -1,4 +1,5 @@
NAME = avdevice NAME = avdevice
DESC = Libav device handling library


HEADERS = avdevice.h \ HEADERS = avdevice.h \
version.h \ version.h \


+ 1
- 0
libavfilter/Makefile View File

@@ -1,4 +1,5 @@
NAME = avfilter NAME = avfilter
DESC = Libav video filtering library


HEADERS = avfilter.h \ HEADERS = avfilter.h \
avfiltergraph.h \ avfiltergraph.h \


+ 1
- 0
libavformat/Makefile View File

@@ -1,4 +1,5 @@
NAME = avformat NAME = avformat
DESC = Libav container format library


HEADERS = avformat.h \ HEADERS = avformat.h \
avio.h \ avio.h \


+ 1
- 0
libavresample/Makefile View File

@@ -1,4 +1,5 @@
NAME = avresample NAME = avresample
DESC = Libav audio resampling library


HEADERS = avresample.h \ HEADERS = avresample.h \
version.h \ version.h \


+ 1
- 0
libavutil/Makefile View File

@@ -1,4 +1,5 @@
NAME = avutil NAME = avutil
DESC = Libav utility library


HEADERS = adler32.h \ HEADERS = adler32.h \
aes.h \ aes.h \


+ 1
- 0
libswscale/Makefile View File

@@ -1,4 +1,5 @@
NAME = swscale NAME = swscale
DESC = Libav image rescaling library


HEADERS = swscale.h \ HEADERS = swscale.h \
version.h \ version.h \


Loading…
Cancel
Save