#
# Makefile for customs agent and its clients.
#
error		::
	@echo "AIIEEEEEE! This can only be made with PMake"
	@false

package		: 
	-mkdir $(PKGDIR)
	cp *.[ch] Makefile makefile dependencies.mk README $(PKGDIR)


#
# SOURCE DEFINITIONS -- All Sources for this program:
#
HDRS		= make.h job.h nonints.h config.h
OBJS		= arch.o compat.o cond.o dir.o make.o job.o main.o parse.o \
		  suff.o targ.o rmt.o str.o var.o
SRCS		= ../src/arch.c ../src/compat.c ../src/cond.c ../src/dir.c \
		  ../src/make.c ../src/job.c ../src/main.c ../src/parse.c \
		  ../src/suff.c ../src/targ.c rmt.c ../src/str.c ../src/var.c

#OSOBJ		= os-sunos4.o -lkvm
#OSSRC		= os-sunos4.c -lkvm
OSOBJ		= os-bsd.o
OSSRC		= os-bsd.c
CUSTOMSOBJS 	= customs.o mca.o avail.o import.o election.o rpc.o xdr.o \
		  log.o swap.o signal.o $(OSOBJ) xlog.o getusershell.o
CUSTOMSSRCS 	= customs.c mca.c avail.c import.c election.c rpc.c xdr.c \
		  log.c swap.c signal.c $(OSSRC) xlog.c getusershell.c
#
# Files required by all clients to talk to the Customs agent
#
SIGOBJS		= sigList.o sigFromHost.o sigFromName.o \
		  sigToHost.o sigToName.o
LIBOBJS		= customsInit.o customsA2L.o customsAvail.o customsError.o \
		  customsExport.o customsHost.o customsHostA.o \
		  customsHname.o customsInfo.o customsL2A.o customsMWB.o \
		  customsMaster.o customsNorm.o customsPError.o customsPing.o \
		  customsCheck.o
RPCOBJS		= $(LIBOBJS) $(SIGOBJS) rpc.o xlog.o
#
SIGSRCS		= sigList.c sigFromHost.c sigFromName.c \
		  sigToHost.c sigToName.c
LIBSRCS		= customsInit.c customsA2L.c customsAvail.c customsError.c \
		  customsExport.c customsHost.c customsHostA.c \
		  customsHname.c customsInfo.c customsL2A.c customsMWB.c \
		  customsMaster.c customsNorm.c customsPError.c customsPing.c \
		  customsCheck.c
RPCSRCS		= $(LIBSRCS) $(SIGSRCS) rpc.c xlog.c

#
# All clients made by this makefile
#
USERCLIENTS	= export reginfo pmake
SYSCLIENTS	= importquota cctrl logd
CLIENTS		= $(USERCLIENTS) $(SYSCLIENTS)

#
LANG		= -C	# needed for SaberC++
CFLAGS		= -I../src -I../lib/lst -I../lib/include -I. -I..
#LIBS		= ../lib/lst/liblst.a ../lib/sprite/libsprite.a  -lc
LIBS		= $(LSTSRCS) $(SPRITESRCS)  -lc

LSTSRCS		= \
		../lib/lst/lstAppend.c \
		../lib/lst/lstAtEnd.c \
		../lib/lst/lstAtFront.c \
		../lib/lst/lstConcat.c \
		../lib/lst/lstClose.c \
		../lib/lst/lstCur.c \
		../lib/lst/lstDatum.c \
		../lib/lst/lstDeQueue.c \
		../lib/lst/lstDestroy.c \
		../lib/lst/lstDupl.c \
		../lib/lst/lstEnQueue.c \
		../lib/lst/lstFake.c \
		../lib/lst/lstFind.c \
		../lib/lst/lstFindFrom.c \
		../lib/lst/lstFirst.c \
		../lib/lst/lstForEach.c \
		../lib/lst/lstForEachFrom.c \
		../lib/lst/lstIndex.c \
		../lib/lst/lstInit.c \
		../lib/lst/lstInsert.c \
		../lib/lst/lstIsAtEnd.c \
		../lib/lst/lstIsEmpty.c \
		../lib/lst/lstLast.c \
		../lib/lst/lstLength.c \
		../lib/lst/lstMember.c \
		../lib/lst/lstMove.c \
		../lib/lst/lstNext.c \
		../lib/lst/lstOpen.c \
		../lib/lst/lstPred.c \
		../lib/lst/lstPrev.c \
		../lib/lst/lstRemove.c \
		../lib/lst/lstReplace.c \
		../lib/lst/lstSetCirc.c \
		../lib/lst/lstSucc.c
