summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authormnc <mnc@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2006-02-01 19:12:03 +0000
committermnc <mnc@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2006-02-01 19:12:03 +0000
commit01c7b8adfb40e9d557ed3bb34f8c88edc86c9816 (patch)
tree7b2d980924acdb46c469b6257a667931fbcce65e /Makefile
parentc7edd69edf781ba3c647b27fbe7353ec0f289159 (diff)
downloadopen-iscsi-01c7b8adfb40e9d557ed3bb34f8c88edc86c9816.tar.gz
from Robin H. Johnson: overhauls the open-iscsi build system. Install support for easy installation. DESTDIR support for easy packaging. Revamps kernel/Makefile to use KBuild for clean and install. Refactor iscsi_compat checks to reduce bloat. Update usr/Makefile to keep in sync with kernel/Makefile. Split CFLAGS work in CFLAGS/OPTFLAGS/WARNFLAGS. Ensure Kbuild executes in parallel if needed. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
git-svn-id: svn://svn.berlios.de/open-iscsi@483 d7303112-9cec-0310-bdd2-e83a94d6c2b6
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile87
1 files changed, 75 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 2a1bbf6..f19c115 100644
--- a/Makefile
+++ b/Makefile
@@ -2,9 +2,30 @@
# Makefile for the Open-iSCSI Initiator
#
+# if you are packaging open-iscsi, set this variable to the location
+# that you want everything installed into.
+DESTDIR ?=
+
+prefix = /usr
+exec_prefix = $(prefix)
+sbindir = $(exec_prefix)/sbin
+bindir = $(exec_prefix)/bin
+mandir = $(prefix)/share/man
+etcdir = /etc
+initddir = $(etcdir)/init.d
+
+MANPAGES = doc/iscsid.8 doc/iscsiadm.8
+PROGRAMS = usr/iscsid usr/iscsiadm
+INSTALL = install
+ETCFILES = etc/iscsid.conf
+
+# Random comments:
+# using '$(MAKE)' instead of just 'make' allows make to run in parallel
+# over multiple makefile.
+
all:
- make -C usr
- make -C kernel
+ $(MAKE) -C usr
+ $(MAKE) -C kernel
@echo
@echo "Compilation complete Output file"
@echo "----------------------------------- ----------------"
@@ -16,17 +37,59 @@ all:
@echo Read README file for detailed information.
clean:
- make -C usr clean
- make -C kernel clean
+ $(MAKE) -C usr clean
+ $(MAKE) -C kernel clean
+
+# this is for safety
+# now -jXXX will still be safe
+# note that make may still execute the blocks in parallel
+.NOTPARALLEL: install_usr install_programs install_initd \
+ install_initd_suse install_initd_redhat install_initd_debian \
+ install_etc install_doc install_kernel
+
+install: install_kernel install_programs install_doc install_etc \
+ install_initd
+
+install_programs: $(PROGRAMS)
+ $(INSTALL) -d $(DESTDIR)$(sbindir)
+ $(INSTALL) -m 755 $^ $(DESTDIR)$(sbindir)
-install: kernel/iscsi_tcp.ko kernel/scsi_transport_iscsi.ko usr/iscsid usr/iscsiadm
- @install -vD usr/iscsid /usr/sbin/iscsid
- @install -vD usr/iscsiadm /usr/sbin/iscsiadm
+# ugh, auto-detection is evil
+# Gentoo maintains their own init.d stuff
+install_initd:
if [ -f /etc/debian_version ]; then \
- install -vD -m 755 etc/initd/initd.debian /etc/init.d/open-iscsi; \
+ $(MAKE) install_initd_debian ; \
elif [ -f /etc/redhat-release ]; then \
- install -vD -m 755 etc/initd/initd.redhat /etc/init.d/open-iscsi; \
+ $(MAKE) install_initd_redhat ; \
+ elif [ -f /etc/SuSE-release ]; then \
+ $(MAKE) install_initd_suse ; \
fi
- install -vD kernel/iscsi_tcp.ko /lib/modules/`uname -r`/kernel/drivers/scsi/iscsi_tcp.ko
- install -vD kernel/scsi_transport_iscsi.ko /lib/modules/`uname -r`/kernel/drivers/scsi/scsi_transport_iscsi.ko
- -depmod -aq
+
+# these are external targets to allow bypassing distribution detection
+install_initd_suse:
+ $(INSTALL) -d $(DESTDIR)$(initddir)
+ $(INSTALL) -m 755 etc/initd/initd.suse \
+ $(DESTDIR)$(initddir)/open-iscsi
+
+install_initd_redhat:
+ $(INSTALL) -d $(DESTDIR)$(initddir)
+ $(INSTALL) -m 755 etc/initd/initd.redhat \
+ $(DESTDIR)$(initddir)/open-iscsi
+
+install_initd_debian:
+ $(INSTALL) -d $(DESTDIR)$(initddir)
+ $(INSTALL) -m 755 etc/initd/initd.debian \
+ $(DESTDIR)$(initddir)/open-iscsi
+
+install_etc: $(ETCFILES)
+ $(INSTALL) -d $(DESTDIR)$(etcdir)
+ $(INSTALL) $^ $(DESTDIR)$(etcdir)
+
+install_doc: $(MANPAGES)
+ $(INSTALL) -d $(DESTDIR)$(mandir)/man8
+ $(INSTALL) -m 644 $^ $(DESTDIR)$(mandir)/man8
+
+install_kernel:
+ $(MAKE) -C kernel install_kernel
+
+# vim: ft=make tw=72 sw=4 ts=4: