#
# Copyright (c) 2003 PyX Technologies, Inc.
# Copyright (c) 2005 SBE, Inc.
#
# Makefile for PyX Technologies iSCSI setup tools.
#

include ./MCONFIG

MKNOD = mknod
RM = rm
LN = ln

OS:=$(shell uname)
ARCH:=$(shell uname -m)

binprefix = /
manprefix = /usr
exec_prefix = $(binprefix)
sbindir = $(exec_prefix)/sbin
mandir = $(manprefix)/share/man
oldmandir = $(manprefix)/man

CC = gcc

EFLAGS = -DLINUX

INCLUDE = -Iinclude/ #-Wstrict-prototypes
AUTHFLAGS = -Wall ${INCLUDE}
AUTHLIBS  =

INIT = initiator_ctl
MD5 = md5
CHAP = initiator_chap
AUTH = initiator_authd
INAME = initiator_iname

SRC = ./src/
LOBJECTS = ${MD5}.o ${CHAP}.o

EXECUTABLES = ${AUTH} ${INIT} ${INAME}

all : ${LOBJECTS} ${EXECUTABLES}

authd : ${LOBJECTS} ${AUTH}

check-dest :
	@if [ "$(DESTDIR)" = "" ]; then \
		echo " "; \
		echo "ERROR: A destdir is required"; \
		exit 1; \
	fi

${MD5}.o : ${SRC}${MD5}.c
	${CC} ${AUTHFLAGS} -c $<

${CHAP}.o : ${SRC}${CHAP}.c
	${CC} ${AUTHFLAGS} -c $<

${AUTH} : ${SRC}${AUTH}.c
	${CC} ${AUTHFLAGS} -o $@ $< ${LOBJECTS} ${AUTHLIBS}

${INIT} : ${SRC}${INIT}.c
	${CC} ${DEBUGFLAGS} ${INCLUDE} -o $@ $<

${INAME} : ${SRC}${INAME}.c
	 ${CC} ${DEBUGFLAGS} ${INCLUDE} -o $@ $< ${MD5}.o

devpts:
	$(RM) -rf $(DESTDIR)/dev/iscsi
	$(MKNOD) $(DESTDIR)/dev/iscsi c 10 202
	$(RM) -rf $(DESTDIR)/dev/iscsi1
	$(MKNOD) $(DESTDIR)/dev/iscsi1 c 10 203

install: check-dest all devpts
	$(RM) -f $(DESTDIR)$(sbindir)/$(EXECUTABLES)

localinstall: all
	$(RM) -f /sbin/initiator-authd
	install initiator_authd /sbin/initiator-authd
	$(RM) -f /sbin/initiator-ctl
	install initiator_ctl /sbin/initiator-ctl

initiator_install: all
	$(RM) -f /sbin/initiator-authd
	install initiator_authd /sbin/initiator-authd
	$(RM) -f /sbin/initiator-ctl
	install initiator_ctl /sbin/initiator-ctl
	install initiator_iname /sbin/initiator-iname
	install man/initiator-ctl.1 /usr/share/man/man1
	install man/initiator.5 /usr/share/man/man5
	install man/initiator_auth.5 /usr/share/man/man5
	install man/iscsi_device_maps.5 /usr/share/man/man5

	if [ ! -d /etc/iscsi ]; then		\
		mkdir -p /etc/iscsi;		\
	fi
	if [ ! -d /etc/sysconfig ]; then	\
		mkdir -p /etc/sysconfig;	\
	fi
	if [ ! -d /etc/rc.d/init.d ]; then	\
		mkdir -p /etc/rc.d/init.d;	\
	fi

	install -c -m 755 scripts/install.channel /etc/iscsi/install.channel
	if [ ! -f /etc/sysconfig/initiator ]; then	\
		install -c -m 644 conf/initiator-sysconfig /etc/sysconfig/initiator; \
	fi
	if [ ! -f /etc/sysconfig/iscsi_device_maps ]; then \
		install -c -m 644 conf/devicemaps-sysconfig /etc/sysconfig/iscsi_device_maps; \
	fi
	if [ ! -f /etc/sysconfig/initiator_auth ]; then \
		install -c -m 600 conf/initiator_auth-sysconfig /etc/sysconfig/initiator_auth; \
	fi
	
	install -c -m 755 scripts/rc.initiator /etc/rc.d/init.d/initiator
	install -c -m 755 scripts/proc.iscsi-map-channel /sbin/proc.iscsi-map-channel
	install -c -m 755 scripts/sysfs.iscsi-map-channel /sbin/sysfs.iscsi-map-channel
	install -c -m 755 scripts/iscsi-map-channel /sbin/iscsi-map-channel
	install -c -m 755 scripts/proc.iscsi-unmap-channel /sbin/proc.iscsi-unmap-channel
	install -c -m 755 scripts/sysfs.iscsi-unmap-channel /sbin/sysfs.iscsi-unmap-channel
	install -c -m 755 scripts/iscsi-unmap-channel /sbin/iscsi-unmap-channel
	install -c -m 755 scripts/iscsi-remap-channel /sbin/iscsi-remap-channel
	install -c -m 755 scripts/iscsi-mount /sbin/iscsi-mount
	install -c -m 755 scripts/iscsi-umount /sbin/iscsi-umount

