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: 449tags/n3.4
| @@ -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_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) > $$@ | ||||
| @@ -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(){ | |||||
| 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,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 \ | ||||