# ********************************************************************
#         Makefile for Print Database (PDB) Facility
# ********************************************************************

OPTDIR=
SRCDIR= .
SPLSRCDIR= ../spooler
OIDSRCDIR= ../oid
HDRDIR= ../../inc
OBJDIR= ../../obj$(OPTDIR)
BINDIR= ../../bin$(OPTDIR)
LIBDIR= ../../lib$(OPTDIR)

BBHDRDIR= /pd_work/bb/include

DCEDEFS = -DPSYS=4 -DAIX_RS6000 -D_POSIX_SOURCE -D_ALL_SOURCE -D_CMA_PROTO_ \
          -DTHREAD_DCE -DIALL_CHECKS -D_CMA_NOWRAPPERS_ -D_THREAD_SAFE
DCELIB = -L/usr/lib -lpthreads -ldce

DCEINC = -I/usr/lpp/xlC/include -I/usr/include/dce -I/usr/include
INCLUDES=  -I$(HDRDIR) -I$(BBHDRDIR) $(DCEINC)

LIBS= -lpdb $(DCELIB) -lc_r -lbsd -lqb -las -ltrace -lpd -lpdenv -ldpo -lserv \
      -ls -lpdfilter -lpdapi -loid -leh -L$(LIBDIR)

PUBHDRS= $(HDRDIR)/mgrobj.h $(HDRDIR)/pdbiter.h $(HDRDIR)/pdboref.h \
         $(HDRDIR)/pdb.h $(HDRDIR)/dpa_s.h $(HDRDIR)/pdbdir.h \
         $(HDRDIR)/pdb_p.h $(HDRDIR)/uselock.h

PDBLIBOBJ = $(OBJDIR)/pdb.o \
            $(OBJDIR)/pdbiter.o \
            $(OBJDIR)/uselock.o \
            $(OBJDIR)/pdbdir.o

# "spooler", "supervisor", and "both" versions of objects which come
# different flavors for each server type...
SPDBOBJ =  $(OBJDIR)/pbsave_u.o $(OBJDIR)/pbrest_u.o \
          $(OBJDIR)/pbor_u.o $(OBJDIR)/pbusel_u.o $(OBJDIR)/pbmemm_u.o
VPDBOBJ =  $(OBJDIR)/pbssuv_u.o $(OBJDIR)/pbrsuv_u.o

PDBLIB = $(LIBDIR)/libpdb.a
LIBPD  = $(LIBDIR)/libpd.a

UTSPLOBJ= $(OBJDIR)/pbhelp_u.o $(SPDBOBJ) $(OBJDIR)/protmgmt.o \
			 $(OBJDIR)/protlist.o $(OBJDIR)/oidpsf6K.o $(OBJDIR)/pdborefs.o

UTSUVOBJ= $(OBJDIR)/pbhelp_u.o $(VPDBOBJ) \
          $(OBJDIR)/dsfsinit.o $(OBJDIR)/dsfpiobe.o $(OBJDIR)/dsfpsf6p.o \
          $(OBJDIR)/dsfpsf6j.o $(OBJDIR)/psf6pipe.o $(OBJDIR)/dsfproc.o \
          $(OBJDIR)/dsfpiobc.o $(OBJDIR)/oidpsf6K.o $(OBJDIR)/pdborefv.o

UTSPLLIB= $(LIBS) -lspl -lsuv
UTSUVLIB= $(LIBS) -lsuv -lspl

OPT= -g -qinfo=enu:lan:rea:ret:und -qhalt=w
XLCFLGS= $(OPT) -c -+ -DAIX $(DCEDEFS)
LDFLGS= $(OPT) -+ -DAIX $(DCEDEFS) -qlanglvl=compat

PDBPGMS= $(BINDIR)/pb_u \
         $(BINDIR)/pbsuv_u \
         $(BINDIR)/showsplr \
         $(BINDIR)/showspvr

ALLOBJS= $(PDBLIBOBJ)  $(PDBLIB) \
         $(OBJDIR)/dpa_s.o $(LIBPD) \
         $(OBJDIR)/pdborefs.o $(OBJDIR)/pdborefv.o

all :: obj exec

#---------------------------- Generate AS objects ---------------------
obj: $(ALLOBJS)

$(OBJDIR)/pdb.o : pdb.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ pdb.cpp

$(OBJDIR)/dpa_s.o : $(SRCDIR)/../common/dpa_s.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ $(SRCDIR)/../common/dpa_s.cpp

$(OBJDIR)/pdbdir.o : pdbdir.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ pdbdir.cpp

$(OBJDIR)/uselock.o : uselock.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ uselock.cpp

$(OBJDIR)/pdbiter.o : pdbiter.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ pdbiter.cpp

