[FFmpeg-devel] [PATCH] configure, fftools/Makefile: Copy .pdb files to bindir for MSVC builds for make install
Aaron Levinson
alevinsn_dev at levland.net
Thu Nov 9 20:51:37 EET 2017
Ping
On 10/31/2017 11:05 AM, Aaron Levinson wrote:
> When ffmpeg is built using MSVC, symbols are stored separately from
> executables and libraries in .pdb files. However, unlike with
> gcc-based builds, when make install is invoked, symbols, in the form
> of .pdb files, which are important for debugging, are not copied to
> bindir. This change corrects this deficiency for MSVC builds. Files
> are also uninstalled appropriately when make uninstall is exercised.
>
> Note: General idea for how to properly handle the copying of PDB files
> associated with programs suggested by Hendrik Leppkes.
>
> Comments:
>
> -- configure:
> a) Leverage already existing SLIB_INSTALL_EXTRA_SHLIB facility (which
> is already pretty specific to Windows) to add .pdb files, in
> addition to .lib files, for shared libraries to bindir during make
> install.
> b) Add PROG_INSTALL_EXTRA_BIN variable for MSVC builds and also add it
> to the section that causes it to be added to config.mak. This is
> used in Makefile to copy any additional files associated with
> programs. For MSVC, it is used to copy the pdb files associated
> with any executables that are built. Note that such executables
> are build with _g in the file name and are later copied to a
> filename without _g in the file name. As such, the PDB files have
> _g in the file name.
>
> -- fftools/Makefile: Enhance install-progs and uninstall-progs targets
> to handle PROG_INSTALL_EXTRA_BIN if defined. It uses a similar
> procedure as already in place for SLIB_INSTALL_EXTRA_SHLIB in
> library.mak.
>
> Signed-off-by: Aaron Levinson <alevinsn_dev at levland.net>
> ---
> configure | 4 +++-
> fftools/Makefile | 2 ++
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/configure b/configure
> index 2ac6fed98a..feb86b2069 100755
> --- a/configure
> +++ b/configure
> @@ -5101,9 +5101,10 @@ case $target_os in
> SLIB_CREATE_DEF_CMD='$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
> SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
> SLIB_INSTALL_LINKS=
> - SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
> + SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.pdb)'
> SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
> SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
> + PROG_INSTALL_EXTRA_BIN='$(AVPROGS-yes:%=%$(PROGSSUF)_g.pdb)'
> enabled x86_64 && objformat="win64" || objformat="win32"
> ranlib=:
> enable dos_paths
> @@ -7034,6 +7035,7 @@ SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
> SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
> SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
> SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
> +PROG_INSTALL_EXTRA_BIN=${PROG_INSTALL_EXTRA_BIN}
> VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
> SAMPLES:=${samples:-\$(FATE_SAMPLES)}
> NOREDZONE_FLAGS=$noredzone_flags
> diff --git a/fftools/Makefile b/fftools/Makefile
> index c867814a71..8c121b9762 100644
> --- a/fftools/Makefile
> +++ b/fftools/Makefile
> @@ -47,11 +47,13 @@ install-progs-$(CONFIG_SHARED): install-libs
> install-progs: install-progs-yes $(AVPROGS)
> $(Q)mkdir -p "$(BINDIR)"
> $(INSTALL) -c -m 755 $(AVPROGS) "$(BINDIR)"
> + $(if $(PROG_INSTALL_EXTRA_BIN), $(INSTALL) -m 644 $(PROG_INSTALL_EXTRA_BIN) "$(BINDIR)")
>
> uninstall: uninstall-progs
>
> uninstall-progs:
> $(RM) $(addprefix "$(BINDIR)/", $(ALLAVPROGS))
> + $(if $(PROG_INSTALL_EXTRA_BIN), $(RM) $(addprefix "$(BINDIR)/", $(PROG_INSTALL_EXTRA_BIN)))
>
> clean::
> $(RM) $(ALLAVPROGS) $(ALLAVPROGS_G) $(CLEANSUFFIXES:%=fftools/%)
>
More information about the ffmpeg-devel
mailing list