[FFmpeg-devel] [PATCH] build: make out-of-tree builds bit-identical to in-tree builds

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Fri Jan 15 01:13:25 CET 2016


On 28.12.2015 22:12, Andreas Cadhalpun wrote:
> Previously the full source path was embedded inconsistently in the debug
> information between in-tree/out-of-tree builds.
> 
> The 'vpath %.inc' becomes necessary for finding
> libavfilter/all_channel_layouts.inc in out-of-tree builds.
> 
> The full source path is still embedded in the debug information, but
> it's now independent of whether building in-tree or out-of-tree.
> 
> The biggest improvement of this patch is that gdb now always searches
> for the path relative to the source directory. It still also searches
> for the full path.
> Previously it searched only for the full path in out-of-tree builds,
> making the debug information generated by Debian's buildds rather hard
> to use.
> 
> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
> ---
>  Makefile    | 1 +
>  common.mak  | 6 +++---
>  configure   | 1 +
>  library.mak | 2 +-
>  4 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 7836a20..f3bd5f6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -4,6 +4,7 @@ include config.mak
>  vpath %.c    $(SRC_PATH)
>  vpath %.cpp  $(SRC_PATH)
>  vpath %.h    $(SRC_PATH)
> +vpath %.inc  $(SRC_PATH)
>  vpath %.m    $(SRC_PATH)
>  vpath %.S    $(SRC_PATH)
>  vpath %.asm  $(SRC_PATH)
> diff --git a/common.mak b/common.mak
> index c3a8b93..bad2627 100644
> --- a/common.mak
> +++ b/common.mak
> @@ -32,7 +32,7 @@ endif
>  ALLFFLIBS = avcodec avdevice avfilter avformat avresample avutil postproc swscale swresample
>  
>  # NASM requires -I path terminated with /
> -IFLAGS     := -I. -I$(SRC_PATH)/
> +IFLAGS     := -I$(DST_PATH)/ -I$(SRC_PATH)/
>  CPPFLAGS   := $(IFLAGS) $(CPPFLAGS)
>  CFLAGS     += $(ECFLAGS)
>  CCFLAGS     = $(CPPFLAGS) $(CFLAGS)
> @@ -43,11 +43,11 @@ CXXFLAGS   += $(CPPFLAGS) $(CFLAGS)
>  YASMFLAGS  += $(IFLAGS:%=%/) -Pconfig.asm
>  
>  HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS)
> -LDFLAGS    := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS)
> +LDFLAGS    := $(ALLFFLIBS:%=$(LD_PATH)$(DST_PATH)/lib%) $(LDFLAGS)
>  
>  define COMPILE
>         $(call $(1)DEP,$(1))
> -       $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $<
> +       $(Q)cd $(SRC_PATH); $(subst @,,$($(1))) $($(1)FLAGS) $($(1)_DEPFLAGS:$(@:.o=.d)=$(DST_PATH)/$(@:.o=.d)) $($(1)_C) $($(1)_O:$@=$(DST_PATH)/$@) $(subst $(SRC_PATH)/,,$<)
>  endef
>  
>  COMPILE_C = $(call COMPILE,CC)
> diff --git a/configure b/configure
> index a510e8f..f604edd 100755
> --- a/configure
> +++ b/configure
> @@ -6205,6 +6205,7 @@ SRC_PATH=$source_path
>  ifndef MAIN_MAKEFILE
>  SRC_PATH:=\$(SRC_PATH:.%=..%)
>  endif
> +DST_PATH=$(pwd)
>  CC_IDENT=$cc_ident
>  ARCH=$arch
>  INTRINSICS=$intrinsics
> diff --git a/library.mak b/library.mak
> index 6f95f63..0b23a28 100644
> --- a/library.mak
> +++ b/library.mak
> @@ -28,7 +28,7 @@ $(SUBDIR)x86/%$(DEFAULT_YASMD).asm: $(SUBDIR)x86/%.asm
>  
>  $(SUBDIR)x86/%.o: $(SUBDIR)x86/%$(YASMD).asm
>  	$(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
> -	$(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $<
> +	$(Q)cd $(SRC_PATH); $(subst @,,$(YASM)) $(YASMFLAGS) -I $(<D)/ -o $(DST_PATH)/$@ $(subst $(SRC_PATH)/,,$<)
>  	-$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@)
>  
>  LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)
> 

Ping.

Best regards,
Andreas


More information about the ffmpeg-devel mailing list