SPRITESRCS	= \
		../lib/sprite/buf.c \
		../lib/sprite/hash.c \
		../lib/sprite/list.c \
		../lib/sprite/option.c \
		../lib/sprite/setenv.c \
		../lib/sprite/strerror.c \
		../lib/sprite/strtod.c \
		../lib/sprite/strtol.c \
		../lib/sprite/strtoul.c \
		../lib/sprite/memmove.c \
		../lib/sprite/getopt.c \
		../lib/sprite/sys.c \
		../lib/sprite/emalloc.c \
		../lib/sprite/enomem.c

#
# SaberC Targets 
#

# for ObjectCenter
suppress:
	# cmode
	# suppress 29
	# suppress 65
	# suppress 68
	# suppress 112
	# suppress 570
	# suppress 624
	# suppress 568
	# suppress 622
	# suppress 763 on rcsid
	# suppress 763 on sccsid
	# suppress 465 in ../src/dir.c
	# suppress 569 in Customs_MakeWayBill
# run time
	# suppress 6 in Elect_Init
	# suppress 8 in ../lib/sprite/hash.c
	# suppress 30 in ImportCheckUser
	# suppress 30 in ../lib/lst/lstDestroy.c
	# suppress 126 in xlog.c
	# suppress 126 in Error
	# suppress 126 in Fatal
	# suppress 126 in Punt
	# suppress 126 in Debug
	# suppress 126 in Parse_Error
# _arhPtr is undefined on purpose
	# suppress 73
	# suppress 30 in getopt
	# suppress 53 in ../src/job.c

# for CodeCenter
cc_suppress:
	# suppress 68
	# suppress 528
	# suppress 530
	# suppress 560
	# suppress 592 on rcsid
	# suppress 592 on sccsid
	# suppress 460 in ../src/dir.c

pmake.saber:	suppress
	#load $(LANG) $(CFLAGS) $(SRCS) $(RPCSRCS) $(LIBS)

pmake.osaber:	suppress
	#load $(LANG) $(CFLAGS) $(OBJS) $(RPCSRCS) $(LIBS)
	#unload rmt.o job.o
	#load $(LANG) $(CFLAGS) rmt.c ../src/job.c

customs.saber:	suppress
	#load $(LANG) $(CFLAGS) $(CUSTOMSSRCS) $(RPCSRCS) $(LIBS)

cctrl.saber:	suppress
	#load $(LANG) $(CFLAGS) cctrl.c $(RPCSRCS) $(LIBS)

host.saber:	suppress
	#load $(LANG) $(CFLAGS) host.c $(RPCSRCS) $(LIBS)

export.saber:	suppress
	#load $(LANG) $(CFLAGS) export.c $(RPCSRCS) $(LIBS)

importquota.saber:	suppress
	#load $(LANG) $(CFLAGS) importquota.c $(RPCSRCS) $(LIBS)

logd.saber:	suppress
	#load $(LANG) $(CFLAGS) logd.c $(RPCSRCS) $(LIBS)

reginfo.saber:	suppress
	#load $(LANG) $(CFLAGS) reginfo.c $(RPCSRCS) $(LIBS)

TESTFLAGS = -XCl -f

pmake.test:	pmake.saber
	#cd ../tests
	#run $(TESTFLAGS) 2c.test
	#run $(TESTFLAGS) cmd.test
	#run $(TESTFLAGS) cmdvar.test
	#run $(TESTFLAGS) comment.test
	#run $(TESTFLAGS) cond.test
	#run $(TESTFLAGS) condop.test
	#run $(TESTFLAGS) cycle.test
	#run $(TESTFLAGS) dynamic.test
	#run $(TESTFLAGS) empty.test
	#run $(TESTFLAGS) env.test
	#run $(TESTFLAGS) exists.test
	#run $(TESTFLAGS) glob.test
	#run $(TESTFLAGS) keepgoing.test
	#run $(TESTFLAGS) null.test
	#run $(TESTFLAGS) onecmd.test
	#run $(TESTFLAGS) onevar.test
	#run $(TESTFLAGS) order.test
	#run $(TESTFLAGS) recurse.test
	#run $(TESTFLAGS) shell.test
	#run $(TESTFLAGS) shellvar.test
	#run $(TESTFLAGS) stop.test
	#run $(TESTFLAGS) stream.test
	#run $(TESTFLAGS) sub.test
	#run $(TESTFLAGS) tab.test
	#run $(TESTFLAGS) trans.test
	#run $(TESTFLAGS) var.test
	#run $(TESTFLAGS) vis.test
	#run $(TESTFLAGS) vpath.test
	#cd ../customs

