From b5bcecce5db423b74a1cbb712abff0df9e8a48a3 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Sat, 25 Oct 2003 17:27:53 +0000
Subject: [PATCH] Add DESTDIR support (bug #200)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1664 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 Makefile          | 136 ++++++++++++++++++++++++----------------------
 agi/Makefile      |   3 +-
 apps/Makefile     |   2 +-
 astman/Makefile   |   2 +-
 cdr/Makefile      |   2 +-
 channels/Makefile |   2 +-
 codecs/Makefile   |   2 +-
 formats/Makefile  |   2 +-
 pbx/Makefile      |   2 +-
 res/Makefile      |   2 +-
 10 files changed, 81 insertions(+), 74 deletions(-)

diff --git a/Makefile b/Makefile
index f429c25c93..a0c5e64048 100755
--- a/Makefile
+++ b/Makefile
@@ -66,6 +66,12 @@ MALLOC_DEBUG = #-include $(PWD)/include/asterisk/astmm.h
 # Default -> leave empty
 INSTALL_PREFIX=
 
+# Staging directory
+# Files are copied here temporarily during the install process
+# For example, make DESTDIR=/tmp/asterisk woud put things in
+# /tmp/asterisk/etc/asterisk
+DESTDIR=
+
 # Original busydetect routine
 BUSYDETECT = #-DBUSYDETECT
 
@@ -233,10 +239,10 @@ clean:
 	$(MAKE) -C stdtime clean
 
 datafiles: all
-	mkdir -p $(ASTVARLIBDIR)/sounds/digits
+	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits
 	for x in sounds/digits/*.gsm; do \
 		if grep -q "^%`basename $$x`%" sounds.txt; then \
-			install $$x $(ASTVARLIBDIR)/sounds/digits ; \
+			install $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits ; \
 		else \
 			echo "No description for $$x"; \
 			exit 1; \
@@ -244,18 +250,18 @@ datafiles: all
 	done
 	for x in sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-*; do \
 		if grep -q "^%`basename $$x`%" sounds.txt; then \
-			install $$x $(ASTVARLIBDIR)/sounds ; \
+			install $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
 		else \
 			echo "No description for $$x"; \
 			exit 1; \
 		fi; \
 	done
-	mkdir -p $(ASTVARLIBDIR)/mohmp3
-	mkdir -p $(ASTVARLIBDIR)/images
+	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/mohmp3
+	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/images
 	for x in images/*.jpg; do \
-		install $$x $(ASTVARLIBDIR)/images ; \
+		install $$x $(DESTDIR)$(ASTVARLIBDIR)/images ; \
 	done
-	mkdir -p $(AGI_DIR)
+	mkdir -p $(DESTDIR)$(AGI_DIR)
 
 update: 
 	@if [ -d CVS ]; then \
@@ -267,37 +273,37 @@ update:
 	fi
 
 bininstall: all
-	mkdir -p $(MODULES_DIR)
-	mkdir -p $(ASTSBINDIR)
-	mkdir -p $(ASTETCDIR)
-	mkdir -p $(ASTBINDIR)
-	mkdir -p $(ASTSBINDIR)
-	mkdir -p $(ASTVARRUNDIR)
-	mkdir -p $(ASTSPOOLDIR)/voicemail
-	install -m 755 asterisk $(ASTSBINDIR)/
-	install -m 755 astgenkey $(ASTSBINDIR)/
-	install -m 755 safe_asterisk $(ASTSBINDIR)/
+	mkdir -p $(DESTDIR)$(MODULES_DIR)
+	mkdir -p $(DESTDIR)$(ASTSBINDIR)
+	mkdir -p $(DESTDIR)$(ASTETCDIR)
+	mkdir -p $(DESTDIR)$(ASTBINDIR)
+	mkdir -p $(DESTDIR)$(ASTSBINDIR)
+	mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
+	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
+	install -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/
+	install -m 755 astgenkey $(DESTDIR)$(ASTSBINDIR)/
+	install -m 755 safe_asterisk $(DESTDIR)$(ASTSBINDIR)/
 	for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
-	install -d $(ASTHEADERDIR)
-	install include/asterisk/*.h $(ASTHEADERDIR)
-	rm -f $(ASTVARLIBDIR)/sounds/vm
-	rm -f $(ASTVARLIBDIR)/sounds/voicemail
-	if [ ! -h $(ASTSPOOLDIR)/vm ] && [ -d $(ASTSPOOLDIR)/vm ]; then \
-		mv $(ASTSPOOLDIR)/vm $(ASTSPOOLDIR)/voicemail/default; \
+	install -d $(DESTDIR)$(ASTHEADERDIR)
+	install include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
+	rm -f $(DESTDIR)$(ASTVARLIBDIR)/sounds/vm
+	rm -f $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail
+	if [ ! -h $(DESTDIR)$(ASTSPOOLDIR)/vm ] && [ -d $(DESTDIR)$(ASTSPOOLDIR)/vm ]; then \
+		mv $(DESTDIR)$(ASTSPOOLDIR)/vm $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default; \
 	else \
-		mkdir -p $(ASTSPOOLDIR)/voicemail/default; \
-		rm -f $(ASTSPOOLDIR)/vm; \
+		mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default; \
+		rm -f $(DESTDIR)$(ASTSPOOLDIR)/vm; \
 	fi
-	ln -s $(ASTSPOOLDIR)/voicemail/default $(ASTSPOOLDIR)/vm
-	rm -f $(MODULES_DIR)/chan_ixj.so
-	rm -f $(MODULES_DIR)/chan_tor.so
-	rm -f $(MODULES_DIR)/cdr_mysql.so
-	mkdir -p $(ASTVARLIBDIR)/sounds
-	mkdir -p $(ASTLOGDIR)/cdr-csv
-	mkdir -p $(ASTVARLIBDIR)/keys
-	install -m 644 keys/iaxtel.pub $(ASTVARLIBDIR)/keys
-	( cd $(ASTVARLIBDIR)/sounds  ; ln -s $(ASTSPOOLDIR)/vm . )
-	( cd $(ASTVARLIBDIR)/sounds  ; ln -s $(ASTSPOOLDIR)/voicemail . )
+	ln -s $(ASTSPOOLDIR)/voicemail/default $(DESTDIR)$(ASTSPOOLDIR)/vm
+	rm -f $(DESTDIR)$(MODULES_DIR)/chan_ixj.so
+	rm -f $(DESTDIR)$(MODULES_DIR)/chan_tor.so
+	rm -f $(DESTDIR)$(MODULES_DIR)/cdr_mysql.so
+	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds
+	mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
+	mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/keys
+	install -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTVARLIBDIR)/keys
+	( cd $(DESTDIR)$(ASTVARLIBDIR)/sounds  ; ln -s $(ASTSPOOLDIR)/vm . )
+	( cd $(DESTDIR)$(ASTVARLIBDIR)/sounds  ; ln -s $(ASTSPOOLDIR)/voicemail . )
 	@echo " +---- Asterisk Installation Complete -------+"  
 	@echo " +                                           +"
 	@echo " +    YOU MUST READ THE SECURITY DOCUMENT    +"
@@ -325,58 +331,58 @@ install: all datafiles bininstall
 upgrade: all bininstall
 
 adsi: all
-	mkdir -p $(ASTETCDIR)
+	mkdir -p $(DESTDIR)$(ASTETCDIR)
 	for x in configs/*.adsi; do \
-		if ! [ -f $(ASTETCDIRX)/$$x ]; then \
-			install -m 644 $$x $(ASTETCDIR)/`basename $$x` ; \
+		if ! [ -f $(DESTDIR)$(ASTETCDIRX)/$$x ]; then \
+			install -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x` ; \
 		fi ; \
 	done
 
 samples: all datafiles adsi
-	mkdir -p $(ASTETCDIR)
+	mkdir -p $(DESTDIR)$(ASTETCDIR)
 	for x in configs/*.sample; do \
-		if [ -f $(ASTETCDIR)/`basename $$x .sample` ]; then \
-			mv -f $(ASTETCDIR)/`basename $$x .sample` $(ASTETCDIR)/`basename $$x .sample`.old ; \
+		if [ -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ]; then \
+			mv -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample`.old ; \
 		fi ; \
-		install $$x $(ASTETCDIR)/`basename $$x .sample` ;\
+		install $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ;\
 	done
-	echo "[directories]" > $(ASTETCDIR)/asterisk.conf
-	echo "astetcdir => $(ASTETCDIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astmoddir => $(MODULES_DIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astvarlibdir => $(ASTVARLIBDIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astagidir => $(AGI_DIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astspooldir => $(ASTSPOOLDIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astrundir => $(ASTVARRUNDIR)" >> $(ASTETCDIR)/asterisk.conf
-	echo "astlogdir => $(ASTLOGDIR)" >> $(ASTETCDIR)/asterisk.conf
+	echo "[directories]" > $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astetcdir => $(ASTETCDIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astmoddir => $(MODULES_DIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astvarlibdir => $(ASTVARLIBDIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astagidir => $(AGI_DIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astspooldir => $(ASTSPOOLDIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astrundir => $(ASTVARRUNDIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
+	echo "astlogdir => $(ASTLOGDIR)" >> $(DESTDIR)$(ASTETCDIR)/asterisk.conf
 	for x in sounds/demo-*; do \
 		if grep -q "^%`basename $$x`%" sounds.txt; then \
-			install $$x $(ASTVARLIBDIR)/sounds ; \
+			install $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
 		else \
 			echo "No description for $$x"; \
 			exit 1; \
 		fi; \
 	done
 	for x in sounds/*.mp3; do \
-		install $$x $(ASTVARLIBDIR)/mohmp3 ; \
+		install $$x $(DESTDIR)$(ASTVARLIBDIR)/mohmp3 ; \
 	done
-	mkdir -p $(ASTSPOOLDIR)/voicemail/default/1234/INBOX
-	:> $(ASTVARLIBDIR)/sounds/voicemail/default/1234/unavail.gsm
+	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
+	:> $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail/default/1234/unavail.gsm
 	for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isunavail; do \
-		cat $(ASTVARLIBDIR)/sounds/$$x.gsm >> $(ASTVARLIBDIR)/sounds/voicemail/default/1234/unavail.gsm ; \
+		cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail/default/1234/unavail.gsm ; \
 	done
-	:> $(ASTVARLIBDIR)/sounds/voicemail/default/1234/busy.gsm
+	:> $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail/default/1234/busy.gsm
 	for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
-		cat $(ASTVARLIBDIR)/sounds/$$x.gsm >> $(ASTVARLIBDIR)/sounds/voicemail/default/1234/busy.gsm ; \
+		cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTVARLIBDIR)/sounds/voicemail/default/1234/busy.gsm ; \
 	done
 
 webvmail:
-	@[ -d $(HTTPDIR) ] || ( echo "No HTTP directory" && exit 1 )
-	@[ -d $(HTTPDIR)/html ] || ( echo "No http directory" && exit 1 )
-	@[ -d $(HTTPDIR)/cgi-bin ] || ( echo "No cgi-bin directory" && exit 1 )
-	install -m 4755 -o root -g root vmail.cgi $(HTTPDIR)/cgi-bin/vmail.cgi
-	mkdir -p $(HTTPDIR)/html/_asterisk
+	@[ -d $(DESTDIR)$(HTTPDIR) ] || ( echo "No HTTP directory" && exit 1 )
+	@[ -d $(DESTDIR)$(HTTPDIR)/html ] || ( echo "No http directory" && exit 1 )
+	@[ -d $(DESTDIR)$(HTTPDIR)/cgi-bin ] || ( echo "No cgi-bin directory" && exit 1 )
+	install -m 4755 -o root -g root vmail.cgi $(DESTDIR)$(HTTPDIR)/cgi-bin/vmail.cgi
+	mkdir -p $(DESTDIR)$(HTTPDIR)/html/_asterisk
 	for x in images/*.gif; do \
-		install -m 644 $$x $(HTTPDIR)/html/_asterisk/; \
+		install -m 644 $$x $(DESTDIR)$(HTTPDIR)/html/_asterisk/; \
 	done
 	@echo " +--------- Asterisk Web Voicemail ----------+"  
 	@echo " +                                           +"
@@ -396,8 +402,8 @@ rpm: __rpm
 __rpm: _version
 	rm -rf /tmp/asterisk ; \
 	mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
-	$(MAKE) INSTALL_PREFIX=/tmp/asterisk install ; \
-	$(MAKE) INSTALL_PREFIX=/tmp/asterisk samples ; \
+	$(MAKE) DESTDIR=/tmp/asterisk install ; \
+	$(MAKE) DESTDIR=/tmp/asterisk samples ; \
 	mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
 	cp -f redhat/asterisk /tmp/asterisk/etc/rc.d/init.d/ ; \
 	cp -f redhat/rpmrc /tmp/asterisk/ ; \
diff --git a/agi/Makefile b/agi/Makefile
index 1257e6a78f..ee12bc353d 100755
--- a/agi/Makefile
+++ b/agi/Makefile
@@ -18,7 +18,8 @@ CFLAGS+=
 all: depend $(AGIS)
 
 install: all
-	for x in $(AGIS); do $(INSTALL) -m 755 $$x $(AGI_DIR) ; done
+	mkdir -p $(DESTDIR)$(AGI_DIR)
+	for x in $(AGIS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(AGI_DIR) ; done
 
 eagi-test: eagi-test.o
 	$(CC) -o eagi-test eagi-test.o
diff --git a/apps/Makefile b/apps/Makefile
index b2ed7b473b..be910601fb 100755
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -50,7 +50,7 @@ app_rpt.so : app_rpt.o
 	$(CC) -shared -Xlinker -x -o $@ $< -ltonezone
 
 install: all
-	for x in $(APPS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(APPS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 app_todd.o: app_todd.c
 	gcc -pipe -O6 -g  -Iinclude -I../include -D_REENTRANT -march=i586 -DDO_CRASH -c -o  app_todd.o app_todd.c
diff --git a/astman/Makefile b/astman/Makefile
index 18d9240572..476c4915c7 100755
--- a/astman/Makefile
+++ b/astman/Makefile
@@ -8,7 +8,7 @@ all: depend $(TARGET)
 install:
 	if [ "$(TARGET)" != "none" ]; then \
 		for x in $(TARGET); do \
-			install -m 755 $$x $(ASTSBINDIR)/astman; \
+			install -m 755 $$x $(DESTDIR)$(ASTSBINDIR)/astman; \
 		done ; \
 	fi
 
diff --git a/cdr/Makefile b/cdr/Makefile
index 8b64bef3d8..64b21f7fcd 100755
--- a/cdr/Makefile
+++ b/cdr/Makefile
@@ -34,7 +34,7 @@ MLFLAGS+=$(shell if [ -f /usr/lib/libpq.so ]; then echo "-L/usr/lib"; fi)
 all: depend $(MODS)
 
 install: all
-	for x in $(MODS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(MODS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 clean:
 	rm -f *.so *.o .depend
diff --git a/channels/Makefile b/channels/Makefile
index 82d524a7f6..2ba9b7041f 100755
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -128,7 +128,7 @@ chan_h323.so: chan_h323.o h323/libchanh323.a
 #	$(CC) -rdynamic -shared -Xlinker -x -o $@ $<
 
 install: all
-	for x in $(CHANNEL_LIBS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(CHANNEL_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 depend: .depend
 
diff --git a/codecs/Makefile b/codecs/Makefile
index c6bfbe97de..75bcced3c3 100755
--- a/codecs/Makefile
+++ b/codecs/Makefile
@@ -97,7 +97,7 @@ codec_mp3_d.so: codec_mp3_d.o $(LIBMP3)
 include .depend
 
 install: all
-	for x in $(CODECS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(CODECS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 depend: .depend
 
diff --git a/formats/Makefile b/formats/Makefile
index 4ee85f489d..036118c5bf 100755
--- a/formats/Makefile
+++ b/formats/Makefile
@@ -40,7 +40,7 @@ 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
+	for x in $(FORMAT_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 depend: .depend
 
diff --git a/pbx/Makefile b/pbx/Makefile
index 96ae7e3721..0ce439696d 100755
--- a/pbx/Makefile
+++ b/pbx/Makefile
@@ -62,7 +62,7 @@ include .depend
 endif
 
 install: all
-	for x in $(PBX_LIBS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(PBX_LIBS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 depend: .depend
 
diff --git a/res/Makefile b/res/Makefile
index 314d94da85..b7434bd8f9 100755
--- a/res/Makefile
+++ b/res/Makefile
@@ -25,7 +25,7 @@ CFLAGS+=-DOPENSSL_NO_KRB5 -fPIC
 all: depend $(MODS)
 
 install: all
-	for x in $(MODS); do $(INSTALL) -m 755 $$x $(MODULES_DIR) ; done
+	for x in $(MODS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(MODULES_DIR) ; done
 
 res_crypto.so: res_crypto.o
 	$(CC) -shared -Xlinker -x -o $@ $< $(CRYPTO_LIBS)
-- 
GitLab