diff --git a/.gitignore b/.gitignore index 93b0dca40ac4a8fb74e1efb3418a821bd5e100b6..9fc0ac269cfa68787fe3baa85c11ae3f67c2e8da 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ /libavcodec/*_tables.h /libavutil/avconfig.h /libavutil/ffversion.h +/src /tests/audiogen /tests/base64 /tests/checkasm/checkasm diff --git a/Makefile b/Makefile index f3bd5f682defffdf4ac44e8be3a645ccb0def33f..e484249065c8eae2cd1d219528a9f0b8e5bdc084 100644 --- a/Makefile +++ b/Makefile @@ -181,7 +181,7 @@ clean:: distclean:: $(RM) $(DISTCLEANSUFFIXES) - $(RM) config.* .config libavutil/avconfig.h .version avversion.h version.h libavutil/ffversion.h libavcodec/codec_names.h + $(RM) config.* .config libavutil/avconfig.h .version avversion.h version.h libavutil/ffversion.h libavcodec/codec_names.h src $(RM) -rf doc/examples/pc-uninstalled config: diff --git a/common.mak b/common.mak index 3812149ef5629ad5032a08d843e5303e5bf3b41d..03b51c59688479f175fbb4b5098903b92b603ac2 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$(DST_PATH)/ -I$(SRC_PATH)/ +IFLAGS := -I. -I$(SRC_LINK)/ CPPFLAGS := $(IFLAGS) $(CPPFLAGS) CFLAGS += $(ECFLAGS) CCFLAGS = $(CPPFLAGS) $(CFLAGS) @@ -43,12 +43,11 @@ CXXFLAGS += $(CPPFLAGS) $(CFLAGS) YASMFLAGS += $(IFLAGS:%=%/) -Pconfig.asm HOSTCCFLAGS = $(IFLAGS) $(HOSTCPPFLAGS) $(HOSTCFLAGS) -LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)$(DST_PATH)/lib%) $(LDFLAGS) +LDFLAGS := $(ALLFFLIBS:%=$(LD_PATH)lib%) $(LDFLAGS) define COMPILE $(call $(1)DEP,$(1)) - $(Q)cd $(SRC_PATH); if [ -n "$(findstring $(SRC_PATH),$<)" ]; then dest=$(subst $(SRC_PATH)/,,$<); else dest=$(DST_PATH)/$<; fi; \ - $(subst @,,$($(1))) $($(1)FLAGS) $($(1)_DEPFLAGS:$(@:.o=.d)=$(DST_PATH)/$(@:.o=.d)) $($(1)_C) $($(1)_O:$@=$(DST_PATH)/$@) $$dest + $($(1)) $($(1)FLAGS) $($(1)_DEPFLAGS) $($(1)_C) $($(1)_O) $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) endef COMPILE_C = $(call COMPILE,CC) diff --git a/configure b/configure index 0685133975ae89f157f31eb2cd88e2b0ffc436f8..57b526fce9b232920a0072cf8e8dfc75c434b0d1 100755 --- a/configure +++ b/configure @@ -4696,6 +4696,26 @@ case $target_os in ;; esac +# test if creating links works +link_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX) +link_name=$(mktemp -u $TMPDIR/name_XXXXXXXX) +mkdir "$link_dest" +$ln_s "$link_dest" "$link_name" +touch "$link_dest/test_file" +if [ -e "$link_name/test_file" ]; then + # create link to source path + [ -e src ] && rm src + $ln_s "$source_path" src + source_link=src +else + # creating directory links doesn't work + # fall back to using the full source path + source_link="$source_path" +fi +# cleanup +rm -r "$link_dest" +rm -r "$link_name" + # determine libc flavour probe_libc(){ @@ -6229,12 +6249,6 @@ enabled stripping || strip="echo skipping strip" config_files="$TMPH config.mak doc/config.texi" -if enabled msvc; then - dst_path=$(pwd -W) -else - dst_path=$(pwd) -fi - cat > config.mak <<EOF # Automatically generated by configure - do not modify! ifndef FFMPEG_CONFIG_MAK @@ -6250,10 +6264,10 @@ DOCDIR=\$(DESTDIR)$docdir MANDIR=\$(DESTDIR)$mandir PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir SRC_PATH=$source_path +SRC_LINK=$source_link ifndef MAIN_MAKEFILE SRC_PATH:=\$(SRC_PATH:.%=..%) endif -DST_PATH=$dst_path CC_IDENT=$cc_ident ARCH=$arch INTRINSICS=$intrinsics diff --git a/library.mak b/library.mak index 0b23a28f5bd4781dd65296bba1ed0d763b52b88c..3e1082c57250934c2e698b9fb3b98ea3a2648b12 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) - $(Q)cd $(SRC_PATH); $(subst @,,$(YASM)) $(YASMFLAGS) -I $(<D)/ -o $(DST_PATH)/$@ $(subst $(SRC_PATH)/,,$<) + $(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $(patsubst $(SRC_PATH)/%,$(SRC_LINK)/%,$<) -$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@) LIBOBJS := $(OBJS) $(SUBDIR)%.h.o $(TESTOBJS)