# --------------------------------------------------------------- #
# -- Copyright (c) 1994 Computer Sciences Department,          -- #
# -- University of Wisconsin -- Madison, subject to            -- #
# -- the terms and conditions given in the file COPYRIGHT.     -- #
# -- All Rights Reserved.                                      -- #
# --------------------------------------------------------------- #

/*
 * Imakefile for OO7 Benchmark
 */

/* $Header: /p/shore/shore_cvs/src/oo7/Imakefile,v 1.44 1996/08/05 15:52:23 kupsch Exp $ */

#ifdef USE_GCC
/* for applications, override -fno-implicit-templates */
CFLAGS += -fimplicit-templates
#endif

/*
 * Source files
 */

COMMON_SRCS =	Slave.C Assembly.C AtomicPart.C Connection.C CompositePart.C \
		Document.C Manual.C PartIdSet.C Support.C Module.C \
		SetParams.C PartIdList.C globals.C Traverse.C \
		Traverse7.C baidlist.C oo7.C Reorg.C oo7options.C

#if FORCE_MULTIUSER
AUXFLAGS = -DMULTIUSER
GENDB_SRCS =	GenDB.C NewTraverse.C
MULTIBENCH_SRCS = MultiBench.C MultiStats.C NewTraverse.C

ALL_SRCS =	$(GENDB_SRCS) $(COMMON_SRCS) $(MULTIBENCH_SRCS)
#else
GENDB_SRCS =	GenDB.C 
BENCH_SRCS =	Bench.C Query1.C Query2.C Query3.C Query4.C Query5.C \
		Query6.C Query7.C Query8.C Insert.C Delete.C
MAIN_SRCS =		main.C
BMAIN_SRCS =		Bench_main.C
GMAIN_SRCS =		GenDB_main.C

ALL_SRCS =	$(GENDB_SRCS) $(COMMON_SRCS) $(BENCH_SRCS)   \
		$(MAIN_SRCS) $(BMAIN_SRCS) $(GMAIN_SRCS)
#endif

/*
 * Include files
 */

HFILES =	BenchParams.h GenParams.h PartIdList.h PartIdSet.h \
		VarParams.h globals.h Slave.h MultiStats.h \
		getrusage.h stats.h baidlist.h random.h oo7options.h

SDLFILES = oo7.sdl
GENERATED = oo7.h

SRC.cvs = $(SDLFILES) $(HFILES) $(ALL_SRCS)

/*
 * Object files
 */
COMMON_OBJS =	$(COMMON_SRCS:.C=.o) 
GENDB_OBJS =	$(GENDB_SRCS:.C=.o)
MAIN_OBJS = 	$(MAIN_SRCS:.C=.o)
BMAIN_OBJS = 	$(BMAIN_SRCS:.C=.o)
GMAIN_OBJS = 	$(GMAIN_SRCS:.C=.o)

#if FORCE_MULTIUSER
MULTIBENCH_OBJS = $(MULTIBENCH_SRCS:.C=.o) $(COMMON_OBJS)
#else
BENCH_OBJS =	$(BENCH_SRCS:.C=.o)
#endif

oo7_OBJS =	$(GENDB_OBJS) $(BENCH_OBJS) $(COMMON_OBJS)

/*
 * Where the Shore files are
 */
#if FORCE_PARSETS
PARSETDIR =	$(TOP)/src/oo7.parsets/parsets.old
#endif

/* 
 *Include files
 */
#if FORCE_PARSETS
PARSETINCLUDE = -I$(PARSETDIR)
INCLUDE +=	$(SDL_INCL) $(OC_INCL) $(VAS_INCL) $(COMMON_INCL) \
		$(PARSETINCLUDE) $(PVMINCLUDE) $(SCOMM_INCL) \
		$(STHREAD_INCL) $(FC_INCL) 
#else
INCLUDE +=	$(SDL_INCL) $(OC_INCL) $(VAS_INCL) $(COMMON_INCL) $(FC_INCL) $(SM_INCL)
#endif

/*
 * Libraries
 */
#if FORCE_PARSETS
PARSETLIB =     $(PARSETDIR)/libparsets.a
LIBS =		$(PARSETLIB)\
	$(SDL_LIB) $(OC_LIB) \
	$(VAS_APP_LIB) $(COMMON_LIB) $(FC_LIB) $(RPC_LIB)\
	$(STHREAD_LIB) $(PVM3LIB)/libpvm3.a $(SCOMM_LIB) 
