# Definitions in the new common directory
# /pd_dev will change to /pd - the extract tree
OPTDIR=
PD=../..
PDINC=$(PD)/inc
PDSRC=$(PD)/src
PDOBJ=$(PD)/obj$(OPTDIR)
PDLIB=$(PD)/lib$(OPTDIR)
PDBIN=$(PD)/bin$(OPTDIR)
DPO=$(PDSRC)/dpo
SOBJS=$(PDSRC)/spooler

INCLUDES= -I . -I $(PDINC) -I /usr/lpp/xlC/include -I /usr/include

NOTSPLOBJ = $(PDOBJ)/notifobjs.o $(PDOBJ)/notifmsgs.o

SPLROBJS=$(PDOBJ)/queue.o $(PDOBJ)/spooler.o $(PDOBJ)/spldoc.o \
$(PDOBJ)/spllprt.o \
$(PDOBJ)/proxyprt.o \
$(PDOBJ)/spljob.o \
$(PDOBJ)/sjstatus.o \
$(PDOBJ)/sched.o \
$(PDOBJ)/scfifo.o \
$(PDOBJ)/sclifo.o \
$(PDOBJ)/scpfifo.o \
$(PDOBJ)/schedjr.o \
$(PDOBJ)/schedjs.o \
$(PDOBJ)/schedjv.o \
$(PDOBJ)/schcont.o \
$(PDOBJ)/joblist.o \
$(PDOBJ)/tslist.o \
$(PDOBJ)/serdefob.o \
$(PDOBJ)/iv_job.o \
$(PDOBJ)/iv_doc.o \
$(PDOBJ)/objlist.o 


SERVOBJS=$(PDOBJ)/server.o $(PDOBJ)/doc.o \
$(PDOBJ)/prtjob.o $(PDOBJ)/splelem.o \
$(PDOBJ)/alarmclo.o  $(PDOBJ)/jobdoc.o \
$(PDOBJ)/mgrobj.o \
$(PDOBJ)/device.o \
$(PDOBJ)/printer.o \
$(PDOBJ)/oscont.o $(PDOBJ)/opjcont.o \
$(PDOBJ)/realprt.o $(PDOBJ)/conblock.o $(PDOBJ)/defobj.o

DRIVER=$(PDBIN)/spooler
UTEXEC=$(PDBIN)/ocont_u $(PDBIN)/alarm_u

#------------------------------note --------------------------------------
# NOTE: exec --- should ONLY build the spooler executable
#       utexec - should build the unit test cases
#
#
#-------------------------------------------------------------------------

all: obj exec utexec

obj: $(SPLROBJS) $(SERVOBJS) \
$(PDOBJ)/protocol.o $(PDOBJ)/protlist.o $(PDOBJ)/protprnt.o $(PDOBJ)/protmgmt.o\
$(PDLIB)/libspl.a $(PDLIB)/libserv.a

exec: $(DRIVER)
utexec: $(UTEXEC)

CXX=xlC
OPT=-g -qinfo=enu:lan:rea:ret:und -qhalt=w
LFLAGS=$(OPT) -qlanglvl=compat
CFLAGS= $(OPT) -+ -DAIX -DIALL_CHECKS -D_THREAD_SAFE -D_CMA_NOWRAPPERS_

DCELIBS= -L/usr/lib -ldce -lpthreads
LIBS=  -lc_r -lbsd
PDLIBS= -las -loid -ltrace -lpd -lpdenv -lpdfilter -ldpo -lspl -lserv -lpdb -leh -L$(PDLIB)

PDLIB_DEPLIST=$(PDLIB)/libserv.a $(PDLIB)/libspl.a \
$(PDLIB)/libas.a $(PDLIB)/libtrace.a $(PDLIB)/libpd.a $(PDLIB)/libdpo.a \
$(PDLIB)/libpdenv.a $(PDLIB)/libpdb.a $(PDLIB)/liboid.a $(PDLIB)/liboid.a \
$(PDLIB)/libeh.a

# Fix this up to use header files on the dependencies lists.

#------------------------------ All --------------------------------------
#all:  $(ALL)
#---------------------- Base Object Modules -------------------------------
$(PDOBJ)/defobj.o: $(SOBJS)/defobj.cpp $(PDINC)/defobj.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/defobj.cpp
$(PDOBJ)/iv_job.o: $(SOBJS)/iv_job.cpp $(PDINC)/iv_job.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/iv_job.cpp

$(PDOBJ)/iv_doc.o: $(SOBJS)/iv_doc.cpp $(PDINC)/iv_doc.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/iv_doc.cpp

