diff --git a/Makefile b/Makefile
index 6495d90578580755f71d10290a2dbd51d87e6c41..a2b20785f95be0351f9bac7587e5b25827ab9b0b 100755
--- a/Makefile
+++ b/Makefile
@@ -123,7 +123,7 @@ _all: all
 	@echo " +               $(MAKE) install                +"  
 	@echo " +-------------------------------------------+"  
 
-all: asterisk subdirs
+all: depend asterisk subdirs
 
 editline/config.h:
 	@if [ -d editline ]; then \
@@ -144,6 +144,8 @@ db1-ast/libdb1.a:
 		exit 1; \
 	fi
 
+include .depend
+
 _version: 
 	if [ -d CVS ] && ! [ -f .version ]; then echo "CVS-`date +"%D-%T"`" > .version; fi 
 
@@ -174,7 +176,7 @@ subdirs:
 
 clean:
 	for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
-	rm -f *.o *.so asterisk
+	rm -f *.o *.so asterisk .depend
 	rm -f build.h 
 	rm -f ast_expr.c
 	@if [ -e editline/Makefile ]; then $(MAKE) -C editline clean ; fi
@@ -361,3 +363,10 @@ dont-optimize:
 	$(MAKE) OPTIMIZE= K6OPT= install
 
 valgrind: dont-optimize
+
+depend: .depend
+	for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
+
+.depend:
+	./mkdep ${CFLAGS} `ls *.c`
+
diff --git a/agi/Makefile b/agi/Makefile
index bb12d1597b5e59fcd1f87362152bb4e2458f0d06..c1b35de443fb0615f8647558e680db370b449ef5 100755
--- a/agi/Makefile
+++ b/agi/Makefile
@@ -15,7 +15,7 @@ AGIS=agi-test.agi eagi-test eagi-sphinx-test
 
 CFLAGS+=
 
-all: $(AGIS)
+all: depend $(AGIS)
 
 install: all
 	for x in $(AGIS); do $(INSTALL) -m 755 $$x $(AGI_DIR) ; done
@@ -27,7 +27,14 @@ eagi-sphinx-test: eagi-sphinx-test.o
 	$(CC) -o eagi-sphinx-test eagi-sphinx-test.o
 
 clean:
-	rm -f *.so *.o look
+	rm -f *.so *.o look .depend
 
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
+
+include .depend
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
diff --git a/astman/Makefile b/astman/Makefile
index 9698d62806c5c88186424840cb2ecd43cba11f87..7b9d20f6ff07f52650222f56e16ae09f0ca69904 100755
--- a/astman/Makefile
+++ b/astman/Makefile
@@ -3,7 +3,7 @@
 #
 CFLAGS+=-DNO_AST_MM
 TARGET=$(shell if [ -f /usr/include/newt.h ]; then echo "astman"; else echo "none" ; fi)
-all: $(TARGET)
+all: depend $(TARGET)
 
 install:
 	if [ "$(TARGET)" != "none" ]; then \
@@ -16,7 +16,15 @@ none:
 	@echo Not building the Asterisk Manager "astman"
 
 clean:
-	rm -f *.o astman
+	rm -f *.o astman .depend
 
 astman: astman.o ../md5.o
 	$(CC) -o astman astman.o ../md5.o -lnewt