$(OBJDIR)/pdborefs.o $(OBJDIR)/pdborefv.o $(OBJDIR)/pdboref.o: pdboref.cpp $(PUBHDRS)
	rm -f $(OBJDIR)/pdborefs.o
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $(OBJDIR)/pdborefs.o pdboref.cpp
	rm -f $(OBJDIR)/pdborefv.o
	xlC $(XLCFLGS)  -DPDB_SUPERVISOR $(INCLUDES) -o $(OBJDIR)/pdborefv.o pdboref.cpp
	rm -f $(OBJDIR)/pdboref.o
	xlC $(XLCFLGS)  -DPDB_SPOOLER -DPDB_SUPERVISOR $(INCLUDES) -o $(OBJDIR)/pdboref.o pdboref.cpp

$(OBJDIR)/pbhelp_u.o : pbhelp_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ pbhelp_u.cpp

$(OBJDIR)/pb_u.o : pb_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $(OBJDIR)/pb_u.o pb_u.cpp

$(OBJDIR)/pbsuv_u.o : pb_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SUPERVISOR $(INCLUDES) \
						-o $(OBJDIR)/pbsuv_u.o pb_u.cpp

$(OBJDIR)/pbor_u.o : pbor_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $@ pbor_u.cpp

$(OBJDIR)/pbusel_u.o : pbusel_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $@ pbusel_u.cpp

$(OBJDIR)/pbsave_u.o : pbsave_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $@ pbsave_u.cpp

$(OBJDIR)/pbrest_u.o : pbrest_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $@ pbrest_u.cpp

$(OBJDIR)/pbssuv_u.o : pbssuv_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SUPERVISOR $(INCLUDES) -o $@ pbssuv_u.cpp

$(OBJDIR)/pbrsuv_u.o : pbrsuv_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS) -DPDB_SUPERVISOR $(INCLUDES) -o $@ pbrsuv_u.cpp

$(OBJDIR)/pbmemm_u.o : pbmemm_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) -o $@ pbmemm_u.cpp

$(OBJDIR)/showsplr.o : showobj.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SPOOLER $(INCLUDES) \
					-o $(OBJDIR)/showsplr.o showobj.cpp

$(OBJDIR)/showspvr.o : showobj.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  -DPDB_SUPERVISOR $(INCLUDES) \
					-o $(OBJDIR)/showspvr.o showobj.cpp

$(OBJDIR)/pbtest_u.o : pbtest_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS) $(INCLUDES) -o $@ pbtest_u.cpp

$(OBJDIR)/asio_u.o : asio_u.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ asio_u.cpp

#$(OBJDIR)/testmut.o : testmut.cpp
#	rm -f $@
#	xlC $(XLCFLGS)  $(DCEINC) -I /pd_dev/inc -o $@ testmut.cpp

$(OBJDIR)/testperf.o : testperf.cpp $(PUBHDRS)
	rm -f $@
	xlC $(XLCFLGS)  $(INCLUDES) -o $@ testperf.cpp

#---------------------------- Generate PDB library  --------------------
$(PDBLIB) : $(PDBLIBOBJ)
	/usr/local/tools/rs6/bin/archk vr $@ $(PDBLIBOBJ)

$(LIBPD): $(OBJDIR)/dpa_s.o
	/usr/local/tools/rs6/bin/archk vru $@ $(OBJDIR)/dpa_s.o

#---------------------------- Generate UT programs --------------------
exec: $(OBJDIR)/pbhelp_u.o $(SPDBOBJ) $(VPDBOBJ)  $(PDBPGMS)

$(BINDIR)/pb_u : $(OBJDIR)/pb_u.o $(PDBLIB) $(LIBDIR)/libas.a $(UTSPLOBJ)
	rm -f $(BINDIR)/pb_u
	rm -rf tempinc
	xlC $(LDFLGS) $(INCLUDES) $(OBJDIR)/oid_con.o -o $@ \
	$(UTSPLLIB) $(OBJDIR)/pb_u.o $(UTSPLOBJ)

$(BINDIR)/pbsuv_u : $(OBJDIR)/pbsuv_u.o $(PDBLIB) $(LIBDIR)/libas.a $(UTSUVOBJ)
	rm -f $(BINDIR)/pbsuv_u
	rm -rf tempinc
	xlC $(LDFLGS) $(INCLUDES) -o $@ \
	$(OBJDIR)/oid_con.o $(OBJDIR)/oidpsf6K.o $(OBJDIR)/oidpiobe.o \
	$(OBJDIR)/pbsuv_u.o $(UTSUVOBJ) $(UTSUVLIB)

