[FFmpeg-cvslog] build: create output directories as needed

Mans Rullgard git at videolan.org
Thu Jun 30 04:44:00 CEST 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Tue Jun 28 18:45:13 2011 +0100| [5e27ec28f0aa263fc6af60ea88677e2c40631920] | committer: Mans Rullgard

build: create output directories as needed

Signed-off-by: Mans Rullgard <mans at mansr.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5e27ec28f0aa263fc6af60ea88677e2c40631920
---

 Makefile     |    7 ++++++-
 common.mak   |    6 ++++++
 configure    |   31 +++++--------------------------
 doc/Makefile |    3 +++
 4 files changed, 20 insertions(+), 27 deletions(-)

diff --git a/Makefile b/Makefile
index 24a5951..3510a1e 100644
--- a/Makefile
+++ b/Makefile
@@ -122,9 +122,11 @@ alltools: $(TOOLS)
 tools/%$(EXESUF): tools/%.o
 	$(LD) $(FF_LDFLAGS) -o $@ $< $(FF_EXTRALIBS)
 
-tools/%.o: tools/%.c
+tools/%.o: tools/%.c | tools
 	$(CC) $(CPPFLAGS) $(CFLAGS) -c $(CC_O) $<
 
+OBJDIRS += tools
+
 -include $(wildcard tools/*.d)
 
 VERSION_SH  = $(SRC_PATH)/version.sh
@@ -185,6 +187,9 @@ check: test checkheaders
 include $(SRC_PATH)/doc/Makefile
 include $(SRC_PATH)/tests/Makefile
 
+$(sort $(OBJDIRS)):
+	$(Q)mkdir -p $@
+
 # Dummy rule to stop make trying to rebuild removed or renamed headers
 %.h:
 	@:
diff --git a/common.mak b/common.mak
index 19be4a6..bd21046 100644
--- a/common.mak
+++ b/common.mak
@@ -34,6 +34,12 @@ $(HOSTOBJS): %.o: %.c
 $(HOSTPROGS): %$(HOSTEXESUF): %.o
 	$(HOSTCC) $(HOSTLDFLAGS) -o $@ $< $(HOSTLIBS)
 
+$(OBJS):     | $(dir $(OBJS))
+$(HOSTOBJS): | $(dir $(HOSTOBJS))
+$(TESTOBJS): | $(dir $(TESTOBJS))
+
+OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOSTOBJS) $(TESTOBJS))
+
 CLEANSUFFIXES     = *.d *.o *~ *.ho *.map *.ver
 DISTCLEANSUFFIXES = *.pc
 LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp
diff --git a/configure b/configure
index f7112ea..a1cc59a 100755
--- a/configure
+++ b/configure
@@ -875,9 +875,9 @@ apply(){
 }
 
 cp_if_changed(){
-    cmp -s "$1" "$2" &&
-        echo "$2 is unchanged" ||
-        cp -f "$1" "$2"
+    cmp -s "$1" "$2" && echo "$2 is unchanged" && return
+    mkdir -p "$(dirname $2)"
+    cp -f "$1" "$2"
 }
 
 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
@@ -1675,10 +1675,8 @@ DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
 # find source path
 if test -f configure; then
     source_path=.
-    disable source_path_used
 else
     source_path=$(cd $(dirname "$0"); pwd)
-    enable source_path_used
     echo "$source_path" | grep -q '[[:blank:]]' &&
         die "Out of tree builds are impossible with whitespace in source path."
     test -e "$source_path/config.h" &&
@@ -3180,27 +3178,7 @@ echo "License: $license"
 
 echo "Creating config.mak and config.h..."
 
-# build tree in object directory if source path is different from current one
-if enabled source_path_used; then
-    DIRS="
-        doc
-        libavcodec
-        libavcodec/$arch
-        libavdevice
-        libavfilter
-        libavfilter/$arch
-        libavformat
-        libavutil
-        libavutil/$arch
-        libpostproc
-        libswscale
-        libswscale/$arch
-        tests
-        tools
-    "
-    map 'mkdir -p $v' $DIRS;
-    $ln_s "$source_path/Makefile" .
-fi
+test -e Makefile || $ln_s "$source_path/Makefile" .
 
 config_files="$TMPH config.mak"
 
@@ -3379,6 +3357,7 @@ version=$3
 libs=$4
 requires=$5
 enabled ${name#lib} || return 0
+mkdir -p $name
 cat <<EOF > $name/$name.pc
 prefix=$prefix
 exec_prefix=\${prefix}
diff --git a/doc/Makefile b/doc/Makefile
index da46cce..01960b7 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -24,6 +24,9 @@ doc/%.1: TAG = MAN
 doc/%.1: doc/%.pod
 	$(M)pod2man --section=1 --center=" " --release=" " $< > $@
 
+$(DOCS): | doc
+OBJDIRS += doc
+
 install-progs-$(CONFIG_DOC): install-man
 
 install-man: $(MANPAGES)



More information about the ffmpeg-cvslog mailing list