[x264-devel] [PATCH] build: Generate dependency information as a side-effect of compilation
Diego Biurrun
diego at biurrun.de
Sat May 3 16:30:31 CEST 2014
This allows updating dependency information each time a file is changed,
instead of creating dependency information once at the first build. In the
latter case, dependency information is not updated each time a file is
changed so that it can get out of date quickly.
---
This could still use some testing on ARM and ICL.
.gitignore | 2 +-
Makefile | 27 +++++++++++----------------
configure | 8 ++------
3 files changed, 14 insertions(+), 23 deletions(-)
diff --git a/.gitignore b/.gitignore
index 0ff9fed..4cf8134 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
*~
*.a
+*.d
*.diff
*.orig
*.rej
@@ -16,7 +17,6 @@
*.so*
*.dylib
.*.swp
-.depend
.DS_Store
config.h
config.mak
diff --git a/Makefile b/Makefile
index 3b64bb6..b9d95dc 100644
--- a/Makefile
+++ b/Makefile
@@ -140,12 +140,12 @@ cli: x264$(EXE)
lib-static: $(LIBX264)
lib-shared: $(SONAME)
-$(LIBX264): $(GENERATED) .depend $(OBJS) $(OBJASM)
+$(LIBX264): $(GENERATED) $(OBJS) $(OBJASM)
rm -f $(LIBX264)
$(AR)$@ $(OBJS) $(OBJASM)
$(if $(RANLIB), $(RANLIB) $@)
-$(SONAME): $(GENERATED) .depend $(OBJS) $(OBJASM) $(OBJSO)
+$(SONAME): $(GENERATED) $(OBJS) $(OBJASM) $(OBJSO)
$(LD)$@ $(OBJS) $(OBJASM) $(OBJSO) $(SOFLAGS) $(LDFLAGS)
ifneq ($(EXE),)
@@ -154,15 +154,14 @@ x264: x264$(EXE)
checkasm: checkasm$(EXE)
endif
-x264$(EXE): $(GENERATED) .depend $(OBJCLI) $(CLI_LIBX264)
+x264$(EXE): $(GENERATED) $(OBJCLI) $(CLI_LIBX264)
$(LD)$@ $(OBJCLI) $(CLI_LIBX264) $(LDFLAGSCLI) $(LDFLAGS)
-checkasm$(EXE): $(GENERATED) .depend $(OBJCHK) $(LIBX264)
+checkasm$(EXE): $(GENERATED) $(OBJCHK) $(LIBX264)
$(LD)$@ $(OBJCHK) $(LIBX264) $(LDFLAGS)
-$(OBJS) $(OBJASM) $(OBJSO) $(OBJCLI) $(OBJCHK): .depend
-
%.o: %.asm
+ $(AS) $(ASFLAGS) -M -o $@ $< > $(@:.o=.d)
$(AS) $(ASFLAGS) -o $@ $<
-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile
@@ -176,17 +175,13 @@ $(OBJS) $(OBJASM) $(OBJSO) $(OBJCLI) $(OBJCHK): .depend
%.o: %.rc x264.h
$(RC) $(RCFLAGS)$@ $<
-.depend: config.mak
- @rm -f .depend
- @$(foreach SRC, $(addprefix $(SRCPATH)/, $(SRCS) $(SRCCLI) $(SRCSO)), $(CC) $(CFLAGS) $(SRC) $(DEPMT) $(SRC:$(SRCPATH)/%.c=%.o) $(DEPMM) 1>> .depend;)
-
config.mak:
./configure
-depend: .depend
-ifneq ($(wildcard .depend),)
-include .depend
-endif
+ALLOBJS = $(OBJS) $(OBJASM) $(OBJSO) $(OBJCLI) $(OBJCHK)
+ALLDEPS = $(ALLOBJS:.o=.d)
+
+-include $(ALLDEPS)
SRC2 = $(SRCS) $(SRCCLI)
# These should cover most of the important codepaths
@@ -215,8 +210,8 @@ fprofiled:
endif
clean:
- rm -f $(OBJS) $(OBJASM) $(OBJCLI) $(OBJSO) $(SONAME) *.a *.lib *.exp *.pdb x264 x264.exe .depend TAGS
- rm -f checkasm checkasm.exe $(OBJCHK) $(GENERATED) x264_lookahead.clbin
+ rm -f $(ALLOBJS) $(ALLDEPS) $(SONAME) *.a *.lib *.exp *.pdb x264 x264.exe TAGS
+ rm -f checkasm checkasm.exe $(GENERATED) x264_lookahead.clbin
rm -f $(SRC2:%.c=%.gcda) $(SRC2:%.c=%.gcno) *.dyn pgopti.dpi pgopti.dpi.lock
distclean: clean
diff --git a/configure b/configure
index b7b3ef9..4225da0 100755
--- a/configure
+++ b/configure
@@ -1092,8 +1092,7 @@ done
if [ $compiler = ICL ]; then
AR="xilib -nologo -out:"
- DEPMM=-QMM
- DEPMT=-QMT
+ CFLAGS="-QMMD $CFLAGS"
HAVE_GETOPT_LONG=0
LD="xilink -out:"
LDFLAGS="-nologo -incremental:no $(icl_ldflags $LDFLAGS)"
@@ -1110,8 +1109,7 @@ if [ $compiler = ICL ]; then
fi
else
AR="$AR rc "
- DEPMM="-MM -g0"
- DEPMT="-MT"
+ CFLAGS="-MMD $CFLAGS"
LD="$CC -o "
LIBX264=libx264.a
[ -n "$RC" ] && RCFLAGS="$RCFLAGS -I. -o "
@@ -1157,8 +1155,6 @@ ARCH=$ARCH
SYS=$SYS
CC=$CC
CFLAGS=$CFLAGS
-DEPMM=$DEPMM
-DEPMT=$DEPMT
LD=$LD
LDFLAGS=$LDFLAGS
LIBX264=$LIBX264
--
1.8.3.2
More information about the x264-devel
mailing list