#******************************************************************************
#                              PACOR II SOFTWARE
#                      Property of the U.S. Government
#                              NASA/GSFC/Code 560
#******************************************************************************
#
#    UNIT NAME:
#	Makefile3
#
#    PURPOSE:
#	To compile the sources in the PDPS system.
#
#    INVOCATION METHOD:
#          Called only from pdps/Makefile2
#
#    RETURNED VALUE:
#
#	TYPE = void
#
#	VALUE           DESCRIPTION
#	------------    ----------------------------
#	none
#
#    ARGUMENT LIST:
#
#       NAME 		TYPE		USE	DESCRIPTION
#       ------------	---------	---	----------------------------
#	none
#
#    EXTERNAL FILE/RECORD REFERENCES:
#
#       NAME		USE	DESCRIPTION
#       ----		---	-------------------------------------
#	none
#
#    EXTERNAL VARIABLES:
#
#       SOURCE		NAME		TYPE	USE	DESCRIPTION
#       ------		----		----	---	--------------------
#	Makefile2	INCLUDES	macro	I	List of *.h include in Include, 
#							  pxxInclude, xxxInclude, and 
#							  dbxInclude directories
#	Makefile2	MYCFLAGS	macro	I	CFLAGS options
#	Makefile2	PURIFY		macro	I	PURIFY options (if any)
#	Makefile2	QUANTIFY	macro	I	QUANTIFY options (if any)
#	Makefile2	SOURCES		macro	I	List of *.c files
#	Makefile2	TASK		macro	I	name of task
#	Makefile2	EXECUTABLE	macro	I	Executable name for task
#	.cshrc		ORACLE_HOME	macro	I	Path to oracle directory
#	.cshrc		BXRY		macro	I	Build and Release number
#
#    EXTERNAL UNIT/MACRO/PROCEDURE/FUNCTION REFERENCES:
#
#       NAME		PURPOSE
#       ------------	----------------------------------------------
#	none
#
#    ABNORMAL TERMINATION CONDITIONS, ERROR MESSAGES:
#	none
#
#    ASSUMPTIONS, CONSTRAINTS, RESTRICTIONS:
#	none
#
#    DEVELOPMENT HISTORY:
#
#    	Author	      Change-ID	  Release      Date     Description of Change
#    	-----------   ---------	  --------   --------   -----------------------
#       J. kerich     n/a         TRACE R1.0 03/27/96   Original Implementation
#	J. Kerich     N/A         R2.0	     07/26/96   Add library dependancy to dependancy line
#	A. Taylor     TRACE0116   TRACE R2.0 02/25/97   Add PER task
#       R. Wiechert   WIND970001  R1.0       06/16/97   Upgraded for Oracle 7.3.2
#       R. Wiechert   WIND970001  R1.0       08/20/97   Add IDF task
#
#    NOTES:
#	This uses the environment variable INCLUDES, SOURCES, and TASK set up 
#	by Makefile2 to determine how to do the compile and library archive.
#
#	The ORACLE_HOME path must be set in the user's .cshrc before you can 
#	compile the PDPS system.
#
#	The BXRY build and release number (ie. B2_R1) must be set in the user's 
#	.cshrc before you can run the make cadre ensemble option.
#
#******************************************************************************

SHELL = /usr/bin/sh
CPPFLAGS= -DSUN_VERSION -IInclude -I$(DEPTH)/pxxInclude -I../$(DEPTH)/dbpInclude -I../$(DEPTH)/xxxInclude -I../$(DEPTH)/dbxInclude 
LINTFLAGS=
LIBRARY= libpxx.a

PACOR2_LDFLAGS= -L$(DEPTH)/pxxLib -L../$(DEPTH)/dbpLib -L../$(DEPTH)/xxxLib -L../$(DEPTH)/dbxLib
DEPENDANT_LIBS= $(DEPTH)/pxxLib/libpxx.a ../$(DEPTH)/dbpLib/libdbp.a ../$(DEPTH)/xxxLib/libxxx.a ../$(DEPTH)/dbxLib/libdbx.a

PACOR2_LIBS= -lpxx -ldbp -ldbx -lxxx -ldbx

#  model name example for psc task is "pdp_psc_PSC_B2_R1"
BMDL_OPTION= -model pdp_$(TASK)_$(EXECUTABLE)_$(BXRY) -force -language solaris_Xt -pp_opt "$(CPPFLAGS)" -sclnote SCL-note

LINTFILES= $(SOURCES:.c=.ln)		# lint files
OBJECTS= $(SOURCES:.c=.o)		# all object files

#******************************************************************************
#
#	Oracle directories
#
#******************************************************************************
LD_LIBRARY_PATH= $(ORACLE_HOME)/lib	

ORACLE_LIB= $(ORACLE_HOME)/lib
ORACLE_PROC= $(ORACLE_HOME)/bin/proc
 
# Oracle 7.3.2   Pro*C 2.2.2
NETLIBS= -lsqlnet -lncr -lsqlnet
LLIBORA= -lclient -lcommon -lgeneric
CORELIBS= -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lnlsrtl3
TTLIBS= $(NETLIBS) $(LLIBORA) $(NETLIBS) $(LLIBORA) -lepc $(CORELIBS)
PROLDLIBS= -lclntsh -lsql $(TTLIBS)
OTHERLIBS= `cat $(ORACLE_HOME)/rdbms/lib/sysliblist`
ORACLE_LIBS= $(PROLDLIBS) $(OTHERLIBS)
 
