aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2015-12-28 22:00:39 +0100
committerAndreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>2016-01-22 00:30:59 +0100
commit064963bd2702509afee2d2a4ed4eb4b4fd69d9c7 (patch)
treef9055bb119b654d93d8044b11879015b0c6bb71e
parent509c9e74e548139285f30ed8dcc9baf1d64359fa (diff)
downloadffmpeg-064963bd2702509afee2d2a4ed4eb4b4fd69d9c7.tar.gz
build: make out-of-tree builds bit-identical to in-tree builds
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. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
-rw-r--r--Makefile1
-rw-r--r--common.mak6
-rwxr-xr-xconfigure1
-rw-r--r--library.mak2
4 files changed, 6 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 7836a20f87..f3bd5f682d 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 c3a8b93095..bad262747d 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 ef5a71289c..8f4642b898 100755
--- a/configure
+++ b/configure
@@ -6251,6 +6251,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 6f95f63410..0b23a28f5b 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)