$(PDOBJ)/serdefob.o: $(SOBJS)/serdefob.cpp $(PDINC)/serdefob.h  \
$(PDINC)/deftable.h $(PDINC)/defobj.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/serdefob.cpp

$(PDOBJ)/conblock.o: $(SOBJS)/conblock.cpp  $(PDINC)/conblock.h \
$(PDINC)/mgrobj.h $(PDINC)/pdenv.h  $(PDINC)/str.h $(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/conblock.cpp

$(PDOBJ)/objlist.o: $(SOBJS)/objlist.cpp $(PDINC)/objlist.h $(PDINC)/conblock.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/objlist.cpp


$(PDOBJ)/queue.o: $(SOBJS)/queue.cpp  $(PDINC)/queue.h \
$(PDINC)/mgrobj.h  \
$(PDINC)/oscont.h  \
$(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/queue.cpp

$(PDOBJ)/server.o: $(SOBJS)/server.cpp $(PDINC)/server.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/server.cpp

$(PDOBJ)/spooler.o: $(SOBJS)/spooler.cpp $(PDINC)/spooler.h \
$(PDINC)/server.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/spooler.cpp

$(PDOBJ)/doc.o: $(SOBJS)/doc.cpp $(PDINC)/doc.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/doc.cpp

$(PDOBJ)/jobdoc.o: $(SOBJS)/jobdoc.cpp $(PDINC)/jobdoc.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/jobdoc.cpp

$(PDOBJ)/spldoc.o: $(SOBJS)/spldoc.cpp $(PDINC)/spldoc.h $(PDINC)/doc.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES)  $(SOBJS)/spldoc.cpp

$(PDOBJ)/spllprt.o:$(SOBJS)/spllprt.cpp $(PDINC)/spllprt.h \
$(PDINC)/mgrobj.h $(PDINC)/device.h $(PDINC)/printer.h $(PDINC)/realprt.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/spllprt.cpp

$(PDOBJ)/proxyprt.o: $(SOBJS)/proxyprt.cpp $(PDINC)/proxyprt.h \
$(PDINC)/mgrobj.h $(PDINC)/device.h $(PDINC)/printer.h $(PDINC)/realprt.h \
	$(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/proxyprt.cpp

$(PDOBJ)/spljob.o: $(SOBJS)/spljob.cpp $(PDINC)/spljob.h \
$(PDINC)/mgrobj.h $(PDINC)/prtjob.h $(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/spljob.cpp

$(PDOBJ)/prtjob.o: $(SOBJS)/prtjob.cpp $(PDINC)/prtjob.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/prtjob.cpp

$(PDOBJ)/mgrobj.o: $(SOBJS)/mgrobj.cpp $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/mgrobj.cpp

$(PDOBJ)/sjstatus.o: $(SOBJS)/sjstatus.cpp $(PDINC)/sjstatus.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/sjstatus.cpp

$(PDOBJ)/sched.o: $(SOBJS)/sched.cpp $(PDINC)/sched.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/sched.cpp

$(PDOBJ)/scfifo.o: $(SOBJS)/scfifo.cpp $(PDINC)/scfifo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/scfifo.cpp

$(PDOBJ)/sclifo.o: $(SOBJS)/sclifo.cpp $(PDINC)/sclifo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/sclifo.cpp

$(PDOBJ)/scpfifo.o: $(SOBJS)/scpfifo.cpp $(PDINC)/scpfifo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/scpfifo.cpp

$(PDOBJ)/schedjr.o: $(SOBJS)/schedjr.cpp $(PDINC)/schedjr.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/schedjr.cpp

$(PDOBJ)/schedjs.o: $(SOBJS)/schedjs.cpp $(PDINC)/schedjs.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/schedjs.cpp

$(PDOBJ)/schedjv.o: $(SOBJS)/schedjv.cpp $(PDINC)/schedjv.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/schedjv.cpp

$(PDOBJ)/schcont.o: $(SOBJS)/schcont.cpp $(PDINC)/schcont.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/schcont.cpp

$(PDOBJ)/joblist.o: $(SOBJS)/joblist.cpp $(PDINC)/joblist.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/joblist.cpp

$(PDOBJ)/tslist.o: $(SOBJS)/tslist.cpp $(PDINC)/tslist.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/tslist.cpp

$(PDOBJ)/realprt.o: $(SOBJS)/realprt.cpp $(PDINC)/realprt.h  \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/realprt.cpp

$(PDOBJ)/device.o: $(SOBJS)/device.cpp $(PDINC)/device.h  \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/device.cpp

$(PDOBJ)/printer.o: $(SOBJS)/printer.cpp $(PDINC)/printer.h  \
$(PDINC)/device.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES)  $(SOBJS)/printer.cpp

$(PDOBJ)/splelem.o: $(SOBJS)/splelem.cpp $(PDINC)/splelem.h \
$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/splelem.cpp

$(PDOBJ)/alarmclo.o: $(SOBJS)/alarmclo.cpp $(PDINC)/alarmclo.h \
$(PDINC)/throbj.h $(PDINC)/thread.h $(PDINC)/sslist.h $(PDINC)/sslistb.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/alarmclo.cpp

$(PDOBJ)/protocol.o: $(SOBJS)/protocol.cpp $(PDINC)/protocol.h \
$(PDINC)/dpo.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES) $(SOBJS)/protocol.cpp

$(PDOBJ)/protmgmt.o: \
	$(SOBJS)/protmgmt.cpp \
	$(PDINC)/protocol.h \
	$(PDINC)/dpo.h \
	$(PDINC)/shutdown.h \
	$(PDINC)/thrproc.h \
	$(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES) $(SOBJS)/protmgmt.cpp

$(PDOBJ)/protprnt.o: $(SOBJS)/protprnt.cpp $(PDINC)/protocol.h \
$(PDINC)/dpo.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES) $(SOBJS)/protprnt.cpp