ORACLE_LDFLAGS= -L$(ORACLE_LIB)
 
#NETLIBS   = $(ORACLE_HOME)/lib/osntab.o -lsqlnet
#ORACLE_LIBS= ((-Bdynamic)) $(PROLDLIBS) $(OTHERLIBS) ((-lm -lthread))
#******************************************************************************
#
#	Oracle precompile information
#
#******************************************************************************
PROFLAGS=ireclen=160 oreclen=160 select_error=no mode=ANSI code=ANSI_C DBMS=V7
#PROFLAGS=ireclen=160 oreclen=160 select_error=no mode=ANSI code=ANSI_C DBMS=V7 SQLCHECK=FULL USERID=/
PCCFLAGS=include=$(PCCINC) ireclen=160 oreclen=160 select_error=no

#******************************************************************************
#
#	Dependency entries.
#
#******************************************************************************

LDFLAGS= $(PACOR2_LDFLAGS) $(ORACLE_LDFLAGS) 
LIBS= $(PACOR2_LIBS) $(ORACLE_LIBS) 

.SUFFIXES: .pc .c .o .ln

.KEEP_STATE:

.PRECIOUS: $(EXECUTABLE) $(LIBRARY)

CFLAGS= $(MYCFLAGS) $(CPPFLAGS)	# SUN settings
LINK.c= $(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

LINT.c= lint $(LINTFLAGS) $(MYCFLAGS) $(CPPFLAGS)

debug nodebug optimize gprof tcov purify purifynodebug purifyoptimize quantify : $(TASK) 

.c.ln:
	$(LINT.c) -c $<

lint: $(SOURCES) $(LINTFILES)
	$(LINT.c) $(LINTFILES)
	$(LINT.c) -c $(SOURCES)
	
cadre: bmdl.run
bmdl.run: $(SOURCES) $(INCLUDES)
	bmdl -files $(SOURCES) $(INCLUDES) $(BMDL_OPTION)

.pc.c:
	rm -f $*.c; cp $*.pc $*.c; chmod u+w $*.c
	$(CC) -P -D_NO_LONGLONG $(CPPFLAGS) $*.c
	sed "/#ident/d" $*.i > $*.ipc
	$(ORACLE_PROC) iname=$*.ipc $(PROFLAGS)
	rm $*.ipc $*.i

.c.o:
	-@if [ -f $*.pc ]; then \
	rm -f $*.c; cp $*.pc $*.c; \
	chmod u+w $*.c; \
	$(CC) -P -D_NO_LONGLONG $(CPPFLAGS) $*.c; \
	sed "/#ident/d" $*.i > $*.ipc; \
	$(ORACLE_PROC) iname=$*.ipc $(PROFLAGS); \
	rm $*.ipc $*.i; \
	fi
	$(CC) -c $(CFLAGS) $*.c

#$(ORACLE_PROC) iname=$*.pc $(PROFLAGS) include=$(DEPTH)/pxxInclude include=../$(DEPTH)/dbpInclude include=../$(DEPTH)/xxxInclude include=../$(DEPTH)/dbxInclude

pas: PAS
PAS: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

ppa: PPA
PPA: $(OBJECTS)  $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

psc: PSC
PSC: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

tap: TAP
TAP: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

cas: CAS
CAS: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

csd: CSD
CSD: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

cgs: CGS
CGS: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

cgp: CGP
CGP: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

pep: PEP
PEP: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

pei: PEI
PEI: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

rm: RM
RM: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

ptt: PTT
PTT: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

idf: IDF
IDF: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

per: PER
PER: $(OBJECTS) $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) $(OBJECTS) $(LIBS)

pxx: $(LIBRARY)
$(LIBRARY): $(OBJECTS)
	ar ru $(LIBRARY) $?

tools: hashinit verifyhash viewhash vhashindex time_convert lzptime lzp_isas decrypt.sql fread

hashinit: pxx_hashinit.o $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) pxx_hashinit.o $(LIBS)
verifyhash: verifyhash.o
	$(PURIFY) $(QUANTIFY) $(LINK.c) -o $@ verifyhash.o $(LIBS)
viewhash: viewhash.o
	$(PURIFY) $(QUANTIFY) $(LINK.c) -o $@ viewhash.o $(LIBS)
vhashindex: vhashindex.o
	$(PURIFY) $(QUANTIFY) $(LINK.c) -o $@ vhashindex.o $(LIBS)
time_convert: time_convert.o xxxTimeConvert.o
	$(PURIFY) $(QUANTIFY) $(LINK.c) -o $@ time_convert.o $(LIBS)
lzptime: lzptime_main.o $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) lzptime_main.o $(LIBS)
lzp_isas: lzpisas_main.o $(DEPENDANT_LIBS)
	$(PURIFY) $(QUANTIFY) $(LINK.c) lzpisas_main.o $(LIBS)
decrypt.sql: decrypt.o $(DEPENDANT_LIBS)
	@ chmod 600 decrypt.sql
	$(PURIFY) $(QUANTIFY) $(LINK.c) decrypt.o $(LIBS)
	@ rm -f decrypt.o
	@ chmod 511 decrypt.sql
fread: fread_main.o
	$(PURIFY) $(QUANTIFY) $(LINK.c) fread_main.o

$(OBJECTS):$(INCLUDES)