initiator_install_config: all
	$(RM) -f /sbin/initiator-authd
	install initiator_authd /sbin/initiator-authd
	$(RM) -f /sbin/initiator-ctl
	install initiator_ctl /sbin/initiator-ctl
	install initiator_iname /sbin/initiator-iname
	install man/initiator-ctl.1 /usr/share/man/man1

	if [ ! -d /etc/iscsi ]; then		\
		mkdir -p /etc/iscsi;		\
	fi
	if [ ! -d /etc/sysconfig ]; then	\
		mkdir -p /etc/sysconfig;	\
	fi
	if [ ! -d /etc/rc.d/init.d ]; then	\
		mkdir -p /etc/rc.d/init.d;	\
	fi

	install -c -m 755 scripts/install.channel /etc/iscsi/install.channel
	if [ -f /etc/sysconfig/initiator ]; then      \
		cp /etc/sysconfig/initiator /etc/sysconfig/initiator.old;	\
	fi
	install -c -m 644 conf/initiator-sysconfig /etc/sysconfig/initiator;
	if [ -f /etc/sysconfig/iscsi_device_maps ]; then \
		cp /etc/sysconfig/iscsi_device_maps /etc/sysconfig/iscsi_device_maps.old;	\
	fi
	install -c -m 644 conf/devicemaps-sysconfig /etc/sysconfig/iscsi_device_maps;
	if [ -f /etc/sysconfig/initiator_auth ]; then \
		cp /etc/sysconfig/initiator_auth /etc/sysconfig/initiator_auth.old;	\
	fi
	install -c -m 600 conf/initiator_auth-sysconfig /etc/sysconfig/initiator_auth;

	install -c -m 755 scripts/rc.initiator /etc/rc.d/init.d/initiator
	install -c -m 755 scripts/proc.iscsi-map-channel /sbin/proc.iscsi-map-channel
	install -c -m 755 scripts/sysfs.iscsi-map-channel /sbin/sysfs.iscsi-map-channel
	install -c -m 755 scripts/iscsi-map-channel /sbin/iscsi-map-channel
	install -c -m 755 scripts/proc.iscsi-unmap-channel /sbin/proc.iscsi-unmap-channel
	install -c -m 755 scripts/sysfs.iscsi-unmap-channel /sbin/sysfs.iscsi-unmap-channel
	install -c -m 755 scripts/iscsi-unmap-channel /sbin/iscsi-unmap-channel
	install -c -m 755 scripts/iscsi-mount /sbin/iscsi-mount
	install -c -m 755 scripts/iscsi-umount /sbin/iscsi-umount

add_initd:
	if [ -d /etc/rc.d/rc0.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc0.d/K02initiator; \
	fi
	if [ -d /etc/rc.d/rc1.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc1.d/K02initiator; \
	fi

	if [ -d /etc/rc.d/rc2.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc2.d/K02initiator; \
	fi
	if [ -d /etc/rc.d/rc3.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc3.d/K02initiator; \
	fi
	if [ -d /etc/rc.d/rc4.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc4.d/K02initiator; \
	fi
	if [ -d /etc/rc.d/rc5.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc5.d/K02initiator; \
	fi
	if [ -d /etc/rc.d/rc6.d ]; then \
		ln -s /etc/rc.d/init.d/initiator /etc/rc.d/rc6.d/K02initiator; \
	fi

clean:
	$(RM) -f $(EXECUTABLES) *.o core
	$(RM) -f lib/libcrypto.a
	$(RM) -f lib/libsrp.a

