#
# Makefile for xisp, xispdial, xispterm, xisprccv
# and xispid. Read INSTALL for editing instructions.
# If your architecture is already supported, comment
# out everything but the section you're interested in.
#
#=====================================================================
#  Compilation/installation vars (global for all following sections) |
#=====================================================================
#
PREFIX     = /usr/local
X11PREFIX  = /usr/X11R6
INCX11     = $(X11PREFIX)/include
LIBX11     = $(X11PREFIX)/lib
INCFORMS   = $(X11PREFIX)/include
LIBFORMS   = $(X11PREFIX)/lib
MODEM_DEV  = modem
MODEM_PATH = /dev/$(MODEM_DEV)
#
#=====================================================================
#                           Linux Section                            |
#=====================================================================
#
# Normal (i.e. SuSE-6.x) vars; for SuSE-5.x use the lines which
# DO NOT include -lcrypt in EXTRALIBS and -DGLIBC2 in EXTRADEFS.
#----------------------------------------------------------------
BINX11     = $(X11PREFIX)/bin
USRLOCAL   = $(PREFIX)/bin
SBINDIR    = /usr/sbin
VARRUN     = /var/run
USRLIBPPP  = /etc/ppp
OPTSDIR    = /etc/ppp
MANDIR     = $(X11PREFIX)/man/man1
ETCPPP     = /etc/ppp
INSTPPPDIR = $(ETCPPP)
DESTDIR    = 
GROUP      = uucp
GCCFLAGS   = -Wall -O
EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DGLIBC2
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\"
EXTRALIBS  = -lcrypt
#EXTRALIBS  = 
LINKX11    = 
LINKFORMS  = -L$(LIBFORMS) -lforms
INSTALL    = install
#
# Debian vars (if your Debian distribution is relatively
# old and does not use glibc2, use the lines which DO NOT
# include -lcrypt in EXTRALIBS and -DGLIBC2 in EXTRADEFS).
#----------------------------------------------------------
#BINX11     = $(X11PREFIX)/bin
#USRLIBXISP = /usr/lib/xisp
#USRLOCAL   = $(USRLIBXISP)
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = $(USRLIBXISP)
#OPTSDIR    = /etc
#MANDIR     = $(X11PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#GROUP      = dialout
#GCCFLAGS   = -Wall -O2
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DGLIBC2
##EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\"
#EXTRALIBS  = -lcrypt
##EXTRALIBS  = 
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = install
#
# Red Hat vars (for versions 5.x & 6.x, no change is
# required; for versions 4.x use the lines which DO NOT
# include -lcrypt in EXTRALIBS and -DGLIBC2 in EXTRADEFS).
#----------------------------------------------------------
#BINX11     = $(X11PREFIX)/bin
#USRLOCAL   = /usr/bin
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = $(SBINDIR)
#OPTSDIR    = /etc/ppp
#MANDIR     = /usr/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = $(RPM_BUILD_ROOT)
#GROUP      = root
#GCCFLAGS   = $(RPM_OPT_FLAGS)
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DGLIBC2
##EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\"
#EXTRALIBS  = -lcrypt
##EXTRALIBS  =
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = install
#
# Linux on the Alpha
#--------------------
#BINX11     = $(X11PREFIX)/bin
#USRLOCAL   = $(PREFIX)/bin
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = /usr/lib/ppp
#OPTSDIR    = /usr/lib/ppp
#MANDIR     = $(X11PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#GROUP      = uucp
#GCCFLAGS   = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\"
#EXTRALIBS  = -lcrypt
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = install
#
#=====================================================================
#             Sun OS (SunOS-4.1.x, Solaris-2.x) Section              |
#=====================================================================
#
# SunOS 4.1.x vars
#------------------
##BINX11     = $(X11PREFIX)/bin
#BINX11     = $(X11PREFIX)/bin/sun4
#USRLOCAL   = $(PREFIX)/bin
#SBINDIR    = /etc/ppp
##SBINDIR    = $(PREFIX)/etc
#VARRUN     = /etc/ppp
#USRLIBPPP  = /etc/ppp
#OPTSDIR    = /etc/ppp
##MANDIR     = $(X11PREFIX)/man/man1
#MANDIR     = /usr/applic/X/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#GROUP      = uucp
#GCCFLAGS   = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DSUNOS41x -DBROKEN_VSPRINTF
#EXTRALIBS  = -L./SunOS/ufc-crypt -lufc
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = install
#
# SunOS 5.x (Solaris 2.x, where x>4) vars
#-----------------------------------------
#BINX11     = $(X11PREFIX)/bin
#USRLOCAL   = $(PREFIX)/bin
#SBINDIR    = $(PREFIX)/bin
#VARRUN     = /etc/ppp
#USRLIBPPP  = /etc/ppp
#OPTSDIR    = /etc/ppp
#MANDIR     = $(X11PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#GROUP      = uucp
#GCCFLAGS   = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DSUNOS5x -DHAVE_STRERROR
#EXTRALIBS  = -lcrypt -lsocket -lnsl
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = /usr/ucb/install
#
#=====================================================================
#                             BSD Section                            |
#=====================================================================
#
# NetBSD vars
#-------------
#BINX11     = $(X11PREFIX)/bin
#USRLOCAL   = $(BINX11)
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = $(PREFIX)/libexec
#MANDIR     = $(PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#OPTSDIR    = $(ETCPPP)
#INSTPPPDIR = $(ETCPPP)
##INSTPPPDIR = $(PREFIX)/share/examples/xisp
#DESTDIR    = 
#GROUP      = dialer
#GCCFLAGS   = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DHAVE_STRERROR
#EXTRALIBS  = -lcrypt
#LINKX11    = -Wl,-R$(LIBX11)
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = /usr/bin/install
#
# FreeBSD vars
#-------------
#BINX11     = $(X11PREFIX)/bin
#USRLOCAL   = $(BINX11)
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = $(PREFIX)/libexec
#MANDIR     = $(PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#OPTSDIR    = $(ETCPPP)
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#NAMEFORMS  = xforms
#GROUP      = dialer
#CHAT_PATH  = /usr/bin
#PPPD_PATH  = /usr/sbin
#GCCFLAGS   = -Wall -O
#EXTRALIBS  = -lcipher
#LINKX11    = -Wl,-R$(LIBX11)
#LINKFORMS  = -L$(LIBFORMS) -lxforms
#INSTALL    = /usr/bin/install
##MODEM_DEV  = cuaa0
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DHAVE_STRERROR -DCHAT_PATH=\"$(CHAT_PATH)\" -DPPPD_PATH=\"$(PPPD_PATH)\"
#
#=====================================================================
#                    Program configuration options                   |
#=====================================================================
#
# Choose the XPM image with many (21) colors: xisp-hc.xpm
# the one with some (12) colors: xisp-mc.xpm
# or the one with very few (6) colors: xisp-lc.xpm
#---------------------------------------------------------
#XPMIMAGE = xisp-hc.xpm
#XPMIMAGE = xisp-mc.xpm
XPMIMAGE = xisp-lc.xpm
#
# If you desire to use the XPM animation code, comment out
# all icons above, and uncomment the following two lines
#----------------------------------------------------------
#XPMIMAGE  = xisp-ol.xpm
#ANIMATE   = -DXPMANIMATE
#
# Compilation defines
#---------------------
BINPATH   = -DBINPATH=\"$(DESTDIR)$(SBINDIR)\"
LIBPATH   = -DLIBPATH=\"$(DESTDIR)$(USRLIBPPP)\"
OPTPATH   = -DOPTPATH=\"$(DESTDIR)$(OPTSDIR)\"
RUNPATH   = -DRUNDIR=\"$(DESTDIR)$(VARRUN)\"
DEFINES   = $(BINPATH) $(LIBPATH) $(OPTPATH) $(RUNPATH) $(ANIMATE)
#
# gcc option flags
#------------------
GCCOPTS   = $(GCCFLAGS) $(DEFINES) $(EXTRADEFS)
#
#=====================================================================
#       You shouldn't need to edit anything below this line          |
#=====================================================================