+
+include .depend
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
+
diff --git a/cdr/Makefile b/cdr/Makefile
index 8f05678dd6900d672a8a32b952ae0a00dfbbfef8..66c7e07a8143871bae83c4b6d87cdd5060e29257 100755
--- a/cdr/Makefile
+++ b/cdr/Makefile
@@ -29,16 +29,23 @@ MLFLAGS+=$(shell if [ -d /usr/local/mysql/lib ]; then echo "-L/usr/local/mysql/l
 MLFLAGS+=$(shell if [ -d /usr/local/lib/mysql ]; then echo "-L/usr/local/lib/mysql"; fi)
 MLFLAGS+=$(shell if [ -d /opt/mysql/lib/mysql ]; then echo "-L/opt/mysql/lib/mysql"; fi)
 
-all: $(MODS)
+all: depend $(MODS)
 
 install: all
 	for x in $(MODS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
 
+include .depend
+
 cdr_mysql.so: cdr_mysql.o
 	$(CC) -shared -Xlinker -x -o $@ $< -lmysqlclient -lz $(MLFLAGS)
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
diff --git a/channels/Makefile b/channels/Makefile
index 5b055703b457d149c813f9a579c86cafb8abd077..fb018962dae8330b5e3b2cc504df1c3054d0c85c 100755
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -55,15 +55,17 @@ CHANNEL_LIBS+=$(shell [ -f /usr/include/nbs.h ] && echo "chan_nbs.so" )
 
 #CFLAGS+=$(shell [ -f $(ZAPDIR)/libzap.a ] && echo "-I$(ZAPDIR)")
 
-all: $(CHANNEL_LIBS) 
+all: depend $(CHANNEL_LIBS) 
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 	rm -f busy.h ringtone.h gentone gentone-ulaw
 
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
 
+include .depend
+
 gentone: gentone.c
 	$(CC) -o gentone gentone.c -lm
 
@@ -111,3 +113,9 @@ chan_vpb.so: chan_vpb.o
 
 install: all
 	for x in $(CHANNEL_LIBS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
+
diff --git a/codecs/Makefile b/codecs/Makefile
index 6341395d3a9d9a62841f5ed432539bcf290c8ad3..ac812972cf50f6fb82f46753c7b760dcf09593b1 100755
--- a/codecs/Makefile
+++ b/codecs/Makefile
@@ -36,10 +36,10 @@ LIBILBC=ilbc/libilbc.a
 CODECS+=$(MODG723) $(MODSPEEX) $(MODILBC) codec_gsm.so codec_mp3_d.so codec_lpc10.so  \
         codec_adpcm.so codec_ulaw.so codec_alaw.so codec_a_mu.so
 
-all: $(CODECS)
+all: depend $(CODECS)
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 	! [ -d g723.1 ] || $(MAKE) -C g723.1 clean
 	! [ -d g723.1b ] || $(MAKE) -C g723.1b clean
 	$(MAKE) -C gsm clean
@@ -92,5 +92,12 @@ codec_mp3_d.so: codec_mp3_d.o $(LIBMP3)
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
 
+include .depend
+
 install: all
 	for x in $(CODECS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
diff --git a/formats/Makefile b/formats/Makefile
index 0cc2cb41f5b4e8f93b9eb6ef830ff1951e355e66..8854694633e0b91dfdf2db1bdb4a421270d00c4c 100755
--- a/formats/Makefile
+++ b/formats/Makefile
@@ -19,16 +19,23 @@ GSMLIB=../codecs/gsm/lib/libgsm.a
 
 CFLAGS+=-fPIC
 
-all: $(FORMAT_LIBS)
+all: depend $(FORMAT_LIBS)
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
 
+include .depend
+
 format_mp3.so : format_mp3.o
 	$(CC) -shared -Xlinker -x -o $@ $< -lm
 
 install: all
 	for x in $(FORMAT_LIBS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
diff --git a/pbx.c b/pbx.c
index 38a2865b18743a7e493b074ca2eaec856e2e3110..5e06c2b70634576ff85769d6ef523a4a8620de93 100755
--- a/pbx.c
+++ b/pbx.c
@@ -786,7 +786,7 @@ static void pbx_substitute_variables_temp(struct ast_channel *c,const char *var,
 			ast_shrink_phone_number(num);
 			*ret = num;
 		} else
-			*ret = "";
+			*ret = workspace;
 	} else if (!strcmp(var, "CALLERIDNAME")) {
 		if (c->callerid)
 			strncpy(workspace, c->callerid, workspacelen - 1);
@@ -794,7 +794,7 @@ static void pbx_substitute_variables_temp(struct ast_channel *c,const char *var,
 		if (name)
 			*ret = name;
 		else
-			*ret = "";
+			*ret = workspace;
 	} else if (!strcmp(var, "CALLERID")) {
 		if (c->callerid) {
 			strncpy(workspace, c->callerid, workspacelen - 1);
diff --git a/pbx/Makefile b/pbx/Makefile
index 27d3554195b94cda597a188b3b360dd41607bc6c..502fee1111776611bba015378220e8d3cdbbe144 100755
--- a/pbx/Makefile
+++ b/pbx/Makefile
@@ -31,10 +31,10 @@ CFLAGS+=-fPIC
 
 KDE_CONSOLE_OBJS=pbx_kdeconsole_main.o pbx_kdeconsole.o 
 
-all: $(PBX_LIBS)
+all: depend $(PBX_LIBS)
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 
 pbx_gtkconsole.o: pbx_gtkconsole.c
 	$(CC) $(CFLAGS) $(GTK_FLAGS) -c -o $@ $<
@@ -57,5 +57,12 @@ pbx_kdeconsole.so: $(KDE_CONSOLE_OBJS)
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
 
+include .depend
+
 install: all
 	for x in $(PBX_LIBS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`
diff --git a/res/Makefile b/res/Makefile
index e5f6d7c37c28a2e9ca0b2a6b8649269de547e57e..136c54b88bbe4e9a0cc57bcda5d1e46e2fe962ec 100755
--- a/res/Makefile
+++ b/res/Makefile
@@ -22,7 +22,7 @@ CFLAGS+=$(shell [ -f /usr/include/linux/zaptel.h ] && echo " -DZAPATA_MOH")
 #
 CFLAGS+=-DOPENSSL_NO_KRB5 -fPIC
 
-all: $(MODS)
+all: depend $(MODS)
 
 install: all
 	for x in $(MODS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
@@ -31,7 +31,14 @@ res_crypto.so: res_crypto.o
 	$(CC) -shared -Xlinker -x -o $@ $< $(CRYPTO_LIBS)
 
 clean:
-	rm -f *.so *.o
+	rm -f *.so *.o .depend
 
 %.so : %.o
 	$(CC) -shared -Xlinker -x -o $@ $<
+
+include .depend
+
+depend: .depend
+
+.depend:
+	../mkdep $(CFLAGS) `ls *.c`