$(BINDIR)/showsplr : $(OBJDIR)/showsplr.o $(PDBLIB) $(LIBDIR)/libas.a \
			$(UTSPLOBJ)
	rm -f $(BINDIR)/showsplr
	rm -rf tempinc
	xlC $(LDFLGS) $(INCLUDES) $(OBJDIR)/oid_con.o -o $@ \
	               $(OBJDIR)/showsplr.o $(UTSPLOBJ) $(UTSPLLIB)

$(BINDIR)/showspvr : $(OBJDIR)/showspvr.o $(PDBLIB) $(LIBDIR)/libas.a \
			$(UTSUVOBJ)
	rm -f $(BINDIR)/showspvr
	rm -rf tempinc
	xlC $(LDFLGS) $(INCLUDES) -o $@ $(OBJDIR)/oid_con.o \
	$(OBJDIR)/showspvr.o $(OBJDIR)/oidpsf6K.o $(OBJDIR)/oidpiobe.o \
	$(UTSUVOBJ) $(UTSUVLIB) 

#---------------------------- Clean -----------------------------------
clean :
	rm -f $(PDBPGMS)
	rm -f $(OBJDIR)/pb_u.o $(OBJDIR)/pbsuv_u.o
	rm -f $(OBJDIR)/showsplr.o $(OBJDIR)/showspvr.o $(OBJDIR)/pbhelp_u.o
	rm -f $(OBJDIR)/pbsave_u.o $(OBJDIR)/pbrest_u.o
	rm -f $(OBJDIR)/pbssuv_u.o $(OBJDIR)/pbrsuv_u.o
	rm -f $(PDBLIBOBJ)
	rm -f $(SPDBOBJ)
	rm -f $(VPDBOBJ)
	rm -f $(PDBLIB)
#
#    Version      Date     Time    Owner   Comment
# ------------- -------- -------- -------- ----------------------------
# V1.18.1.1     11/02/93 10:59:35 nrbschwa Fixing optimization problems.
# V1.18.2.1     01/19/94 12:55:28 nrbschwa Split spooler and supervisor processing.
# V1.18.2.2     01/19/94 15:19:04 nrbschwa Corrected problem with building showobj.
# V1.18.2.3     01/21/94 14:54:12 nrbschwa Added informational messages to compilations.
# V1.18.2.4     02/03/94 13:39:22 nrbschwa onal messages to compilations.
# V1.18.2.5     02/04/94 13:43:18 gman     changed ar to archk, del .o's before compile
# V1.18.2.6     02/04/94 15:37:24 hlava    Added required suv .o files
# V1.18.2.7     02/07/94 05:14:11 hlava    Fixed suv dependency
# V1.18.2.8     02/07/94 09:30:21 nrbschwa Correct build.
# V1.18.2.9     02/08/94 16:25:29 sandra   Fixed to use dpa_s and not pdb_s...
# V1.18.2.10    02/18/94 14:52:00 nrbschwa Added additional warning check.
# V1.18.2.11    03/02/94 22:52:59 nrbschwa Updated library include list.
# V1.18.3.1     03/14/94 17:05:24 nrbschwa Made minor corrections.
# V1.18.3.2     03/25/94 08:45:14 vo       Use extension mechanism for PSF/PIOBE extension oids
# V1.18.3.3     04/06/94 05:44:33 hlava    Removed ref to libpdn.a
# V1.18.3.4     04/07/94 06:37:50 hlava    Split PSF/6000 code into two source files
# V1.18.3.5     05/03/94 15:56:20 nrbschwa Broke showobj into two separate executables.
# V1.18.3.6     05/23/94 05:17:39 hlava    Added -ls for suv link
# V1.18.3.7     06/03/94 14:18:41 nrbschwa PDB thread-safety - Phase II.
# V1.18.3.8     06/29/94 05:34:31 hlava    Build fix
# V1.18.3.9     07/18/94 12:53:30 sandra   Added oidpsf6K.o to link...
# V1.18.3.10    07/18/94 12:57:36 sandra   Added oidpsf6K.o to link...
# V1.18.3.10    07/18/94 12:57:41 sandra   Added oidpsf6K.o to link...
# V1.18.3.11    08/03/94 10:15:30 nrbschwa Updated unit test cases.
# V1.18.3.12    08/04/94 17:14:27 nrzesch  PDB version control
# V1.18.3.13    08/05/94 15:54:59 nrzesch  Persistent object version control
# V1.18.3.14    08/18/94 00:24:33 bilan    changes to makefile so that the unit test cases are compiled after the required pbd objects are built
# V1.18.3.15    08/20/94 18:41:50 nrzesch  Fix dependencies on unit test cases
# V1.18.3.16    08/21/94 14:34:41 nrzesch  Directory creation and linker changes
# V1.18.3.17    08/27/94 08:33:05 hlava    Removed libpdapi.a
# V1.18.3.18    08/27/94 08:43:46 hlava    Build fix
