#
# Makefile for Digi International EtherLite(R) Terminal Server
# module for Linux
#
# Copyright 1999-2000 Digi International (www.digi.com)
#    Zhong Deng <Zhong_Deng@digi.com>
#    Jeff Randall <Jeff_Randall@digi.com>
#    Bob Rubendunst <Robert_Rubendunst@digi.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE.  See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#

############################################################################
#
# Uncomment the TRACING line below to enable debugging tracing
#
#TRACING=-DTRACER


#
#   Miscelaneous path macro's
#
 
LINUXSRC :=	/usr/src/linux
MODDIR=		$(shell echo $(BUILDROOT)/lib/modules/`uname -r`/misc)
SBINDIR=	$(BUILDROOT)/usr/sbin
DMBIN=		$(BUILDROOT)/usr/bin
MANDIR=		$(BUILDROOT)/usr/man
INCLUDEDIR=	$(BUILDROOT)/usr/src/linux-2.4.20-8/include/
USRLIBDIR=	$(BUILDROOT)/usr/lib
SRCDIR=		$(BUILDROOT)/usr/src/dg/els
MODULES=	els.o
LOCK=		/var/lock
DINCINC=	.


RPMNAME := $(shell /bin/sh ./rpmname < els.info)
PARTNUM := $(shell /bin/sh ./partnum < els.info)

ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)

SMP= $(shell if [ "`uname -v | awk '{print $2}' | grep -c SMP`" = "1" ]; then echo "SMP"; else echo "UP"; fi)

OSMVER=$(shell uname -r )

RCDIR= $(shell if [ -d /etc/rc.d/init.d ]; then echo "$(BUILDROOT)/etc/rc.d/init.d"; else echo "$(BUILDROOT)/etc/init.d"; fi)

CC=gcc
# Fix problem with RH7 having a different compiler for kernel
KCC= $(shell if [ "`whereis kgcc | awk '{print $2}' | grep -c /kgcc`" = "1" ]; then echo "kgcc"; else echo "gcc"; fi)

OSVER=LINUX
#CFLAGS= -g
# undefine BYPASS_FLIP if you don't want to bypass flip buffers on input.
CFLAGS= -Wall -I/usr/include
KFLAGS= -D__KERNEL__ -DMODULE -DBYPASS_FLIP -DELS_NAME=\"$(RPMNAME)\" -DELS_PART=\"$(PARTNUM)\" $(TRACING) -O2 -g -Wall -I/usr/src/linux/include

ifeq ($(SMP),SMP)
	ifeq ($(ARCH),i386)
		KFLAGS += -D__SMP__ -DCONFIG_X86_LOCAL_APIC
	else
		KFLAGS += -D__SMP__ -DSPARCBAUDS
		CFLAGS += -DSPARCBAUDS
	endif
endif



all:	els.o cdetherd cdscsid cdipserv cdflush cdstty dinc dtrcels cdmknods cddiag

cdmknods: cdmknods.o usr_unittab.o
	$(CC) $(CFLAGS) cdmknods.o usr_unittab.o -o cdmknods

cdipserv: cdipserv.o
	$(CC) $(CFLAGS) cdipserv.o -o cdipserv

cdetherd: cdetherd.o
	$(CC) $(CFLAGS) cdetherd.o -o cdetherd

sts.o: sts.c sts.h scsi_iface.h scsi_tools.h
scsi_iface.o: scsi_iface.c scsi_iface.h
scsi_tools.o: scsi_tools.c scsi_tools.h scsi_iface.h
cdscsid.o: cdetherd.c sts.h
	$(CC) $(CFLAGS) -DSTS_CODE -c cdetherd.c -o cdscsid.o
cdscsid: cdscsid.o sts.o scsi_iface.o scsi_tools.o
	$(CC) $(CFLAGS) cdscsid.o sts.o scsi_tools.o scsi_iface.o -o cdscsid

cdflush: cdflush.o
	$(CC) $(CFLAGS) cdflush.o -o cdflush

cdstty: cdstty.o usr_unittab.o
	$(CC) $(CFLAGS) cdstty.o usr_unittab.o -o cdstty

dinc: dinc.o dinc_hw.o $(DINCINC)/dinc.h
	$(CC) $(CFLAGS)  dinc.o dinc_hw.o -o dinc 

dinc.o: dinc.c
	$(CC) $(CFLAGS) -DLINUX -c $(DEFS) -DLOCK_DIR="\"$(LOCK)\"" dinc.c
dinc_hw.o: dinc_hw.c
	$(CC) $(CFLAGS) -DLINUX -c $(DEFS) dinc_hw.c