#else
LIBS = \
	$(SDL_LIB) $(OC_LIB) \
	$(VAS_APP_LIB) $(COMMON_LIB) $(FC_LIB) $(RPC_LIB)
#endif

SMLIB  = \
	$(SM_DIR)/libsm.a  \
	$(STHREAD_DIR)/libst.a  \
	$(COMMON_DIR)/libcommon.a $(FC_DIR)/libfc.a
SERVER_LIBS =	\
	$(VAS_DIR)/server/main.o \
	$(VAS_DIR)/server/libserver.a  $(VAS_DIR)/common/libcommon.a \
	$(RPC_LIB) $(COMMON_LIB) $(SMLIB) $(TCL_LIB) $(KRBLIB) \
	$(VERIFY_LIB)  $(OC_LIB) $(SDL_LIB)

/*
 * What to make when we just type "make"
 */
#if FORCE_MULTIUSER
#we've now replaced gendb, bench with oo7client application
# multi-oo7 developers -- you must add the multiuser stuff
# to oo7client.
EXEC =		gendb multibench
#else
EXEC = oo7client
#endif


/*
 * Stuff to be removed by "make clean" (in additon to $(EXEC))
 */
DISPOSABLE =		core *.pure *_pure_* *.pure_*
DISPOSABLE +=		$(GENERATED)

/*
 * Targets
 */

oo7.h: oo7.sdl
	$(SDL_DIR)/sdl -s oo7.sdl  -b oo7

$(BENCH_OBJS) $(GENDB_OBJS) $(COMMON_OBJS) : oo7.h

c_plus_program(gendb, $(GMAIN_OBJS) $(GENDB_OBJS) $(COMMON_OBJS), $(LIBS))
purify_c_plus_program(gendb, $(GMAIN_OBJS) $(GENDB_OBJS) $(COMMON_OBJS), $(LIBS), $(PURE_OPT))
quantify_c_plus_program(gendb, $(GMAIN_OBJS) $(GENDB_OBJS) $(COMMON_OBJS), $(LIBS), $(QUANT_OPT))
purecov_c_plus_program(gendb, $(GMAIN_OBJS) $(GENDB_OBJS) $(COMMON_OBJS), $(LIBS), $(PURECOV_OPT))
c_plus_program(bench, $(BMAIN_OBJS) $(BENCH_OBJS) $(COMMON_OBJS), $(LIBS))
purify_c_plus_program(bench, $(BMAIN_OBJS) $(BENCH_OBJS) $(COMMON_OBJS), $(LIBS), $(PURE_OPT))
quantify_c_plus_program(bench, $(BMAIN_OBJS) $(BENCH_OBJS) $(COMMON_OBJS), $(LIBS), $(QUANT_OPT))
purecov_c_plus_program(bench, $(BMAIN_OBJS) $(BENCH_OBJS) $(COMMON_OBJS), $(LIBS), $(PURECOV_OPT))

c_plus_program(oo7client, $(MAIN_OBJS) $(oo7_OBJS), $(LIBS))
purify_c_plus_program(oo7client, $(MAIN_OBJS) $(oo7_OBJS), $(LIBS), $(PURE_OPT))
quantify_c_plus_program(oo7client, $(MAIN_OBJS) $(oo7_OBJS), $(LIBS), $(QUANT_OPT))
purecov_c_plus_program(oo7client, $(MAIN_OBJS) $(oo7_OBJS), $(LIBS), $(PURECOV_OPT))

c_plus_program(oo7server, $(SERVER_OBJS) $(oo7_OBJS), $(SERVER_LIBS) )
purify_c_plus_program(oo7server, $(SERVER_OBJS) $(oo7_OBJS), $(SERVER_LIBS), $(PURE_OPT))
quantify_c_plus_program(oo7server, $(SERVER_OBJS) $(oo7_OBJS), $(SERVER_LIBS),$(QUANT_OPT) ) 
purecov_c_plus_program(oo7server, $(SERVER_OBJS) $(oo7_OBJS), $(SERVER_LIBS), $(PURECOV_OPT) )


#if FORCE_MULTIUSER
c_plus_program(multibench, $(MULTIBENCH_OBJS), $(LIBS))

purify_c_plus_program(multibench, $(MULTIBENCH_OBJS), $(LIBS), /* */)
#endif


clean_files($(DISPOSABLE))

depend_target($(ALL_SRCS))

install_copy(examples/oo7, $(ALL_SRCS) $(HFILES) $(SDLFILES) oo7.h.precompiled README )
install_copy(examples/oo7, oo7.config.little oo7.config.tiny oo7.config.small .oo7rc Makefile.template)