all: xisp xispdial xisprccv xispterm xispid

xisp: xisp.o pcode.o network.o rcio.o logs.o
	gcc $(LINKX11) -o xisp xisp.o pcode.o network.o rcio.o logs.o $(EXTRALIBS) -L$(LIBX11) $(LINKFORMS) -lXpm -lX11 -lm

xisp.o: xisp.h xisp.c xisp.xpm version.h common.h pcode.h network.h rcio.h logs.h help.c peHelp.c excl.xpm
	gcc $(GCCOPTS) -I$(INCX11) -I$(INCFORMS) -c xisp.c

xisp.xpm:
	cp $(XPMIMAGE) xisp.xpm

pcode.o: pcode.h pcode.c
	gcc $(GCCOPTS) -c pcode.c

network.o: network.h network.c
	gcc $(GCCOPTS) -c network.c

xispdial: xispdial.c common.h version.h
	gcc $(GCCOPTS) -o xispdial xispdial.c

xisprccv: xisprccv.o pcode.o
	gcc -o xisprccv xisprccv.o pcode.o $(EXTRALIBS) -lm

xisprccv.o: xisprccv.c common.h version.h pcode.h logs.h
	gcc $(GCCOPTS) -c xisprccv.c

xispterm: xispterm.h xispterm.c
	gcc $(GCCOPTS) -I$(INCX11) -I$(INCFORMS) -o xispterm xispterm.c $(EXTRALIBS) -L$(LIBX11) $(LINKFORMS) -lX11 -lm