dtrcels: dtrcels.o
	$(CC) $(CFLAGS) dtrcels.o -o dtrcels

cddiag: els.h cdutils.h cddiag.o
	$(CC) $(CFLAGS) cddiag.o -o cddiag
 
els.o:	els.c els.h ctio.h ker_unittab.o tracer.c
	@echo building els.o and linking
	$(KCC) $(KFLAGS) $(TRACING) -o els_driver.o -c els.c
	$(LD) -r -nostartfiles -o $@ els_driver.o ker_unittab.o
	@echo

listing: els.c sts_unittab.c
	$(KCC) -r -Wl,-M -nostartfiles -o $@ els_driver.o sts_unittab.o > els.lst

ker_unittab.o:	sts_unittab.c sts_unittab.h
	@echo building ker_unittab.o
	$(KCC) $(KFLAGS) -c sts_unittab.c -o ker_unittab.o
	@echo
usr_unittab.o:	sts_unittab.c sts_unittab.h
	@echo building usr_unittab.o
	$(CC) $(CFLAGS) -c sts_unittab.c -o usr_unittab.o
	@echo

clean:
	rm -f cdmknods cdelsreset cdetherd cdscsid cdflush cdipserv cdstty dinc dtrcels cddiag *.o

clobber: clean
	-rm -f els.getty


uninstall: clobber
	if [ "`lsmod | grep -c els`" = "1" ]; then \
		fuser -k /dev/els* \
		insmod els ; \
		cdmknods -uninstall; \
		rmmod els ; \
	fi
	rm -f $(MODDIR)/$(MODULES)
	rm -f $(SBINDIR)/cdetherd
	rm -f $(SBINDIR)/cdscsid
	rm -f $(SBINDIR)/cdipserv
	rm -f $(SBINDIR)/cdflush
	rm -f $(SBINDIR)/cdmknods
	rm -f $(DMBIN)/cdstty
	rm -f $(DMBIN)/dinc
	rm -f $(DMBIN)/dtrcels
	rm -f $(DMBIN)/cddiag
	rm -f $(RCDIR)/els
	rm -f $(MANDIR)/man1/cdetherd.1
	rm -f $(MANDIR)/man1/cdscsid.1
	rm -f $(MANDIR)/man1/cdipserv.1
	rm -f $(MANDIR)/man1/cddiag.1
	rm -f $(MANDIR)/man1/cdflush.1
	rm -f $(MANDIR)/man1/cdmknods.1
	rm -f $(MANDIR)/man1/cdstty.1
	rm -f $(MANDIR)/man1/dinc.1
	rm -f $(MANDIR)/man1/dtrcels.1
	rm -f $(MANDIR)/man4/define_etherlites.4
	rm -f $(MANDIR)/man4/etherlite.4

install: all $(MODDIR)
	install -m 0755 -d $(MODDIR)
	install -m 0755 -d $(SBINDIR)
	install -m 0755 -d $(DMBIN)
	install -m 0755 -d $(RCDIR)
	install -m 0755 -d $(MANDIR)/man1
	install -m 0755 -d $(MANDIR)/man4
	install -m 0644 $(MODULES) $(MODDIR)
	/sbin/depmod -a
	install -m 755 cdetherd $(SBINDIR)
	install -m 755 cdscsid $(SBINDIR)
	install -m 755 cdipserv $(SBINDIR)
	install -m 755 cdflush $(SBINDIR)
	install -m 755 cdmknods $(SBINDIR)
	install -m 755 cdstty $(DMBIN)
	install -m 755 dinc $(DMBIN)
	install -m 755 dtrcels $(DMBIN)
	install -m 755 cddiag $(DMBIN)
	install -m 755 els.rc $(RCDIR)/els
	install -m 0644 cdetherd.1 $(MANDIR)/man1
	install -m 0644 cdscsid.1 $(MANDIR)/man1
	install -m 0644 cddiag.1 $(MANDIR)/man1
	install -m 0644 cdflush.1 $(MANDIR)/man1
	install -m 0644 cdipserv.1 $(MANDIR)/man1
	install -m 0644 cdmknods.1 $(MANDIR)/man1
	install -m 0644 cdstty.1 $(MANDIR)/man1
	install -m 0644 dinc.1 $(MANDIR)/man1
	install -m 0644 dtrcels.1 $(MANDIR)/man1
	install -m 0644 define_etherlites.4 $(MANDIR)/man4
	install -m 0644 etherlite.4 $(MANDIR)/man4

$(MODDIR):
	mkdir -p $@