$(PDOBJ)/protlist.o: $(SOBJS)/protlist.cpp $(PDINC)/protocol.h \
$(PDINC)/dpo.h $(PDINC)/mgrobj.h
	rm -f $@
	$(CXX) $(CFLAGS) -DSPL -c -o $@ $(INCLUDES) $(SOBJS)/protlist.cpp

$(PDOBJ)/oscont.o: $(SOBJS)/oscont.cpp $(PDINC)/oscont.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/oscont.cpp

$(PDOBJ)/opjcont.o: $(SOBJS)/opjcont.cpp $(PDINC)/opjcont.h $(PDINC)/oscont.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/opjcont.cpp

$(PDOBJ)/ocont_u.o: $(SOBJS)/ocont_u.cpp \
$(PDINC)/oscont.h \
$(PDINC)/opjcont.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/ocont_u.cpp

$(PDOBJ)/alarm_u.o: $(SOBJS)/alarm_u.cpp \
$(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -o $@ $(INCLUDES) $(SOBJS)/alarm_u.cpp

#--------------------------  Library File  ----------------------------

$(PDLIB)/libspl.a: $(SPLROBJS)
	/usr/local/tools/rs6/bin/archk vru $@ $(SPLROBJS)
	/usr/local/tools/rs6/bin/archk vru $@ $(NOTSPLOBJ)

$(PDLIB)/libserv.a: $(SERVOBJS)
	/usr/local/tools/rs6/bin/archk vru $@ $(SERVOBJS)

#----------------------  Main Spooler Process -----------------------------

$(PDBIN)/spooler: $(PDOBJ)/protocol.o $(PDOBJ)/protprnt.o $(PDOBJ)/protlist.o \
$(PDOBJ)/protmgmt.o $(PDOBJ)/splrmain.o $(PDLIB_DEPLIST) Makefile
	$(CXX) -o $@ $(LFLAGS) \
	$(PDOBJ)/oid_con.o \
	$(PDOBJ)/oidpsf6K.o \
	$(PDOBJ)/protocol.o \
	$(PDOBJ)/protlist.o  \
	$(PDOBJ)/protprnt.o \
	$(PDOBJ)/protmgmt.o \
	$(LIBS) $(PDLIBS) $(DCELIBS) \
	$(PDOBJ)/pdborefs.o \
	$(PDOBJ)/splrmain.o \
	$(INCLUDES) \
	-bloadmap:spooler.map

$(PDOBJ)/splrmain.o: \
	$(SOBJS)/main.cpp \
	$(PDINC)/dpo.h \
	$(PDINC)/thrproc.h \
	$(PDINC)/protocol.h \
	$(PDINC)/alarmclo.h
	rm -f $@
	$(CXX) $(CFLAGS) -c -DSPL -o $@ $(INCLUDES) $(SOBJS)/main.cpp

#---------------------- Unit Test Programs --------------------------------

$(PDBIN)/ocont_u: $(PDOBJ)/ocont_u.o $(PDLIB_DEPLIST)
	$(CXX) $(CFLAGS) -o $@ $(PDOBJ)/ocont_u.o $(PDOBJ)/pdborefs.o $(LIBS) \
	$(PDOBJ)/oid_con.o $(PDOBJ)/oidpsf6K.o $(DCELIBS) $(PDLIBS)

#ALARMLIBS =    -L$(PDLIB) -las -lspl -lserv -ltrace -lpd -ldpo -lpdenv -lpdfilter -lpdb -loid -leh
ALARMLIBS =     -L$(PDLIB) -lserv -ltrace -lpd  -lpdenv
$(PDBIN)/alarm_u: $(PDOBJ)/alarm_u.o $(PDLIB_DEPLIST)
	$(CXX) $(CFLAGS) -o $@ $(PDOBJ)/alarm_u.o $(PDOBJ)/pdborefs.o $(LIBS) \
	$(PDOBJ)/oid_con.o $(PDOBJ)/oidpsf6K.o $(DCELIBS) $(PDLIBS)

#----------------------------- Clean -----------------------------------------
clean:
	rm -f $(PDBIN)/spooler
	rm -f $(PDOBJ)/splrmain.o
	rm -f $(PDOBJ)/protocol.o
	rm -f $(PDOBJ)/protmgmt.o
	rm -f $(PDOBJ)/protlist.o
	rm -f $(PDOBJ)/protprnt.o
	rm -f $(SPLROBJS)
	rm -f $(PDLIB)/libspl.a $(SPLROBJS)
	rm -f $(SERVOBJS)
	rm -f $(PDLIB)/libserv.a $(SERVOBJS)

#
# Version Date     Time     Owner    Comment
# ------- -------- -------- -------- ----------------------------------
# V000001 10/24/93 14:31:24 nrjbehrs shutdown fixes
#
#    Version      Date     Time    Owner   Comment
# ------------- -------- -------- -------- ----------------------------
# V1.51.1.3     10/29/93 20:15:48 yingy    PDBScheduler object supported
# V1.51.1.4     11/10/93 09:09:22 nrjbehrs Replace thread stuff with ThreadProcess
# V1.51.1.5     11/10/93 14:11:00 tju      move condvar.cpp to pd_common
# V1.51.2.1     12/14/93 10:01:41 nrjbehrs proxyprt.h to proxyprt.h name change
# V1.51.2.2     12/14/93 10:17:20 nrjbehrs splpprt.cpp to proxyprt.cpp name change
# V1.51.2.3     12/15/93 11:00:50 nrjbehrs fixed build problems
# V1.51.2.4     01/07/94 18:44:25 yingy    create default objects on server
# V1.51.2.5     01/21/94 14:54:28 nrbschwa Added informational messages to compilations.
# V1.51.2.6     02/03/94 13:39:33 nrbschwa onal messages to compilations.
# V1.51.2.7     02/04/94 13:44:26 gman     changed ar to archk, del .o's before compile
# V1.51.2.8     02/07/94 16:31:58 hlava    Added Device class to hierarchy
# V1.51.2.9     02/21/94 17:38:16 erik     IVO handling
# V1.51.2.10    02/23/94 11:07:41 tju      plug sched/cont interface; bug 612
# V1.51.2.11    02/25/94 17:56:35 tju      Priority FIFO support
# V1.51.3.1     03/25/94 08:43:34 vo       Use extension mechanism for PSF/PIOBE extension oids
# V1.51.3.2     04/08/94 17:29:37 gman     changes for new AlarmClock class
# V1.51.3.3     04/20/94 16:30:26 nrbschwa Removed unused file.
# V1.51.3.4     04/29/94 17:29:49 sandra   Split IVO builds for SPL and SUV...
# V1.51.3.5     04/29/94 17:36:42 sandra   Typo fix...
# V1.51.3.6     05/02/94 16:07:03 yingy    redesign and fixed dead lock on pdls
# V1.51.3.7     06/15/94 14:18:01 nrdlan   Fixed options
#
#    Version      Date     Time    Owner   Comment
# ------------- -------- -------- -------- ----------------------------
# V1.51.3.8     06/21/94 09:04:12 dennison fix link dependency lists
# V1.51.3.10    07/15/94 16:24:22 erik     new Default table/removed need of fillObject from all objects
# V1.51.3.11    07/26/94 17:07:09 erik     removed PDBScheduler references
# V1.51.3.13    08/01/94 16:19:43 nrbschwa New scheduler facility.
# V1.51.3.14    08/03/94 09:51:34 nrjbehrs rework pause
# V1.51.3.15    08/05/94 11:10:41 nrbschwa New scheduler updates.
# V1.51.3.17    08/09/94 18:28:15 gman     def 1592. rearranged objects on spooler link step
# V1.51.3.18    08/12/94 11:52:17 gman     def 1605. re-design of shutdowning down
# V1.51.3.19    09/16/94 14:14:19 gman     def 2016, main is dependant on alarmclo.h
# V1.51.3.20    09/22/94 17:16:40 gman     def 1901. removed shutdown.o
# V1.51.3.21    09/27/94 14:07:21 nrbschwa Removed old scheduler files.