rcio.o: rcio.h rcio.c common.h version.h
	gcc $(GCCOPTS) -c rcio.c

logs.o: logs.h logs.c version.h
	gcc $(GCCOPTS) -c logs.c

xispid: xispid.c
	gcc $(GCCOPTS) -o xispid xispid.c

install: xisp xispdial xisprccv xispterm xispid
	if [ ! -d $(DESTDIR)$(BINX11) ]; then $(INSTALL) -d $(DESTDIR)$(BINX11); fi
	$(INSTALL) -g $(GROUP) -m 750 -o root -s xisp $(DESTDIR)$(BINX11)/xisp
	if [ ! -d $(DESTDIR)$(USRLIBPPP) ]; then $(INSTALL) -d $(DESTDIR)$(USRLIBPPP); fi
	$(INSTALL) -g $(GROUP) -m 750 -o root -s xispdial $(DESTDIR)$(USRLIBPPP)/xispdial
	$(INSTALL) -g $(GROUP) -m 750 -o root -s xispterm $(DESTDIR)$(USRLIBPPP)/xispterm
	if [ ! -d $(DESTDIR)$(USRLOCAL) ]; then $(INSTALL) -d $(DESTDIR)$(USRLOCAL); fi
	$(INSTALL) -g $(GROUP) -m 750 -o root -s xisprccv $(DESTDIR)$(USRLOCAL)/xisprccv
	$(INSTALL) -g $(GROUP) -m 750 -o root -s xispid $(DESTDIR)$(USRLOCAL)/xispid
#	if [ ! -d $(DESTDIR)$(OPTSDIR) ]; then $(INSTALL) -d $(DESTDIR)$(OPTSDIR); fi
#	$(INSTALL) -g $(GROUP) -m 640 -o root options.xisp $(DESTDIR)$(OPTSDIR)/options.xisp
	sed -e s,@ETCPPP@,$(DESTDIR)$(ETCPPP),g \
		-e s,@USRLIBPPP@,$(DESTDIR)$(USRLIBPPP),g \
		-e s,@USRLOCAL@,$(DESTDIR)$(USRLOCAL),g \
		< xisp.man > xisp.1
	if [ ! -d $(DESTDIR)$(MANDIR) ]; then $(INSTALL) -d $(DESTDIR)$(MANDIR); fi
	$(INSTALL) -g $(GROUP) -m 644 -o root xisp.1 $(DESTDIR)$(MANDIR)/xisp.1
	sed -e s/__XISPGROUP/$(GROUP)/ \
		-e sM__XISPIDM/$(DESTDIR)$(USRLOCAL)/xispidM < ip-up.xisp > ip-up.install
	sed -e s/__XISPGROUP/$(GROUP)/ \
		-e sM__XISPIDM/$(DESTDIR)$(USRLOCAL)/xispidM < ip-down.xisp > ip-down.install
	if [ ! -d $(DESTDIR)$(INSTPPPDIR) ]; then $(INSTALL) -d $(DESTDIR)$(INSTPPPDIR); fi
	if [ -f $(DESTDIR)$(INSTPPPDIR)/ip-up ]; then \
		mv -f $(DESTDIR)$(INSTPPPDIR)/ip-up $(DESTDIR)$(INSTPPPDIR)/ip-up.bak; fi
	$(INSTALL) -g $(GROUP) -m 750 -o root ip-up.install $(DESTDIR)$(INSTPPPDIR)/ip-up
	if [ -f $(DESTDIR)$(INSTPPPDIR)/ip-down ]; then \
		mv -f $(DESTDIR)$(INSTPPPDIR)/ip-down $(DESTDIR)$(INSTPPPDIR)/ip-down.bak; fi
	$(INSTALL) -g $(GROUP) -m 750 -o root ip-down.install $(DESTDIR)$(INSTPPPDIR)/ip-down
	rm -f ip-up.install ip-down.install
	sed -e s/__DEVICE/$(MODEM_DEV)/ < xisp.peers.device > xisp_$(MODEM_DEV)
	sed -e sM__DIALER_PATHM$(DESTDIR)$(USRLIBPPP)M < xisp.peers.dialer > xisp_dialer
	if [ ! -d $(DESTDIR)$(INSTPPPDIR)/peers ]; then $(INSTALL) -d $(DESTDIR)$(INSTPPPDIR)/peers; fi
	if [ -f $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV) ]; then \
		mv -f $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV) $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV).bak; fi
	$(INSTALL) -g $(GROUP) -m 640 -o root xisp_$(MODEM_DEV) $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV)
	if [ -f $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer ]; then \
		mv -f $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer.bak; fi
	$(INSTALL) -g $(GROUP) -m 640 -o root xisp_dialer $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer
	rm -f xisp_$(MODEM_DEV) xisp_dialer

clean:
	rm -f *.o xisp xispdial xisprccv xispterm xispid xisp.xpm xisp.1

