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