#
# 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.
#
# Adjust the configuration settings as needed and run
# "make install". You may remove your xisp installation
# at a later time by running "make uninstall".
#
#=====================================================================
#  Compilation/installation vars (global for all following sections) |
#=====================================================================
#
CC         = gcc
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,7.x) vars; for SuSE-5.x use the lines which
# DO NOT include -lcrypt for EXTRALIBS and -DGLIBC2 for 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)
PPPDLCKDIR = /var/lock
DESTDIR    = 
GROUP      = uucp
CCFLAGS    = -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 for EXTRALIBS and -DGLIBC2 for EXTRADEFS).
#------------------------------------------------------------
#BINX11     = $(X11PREFIX)/bin
#USRLIBXISP = /usr/lib/xisp
#USRLOCAL   = $(USRLIBXISP)
#SBINDIR    = /usr/sbin
#VARRUN     = /var/run
#USRLIBPPP  = $(USRLIBXISP)
#OPTSDIR    = /etc
#PPPDLCKDIR = /var/lock
#MANDIR     = $(X11PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#DESTDIR    = 
#GROUP      = dialout
#CCFLAGS    = -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-7.x, no change is
# required; for versions 4.x use the lines which DO NOT
# include -lcrypt for EXTRALIBS and -DGLIBC2 for 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)
#PPPDLCKDIR = /var/lock
##DESTDIR    = $(RPM_BUILD_ROOT)
#DESTDIR    = 
##GROUP      = root
#GROUP      = pppusers
#CCFLAGS    = $(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)
#PPPDLCKDIR = /var/lock
#DESTDIR    = 
#GROUP      = uucp
#CCFLAGS    = -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)
#PPPDLCKDIR = /usr/spool/locks
#DESTDIR    = 
#GROUP      = uucp
#CCFLAGS    = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DSUNOS41x -DBROKEN_SPRINTF
#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
##VARRUN     = /var/run
#USRLIBPPP  = /etc/ppp
#OPTSDIR    = /etc/ppp
#MANDIR     = $(X11PREFIX)/man/man1
#ETCPPP     = /etc/ppp
#INSTPPPDIR = $(ETCPPP)
#PPPDLCKDIR = /var/spool/locks
#DESTDIR    = 
#GROUP      = uucp
##GROUP      = sys
#CCFLAGS    = -Wall -O
#EXTRADEFS  = -DMODEM_DEVICE=\"$(MODEM_PATH)\" -DSUNOS5x -DHAVE_STRERROR
#EXTRALIBS  = -L./SunOS/ufc-crypt -lufc -lsocket -lnsl
#LINKX11    = 
#LINKFORMS  = -L$(LIBFORMS) -lforms
#INSTALL    = /usr/ucb/install
#
#=====================================================================
#                             BSD Section                            |
#                                                                    |
#  Both NetBSD and FreeBSD ports were known to work for xisp-2.6p1   |
#  but have not been tested for xisp-2.7. If you make modifications  |
#  for running xisp-2.7 under either BSD flavor, please send your    |
#  patches to dbouras@hol.gr and they shall be integrated into the   |
#  official distribution.                                            |
#=====================================================================
#
# 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
#PPPDLCKDIR = /var/spool/lock
#DESTDIR    = 
#GROUP      = dialer
#CCFLAGS    = -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)
#PPPDLCKDIR = /var/spool/lock
#DESTDIR    = 
#NAMEFORMS  = xforms
#GROUP      = dialer
#CHAT_PATH  = /usr/bin
#PPPD_PATH  = /usr/sbin
#CCFLAGS    = -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
#
# If you prefer passing dialing environment via the new
# XISPENV environment variable as opposed to the old style
# environment file, then uncomment the line defining the
# USESENV Makefile variable below.
#
# You can not use this option if your version of pppd was
# built to discard all environment variables; examples of
# such case include the default installation of pppd-2.3.5
# on Sparc Solaris 2.6, and Sun's pppd on ix86 Solaris 8,
# for both of which USESENV must not be defined (i.e. the
# line defining USESENV must be left commented-out)
#----------------------------------------------------------
#USESENV   = -DISPENV_USEVARS=1
#
# If you want multiple users to use the same xisp configuration
# and to share log files via an effective user id specifically
# defined for this purpose, comment out the following three lines:
#------------------------------------------------------------------
XISPUSER  = root
SHAREALL  = 
SHAREOBJ  =
#
# and un-comment the following three (remember to change the
# effective uid name "xisp" if you don't like the default):
#
#XISPUSER  = xisp
#SHAREALL  = -DRUNASEUID=1
#SHAREOBJ  = xisp_euidaccess.o
#
# NOTE: If you use the second option, remember to create the
# user defined by $XISPUSER in your password file BEFORE you
# do "make install", otherwise installation will fail.
#
# Defines for hard-coded default paths
#--------------------------------------
BINPATH   = -DBINPATH=\"$(DESTDIR)$(SBINDIR)\"
LIBPATH   = -DLIBPATH=\"$(DESTDIR)$(USRLIBPPP)\"
OPTPATH   = -DOPTPATH=\"$(DESTDIR)$(OPTSDIR)\"
RUNPATH   = -DRUNDIR=\"$(DESTDIR)$(VARRUN)\"
LCKPATH   = -DPPPDLCKDIR=\"$(PPPDLCKDIR)\"
PATHS     = $(BINPATH) $(LIBPATH) $(OPTPATH) $(RUNPATH) $(LCKPATH)
#
# Finally, stick them all together
#----------------------------------
DEFINES   = $(PATHS) $(ANIMATE) $(USESENV) $(SHAREALL)
#
# Compiler option flags
#-----------------------
CCOPTS    = $(CCFLAGS) $(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 $(SHAREOBJ)
	$(CC) $(LINKX11) -o xisp xisp.o pcode.o network.o rcio.o logs.o \
	$(SHAREOBJ) $(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
	$(CC) $(CCOPTS) -I$(INCX11) -I$(INCFORMS) -c xisp.c

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

pcode.o: pcode.h pcode.c
	$(CC) $(CCOPTS) -c pcode.c

network.o: network.h network.c
	$(CC) $(CCOPTS) -c network.c

xispdial: xispdial.o $(SHAREOBJ)
	$(CC) $(CCOPTS) -o xispdial xispdial.o $(SHAREOBJ)
  
xispdial.o: xispdial.c common.h version.h
	$(CC) $(CCOPTS) -c xispdial.c

xisprccv: xisprccv.o pcode.o $(SHAREOBJ)
	$(CC) -o xisprccv xisprccv.o pcode.o $(SHAREOBJ) $(EXTRALIBS) -lm
  
xisprccv.o: xisprccv.c common.h version.h pcode.h logs.h
	$(CC) $(CCOPTS) -c xisprccv.c

xispterm: xispterm.h xispterm.c
	$(CC) $(CCOPTS) -I$(INCX11) -I$(INCFORMS) -o xispterm xispterm.c \
	$(EXTRALIBS) -L$(LIBX11) $(LINKFORMS) -lXpm -lX11 -lm

rcio.o: rcio.h rcio.c common.h version.h
	$(CC) $(CCOPTS) -I$(INCX11) -I$(INCFORMS) -c rcio.c

logs.o: logs.h logs.c version.h
	$(CC) $(CCOPTS) -c logs.c

xisp_euidaccess.o: xisp_euidaccess.c
	$(CC) $(CCOPTS) -c xisp_euidaccess.c

xispid: xispid.c
	$(CC) $(CCOPTS) -o xispid xispid.c

xisp.1: xisp.man
	sed -e s,@ETCPPP@,$(DESTDIR)$(ETCPPP),g \
	-e s,@USRLIBPPP@,$(DESTDIR)$(USRLIBPPP),g \
	-e s,@USRLOCAL@,$(DESTDIR)$(USRLOCAL),g < xisp.man > xisp.1

install: xisp xispdial xisprccv xispterm xispid xisp.1
	if [ ! -d $(DESTDIR)$(BINX11) ]; then \
	  $(INSTALL) -d $(DESTDIR)$(BINX11); fi
	$(INSTALL) -g $(GROUP) -m 750 -o $(XISPUSER) -s \
	  xisp $(DESTDIR)$(BINX11)/xisp
	if [ $(XISPUSER) != root ]; then \
	  chmod 4750 $(DESTDIR)$(BINX11)/xisp; fi
	if [ ! -d $(DESTDIR)$(USRLIBPPP) ]; then \
	  $(INSTALL) -d $(DESTDIR)$(USRLIBPPP); fi
	$(INSTALL) -g $(GROUP) -m 750 -o $(XISPUSER) -s \
	  xispdial $(DESTDIR)$(USRLIBPPP)/xispdial
	if [ $(XISPUSER) != root ]; then \
	  chmod 4750 $(DESTDIR)$(USRLIBPPP)/xispdial; fi
	$(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 $(XISPUSER) -s \
	  xisprccv $(DESTDIR)$(USRLOCAL)/xisprccv
	if [ $(XISPUSER) != root ]; then \
	  chmod 4750 $(DESTDIR)$(USRLOCAL)/xisprccv; fi
	$(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
	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 sM__DEVICEM$(MODEM_PATH)M \
	  < 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

uninstall:
	rm -f $(DESTDIR)$(BINX11)/xisp \
	  $(DESTDIR)$(USRLIBPPP)/xispdial \
	  $(DESTDIR)$(USRLIBPPP)/xispterm \
	  $(DESTDIR)$(USRLOCAL)/xisprccv \
	  $(DESTDIR)$(USRLOCAL)/xispid \
	  $(DESTDIR)$(MANDIR)/xisp.1 \
	  $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV) \
	  $(DESTDIR)$(INSTPPPDIR)/peers/xisp_$(MODEM_DEV).bak \
	  $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer \
	  $(DESTDIR)$(INSTPPPDIR)/peers/xisp_dialer.bak
	mv -f $(DESTDIR)$(INSTPPPDIR)/ip-up \
	  $(DESTDIR)$(INSTPPPDIR)/ip-up.xisp
	if [ -f $(DESTDIR)$(INSTPPPDIR)/ip-up.bak ]; then \
	  mv -f $(DESTDIR)$(INSTPPPDIR)/ip-up.bak \
	  $(DESTDIR)$(INSTPPPDIR)/ip-up; fi
	mv -f $(DESTDIR)$(INSTPPPDIR)/ip-down \
	  $(DESTDIR)$(INSTPPPDIR)/ip-down.xisp
	if [ -f $(DESTDIR)$(INSTPPPDIR)/ip-down.bak ]; then \
	  mv -f $(DESTDIR)$(INSTPPPDIR)/ip-down.bak \
	  $(DESTDIR)$(INSTPPPDIR)/ip-down; fi

