
BUILD_CONFIG:=.

include $(BUILD_CONFIG)/buildgeneric.mk
include $(BUILD_CONFIG)/buildplatform.mk


ifeq (WINNT,$(PLATFORM))
extra_nt_stuff:=-link -incremental:no -debugtype:both -pdb:none
endif

ifeq ($(PLATFORM), IRIX64)
 db_platform:=./platform-IRIX-$(DEBUG)
else
 ifeq ($(PLATFORM), WINNT)
  nt_db_platform:=platform-$(PLATFORM)-$(DEBUG)
 endif
 db_platform:=./platform-$(PLATFORM)-$(DEBUG)
endif

# These are weird platform-dependencies for building db2.0
# At Netscape, each UNIX has a slightly different version of
# TCL installed, so we need to set that up. 

srcdir=	.

ifeq ($(PLATFORM),WINNT)
# Tells us from where to pickup the .def file.
def_dir:=$(srcdir)/build_win32

# Define the DLL base address, hope we don't collide with anything else
NT_DLL_BASE=0x13000000

ossrcdir=$(srcdir)/os_win32

CFLAGS+= -I$(db_platform)

# To make a DLL we need extra source code, in dllmain.c:
extra_dll_obj=$(OBJDIR)/dllmain$(OBJ_SUFFIX) $(OBJDIR)/libdb.res
endif

DBFILES=   bt_compare bt_conv bt_cursor bt_delete bt_recno \
	bt_open bt_page bt_put bt_rec bt_rsearch bt_search \
	bt_split bt_stat btree_auto db db_appinit db_apprec db_auto \
	db_byteorder db_conv db_dup db_dispatch db_err \
	os_abs os_dir os_fid os_fsync os_config os_alloc \
	os_map os_oflags os_open os_rpath os_rw os_seek \
	os_sleep os_stat db_log2 os_unlink os_spin \
	db_overflow db_pr db_rec db_region db_ret db_salloc \
	db_shash hash hash_auto hash_conv hash_dup \
	hash_func hash_page hash_rec hash_stat lock \
	lock_conflict lock_deadlock lock_region lock_util log log_archive log_auto log_compare \
	log_findckp log_get log_put log_rec log_register mp_bh mp_fget \
	mp_fopen mp_fput mp_fset mp_open mp_pr mp_region \
	mp_sync mutex txn txn_auto txn_rec \
	bt_curadj \
	db_am db_iface db_join \
	os_tmpdir \
	dbm hsearch

PROGNAMES=db_archive db_checkpoint db_deadlock db_dump \
	db_load db_recover db_stat db_printlog

LOBJS=	$(db_platform_extra_objs)
POBJS=	err getopt getlong

DBINCLS=	db_am.h db_swap.h mp.h txn.h \
		btree.h db_auto.h hash.h mp_ext.h txn_auto.h \
		btree_auto.h db_cxx.h hash_auto.h mutex_ext.h txn_ext.h \
		btree_ext.h db_dispatch.h hash_ext.h os.h xa.h \
		clib_ext.h db_ext.h lock.h os_ext.h xa_ext.h \
		common_ext.h lock_ext.h os_jump.h \
		cxx_int.h db_join.h log.h queue.h \
		db_page.h log_auto.h shqueue.h \
		db_185.h db_shash.h log_ext.h

DBHEADERS:=$(addprefix $(srcdir)/include/,$(DBINCLS))

NTDBINCLS=	config.h db.h db_int.h
NTDBHEADERS:=$(addprefix $(srcdir)/build_win32/,$(NTDBINCLS))


DBFILES+=$(LOBJS)
objdirprefix:=$(OBJDIR)/
OBJS:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBFILES)) )

targetdirprefix:=$(TARGETDIR)/
PROGS:=$(addprefix $(targetdirprefix), $(addsuffix $(EXE_SUFFIX),$(PROGNAMES)) )

target_header=$(TARGETDIR)/db.h

libdb=	$(TARGETDIR)/libdbs$(LIB_SUFFIX)
libdb_dll= $(TARGETDIR)/libdb$(VNUM)$(DLL_SUFFIX)

ifeq ($(PLATFORM), WINNT)
all:	.check_args .copy_headers $(OBJDIR) $(libdb) $(libdb_dll) $(PROGS) $(target_header)

.copy_headers:
	-mkdir -p $(nt_db_platform)
	-cp $(DBHEADERS) $(db_platform)
	-cp $(NTDBHEADERS) $(db_platform)
else
RELFILES=$(PROGNAMES) libdb$(VNUM)$(DLL_SUFFIX)
db_platform_prefix:=$(db_platform)/.libs/
SRCRELFILES:=$(addprefix $(db_platform_prefix), $(RELFILES))

all:	.check_args run_main_make

run_main_make:
	-mkdir -p $(db_platform)
	-cp $(DBHEADERS) $(db_platform)
	(cd $(db_platform); ../dist/configure $(CONFARGS))
	(cd $(db_platform); gmake all)
	-mkdir -p $(TARGETDIR)
	cp $(SRCRELFILES) $(db_platform)/db.h $(TARGETDIR)
endif

$(target_header):	$(db_platform)/db.h
	cp $(db_platform)/db.h $(target_header)

$(libdb): $(db_platform)/db.h $(OBJS) 
	$(rm) -f $@
	$(LINK_STATIC_LIB)

$(libdb_dll): $(db_platform)/db.h $(OBJS) $(extra_dll_obj)
	$(rm) -f $@
ifeq ($(PLATFORM),WINNT)
	cp $(def_dir)/libdb.def $(def_dir)/libdb$(VNUM).def
endif
	$(LINK_DLL) $(extra_dll_obj)
ifneq ($(DEBUG),full)
	$(STRIP_DLL)
endif

DBA=	db_archive  $(POBJS)
DBA:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBA)) )
$(TARGETDIR)/db_archive$(EXE_SUFFIX): $(DBA) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBA) $(libdb) $(extra_nt_stuff)

DBB=	db_checkpoint $(POBJS)
DBB:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBB)) )
$(TARGETDIR)/db_checkpoint$(EXE_SUFFIX): $(DBB) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBB) $(libdb) $(extra_nt_stuff)

DBC=	db_deadlock $(POBJS)
DBC:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBC)) )
$(TARGETDIR)/db_deadlock$(EXE_SUFFIX): $(DBC) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBC) $(libdb) $(extra_nt_stuff)

DBD=	db_dump $(POBJS)
DBD:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBD)) )
$(TARGETDIR)/db_dump$(EXE_SUFFIX): $(DBD) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBD) $(libdb) $(extra_nt_stuff)

DBE=	db_dump185 $(POBJS)
DBE:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBE)) )
$(TARGETDIR)/db_dump185$(EXE_SUFFIX): $(DBE)
	$(CC) $(CFLAGS) -o $@ $(DBE) $(extra_nt_stuff)

DBF=	db_load $(POBJS)
DBF:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBF)) )
$(TARGETDIR)/db_load$(EXE_SUFFIX): $(DBF) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBF) $(libdb) $(extra_nt_stuff)

DBG=	db_printlog $(POBJS)
DBG:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBG)) )
$(TARGETDIR)/db_printlog$(EXE_SUFFIX): $(DBG) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBG) $(libdb) $(extra_nt_stuff)

DBH=	db_recover  $(POBJS)
DBH:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBH)) )
$(TARGETDIR)/db_recover$(EXE_SUFFIX): $(DBH) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBH) $(libdb) $(extra_nt_stuff)

DBN=	db_stat $(POBJS)
DBN:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBN)) )
$(TARGETDIR)/db_stat$(EXE_SUFFIX): $(DBN) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBN) $(libdb) $(extra_nt_stuff)


.PHONY:	examples

examples: $(TARGETDIR)/ex_access$(EXE_SUFFIX) \
  $(TARGETDIR)/ex_appinit$(EXE_SUFFIX) \
  $(TARGETDIR)/ex_tpcb$(EXE_SUFFIX)  \
  $(TARGETDIR)/ex_lock$(EXE_SUFFIX) \
  $(TARGETDIR)/ex_mpool$(EXE_SUFFIX)

EPROGNAMES=	ex_access ex_appinit ex_lock ex_mpool ex_tpcb
EPROGS:=$(addprefix $(targetdirprefix), $(addsuffix $(EXE_SUFFIX),$(EPROGNAMES)) )

DBI=	ex_access $(POBJS)
DBI:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBI)) )
$(TARGETDIR)/ex_access$(EXE_SUFFIX): $(DBI) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBI) $(libdb) $(extra_nt_stuff)

DBJ=	ex_appinit $(POBJS)
DBJ:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBJ)) )
$(TARGETDIR)/ex_appinit$(EXE_SUFFIX): $(DBJ) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBJ) $(libdb) $(extra_nt_stuff)

DBK=	ex_tpcb $(POBJS)
DBK:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBK)) )
$(TARGETDIR)/ex_tpcb$(EXE_SUFFIX): $(DBK) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBK) $(libdb) $(extra_nt_stuff)

DBL=	ex_mpool $(POBJS)
DBL:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBL)) )
$(TARGETDIR)/ex_mpool$(EXE_SUFFIX): $(DBL) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBL) $(libdb) $(extra_nt_stuff)

DBM=	ex_lock $(POBJS)
DBM:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBM)) )
$(TARGETDIR)/ex_lock$(EXE_SUFFIX): $(DBM) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBM) $(libdb) $(extra_nt_stuff)

DBT=	tclAppInit tcl_lock tcl_log tcl_mpool tcl_mutex tcl_txn \
	tcl_hsearch tcl_ndbm tcl_dbm utils $(POBJS)
dbtestprog:=$(OBJDIR)/dbtest$(EXE_SUFFIX)
DBT:=$(addprefix $(objdirprefix), $(addsuffix $(OBJ_SUFFIX),$(DBT)) )
dbtest:	$(OBJDIR)/.dbtestrc $(DBT) $(libdb) $(dbtestprog)
$(dbtestprog): $(DBT) $(libdb)
	$(CC) $(CFLAGS) -o $@ $(DBT) $(libdb) $(db_tcl_lib) $(db_extra_dbtest_libs) $(extra_nt_stuff)

clean:	
	$(rm) -f $(OBJS) $(extra_dll_obj)
	$(rm) -f $(DBA) $(DBB) $(DBC) $(DBD) $(DBE) $(DBF) $(DBG) $(DBH) $(DBN)
	$(rm) -f $(DBI) $(DBJ) $(DBK) $(DBL) $(DBM) $(DBT)
	$(rm) -f $(PROGS) $(EPROGS) $(POBJS) 
	$(rm) -f $(dbtestprog) .dbtestrc $(libdb) $(libdb_dll) $(libdb_importlib) 
	$(rm) -f $(target_header)
	$(rm) -rf $(db_platform)
ifeq ($(PLATFORM), WINNT)
	$(rm) -f $(libdb_dll:.dll=.lib) $(libdb_dll:.dll=.exp) $(libdb_dll:.dll=.pdb) $(libdb:.lib=.pdb) 
	$(rm) -f $(addprefix $(targetdirprefix), $(addsuffix .pdb,$(PROGNAMES)) )
endif
#only remove the BUILDTRASH if we have defined it
ifneq (x$(BUILDTRASH),x)
	$(rm) -f $(BUILDTRASH)
endif

# Programs.
$(OBJDIR)/db_archive$(OBJ_SUFFIX): $(srcdir)/db_archive/db_archive.c
	$(COMPILE)
$(OBJDIR)/db_checkpoint$(OBJ_SUFFIX): $(srcdir)/db_checkpoint/db_checkpoint.c
	$(COMPILE)
$(OBJDIR)/db_deadlock$(OBJ_SUFFIX): $(srcdir)/db_deadlock/db_deadlock.c
	$(COMPILE)
$(OBJDIR)/db_dump$(OBJ_SUFFIX): $(srcdir)/db_dump/db_dump.c
	$(COMPILE)
$(OBJDIR)/db_dump185$(OBJ_SUFFIX): $(srcdir)/db_dump185/db_dump185.c
	$(COMPILE)
$(OBJDIR)/db_load$(OBJ_SUFFIX): $(srcdir)/db_load/db_load.c
	$(COMPILE)
$(OBJDIR)/db_printlog$(OBJ_SUFFIX): $(srcdir)/db_printlog/db_printlog.c
	$(COMPILE)
$(OBJDIR)/db_recover$(OBJ_SUFFIX): $(srcdir)/db_recover/db_recover.c
	$(COMPILE)
$(OBJDIR)/db_findckp$(OBJ_SUFFIX): $(srcdir)/db_recover/db_findckp.c
	$(COMPILE)
$(OBJDIR)/db_stat$(OBJ_SUFFIX): $(srcdir)/db_stat/db_stat.c
	$(COMPILE)

# Examples.
$(OBJDIR)/ex_access$(OBJ_SUFFIX): $(srcdir)/examples/ex_access.c
	$(COMPILE)
$(OBJDIR)/ex_appinit$(OBJ_SUFFIX): $(srcdir)/examples/ex_appinit.c
	$(COMPILE)
$(OBJDIR)/ex_tpcb$(OBJ_SUFFIX): $(srcdir)/examples/ex_tpcb.c
	$(COMPILE)
$(OBJDIR)/ex_mpool$(OBJ_SUFFIX): $(srcdir)/examples/ex_mpool.c
	$(COMPILE)
$(OBJDIR)/ex_lock$(OBJ_SUFFIX): $(srcdir)/examples/ex_lock.c
	$(COMPILE)

# DB files.
$(OBJDIR)/db$(OBJ_SUFFIX): $(srcdir)/db/db.c
	$(COMPILE)
$(OBJDIR)/db_auto$(OBJ_SUFFIX): $(srcdir)/db/db_auto.c
	$(COMPILE)
$(OBJDIR)/db_conv$(OBJ_SUFFIX): $(srcdir)/db/db_conv.c
	$(COMPILE)
$(OBJDIR)/db_dup$(OBJ_SUFFIX): $(srcdir)/db/db_dup.c
	$(COMPILE)
$(OBJDIR)/db_overflow$(OBJ_SUFFIX): $(srcdir)/db/db_overflow.c
	$(COMPILE)
$(OBJDIR)/db_pr$(OBJ_SUFFIX): $(srcdir)/db/db_pr.c
	$(COMPILE)
$(OBJDIR)/db_rec$(OBJ_SUFFIX): $(srcdir)/db/db_rec.c
	$(COMPILE)
$(OBJDIR)/db_ret$(OBJ_SUFFIX): $(srcdir)/db/db_ret.c
	$(COMPILE)
$(OBJDIR)/db_dispatch$(OBJ_SUFFIX): $(srcdir)/db/db_dispatch.c
	$(COMPILE)
$(OBJDIR)/db_iface$(OBJ_SUFFIX): $(srcdir)/db/db_iface.c
	$(COMPILE)
$(OBJDIR)/db_am$(OBJ_SUFFIX): $(srcdir)/db/db_am.c
	$(COMPILE)
$(OBJDIR)/db_join$(OBJ_SUFFIX): $(srcdir)/db/db_join.c
	$(COMPILE)

# Btree source files.
$(OBJDIR)/bt_compare$(OBJ_SUFFIX): $(srcdir)/btree/bt_compare.c
	$(COMPILE)
$(OBJDIR)/bt_conv$(OBJ_SUFFIX): $(srcdir)/btree/bt_conv.c
	$(COMPILE)
$(OBJDIR)/bt_cursor$(OBJ_SUFFIX): $(srcdir)/btree/bt_cursor.c
	$(COMPILE)
$(OBJDIR)/bt_delete$(OBJ_SUFFIX): $(srcdir)/btree/bt_delete.c
	$(COMPILE)
$(OBJDIR)/bt_recno$(OBJ_SUFFIX): $(srcdir)/btree/bt_recno.c
	$(COMPILE)
$(OBJDIR)/bt_open$(OBJ_SUFFIX): $(srcdir)/btree/bt_open.c
	$(COMPILE)
$(OBJDIR)/bt_page$(OBJ_SUFFIX): $(srcdir)/btree/bt_page.c
	$(COMPILE)
$(OBJDIR)/bt_put$(OBJ_SUFFIX): $(srcdir)/btree/bt_put.c
	$(COMPILE)
$(OBJDIR)/bt_rec$(OBJ_SUFFIX): $(srcdir)/btree/bt_rec.c
	$(COMPILE)
$(OBJDIR)/bt_rsearch$(OBJ_SUFFIX): $(srcdir)/btree/bt_rsearch.c
	$(COMPILE)
$(OBJDIR)/bt_search$(OBJ_SUFFIX): $(srcdir)/btree/bt_search.c
	$(COMPILE)
$(OBJDIR)/bt_split$(OBJ_SUFFIX): $(srcdir)/btree/bt_split.c
	$(COMPILE)
$(OBJDIR)/bt_stack$(OBJ_SUFFIX): $(srcdir)/btree/bt_stack.c
	$(COMPILE)
$(OBJDIR)/bt_stat$(OBJ_SUFFIX): $(srcdir)/btree/bt_stat.c
	$(COMPILE)
$(OBJDIR)/btree_auto$(OBJ_SUFFIX): $(srcdir)/btree/btree_auto.c
	$(COMPILE)
$(OBJDIR)/bt_curadj$(OBJ_SUFFIX): $(srcdir)/btree/bt_curadj.c
	$(COMPILE)

# Hash source files.
$(OBJDIR)/hash_auto$(OBJ_SUFFIX): $(srcdir)/hash/hash_auto.c
	$(COMPILE)
$(OBJDIR)/hash$(OBJ_SUFFIX): $(srcdir)/hash/hash.c
	$(COMPILE)
$(OBJDIR)/hash_conv$(OBJ_SUFFIX): $(srcdir)/hash/hash_conv.c
	$(COMPILE)
$(OBJDIR)/hash_dup$(OBJ_SUFFIX): $(srcdir)/hash/hash_dup.c
	$(COMPILE)
$(OBJDIR)/hash_func$(OBJ_SUFFIX): $(srcdir)/hash/hash_func.c
	$(COMPILE)
$(OBJDIR)/hash_page$(OBJ_SUFFIX): $(srcdir)/hash/hash_page.c
	$(COMPILE)
$(OBJDIR)/hash_rec$(OBJ_SUFFIX): $(srcdir)/hash/hash_rec.c
	$(COMPILE)
$(OBJDIR)/hash_stat$(OBJ_SUFFIX): $(srcdir)/hash/hash_stat.c
	$(COMPILE)

# Lock source files.
$(OBJDIR)/lock$(OBJ_SUFFIX): $(srcdir)/lock/lock.c
	$(COMPILE)
$(OBJDIR)/lock_conflict$(OBJ_SUFFIX):$(srcdir)/lock/lock_conflict.c
	$(COMPILE)
$(OBJDIR)/lock_util$(OBJ_SUFFIX):$(srcdir)/lock/lock_util.c
	$(COMPILE)
$(OBJDIR)/lock_deadlock$(OBJ_SUFFIX):$(srcdir)/lock/lock_deadlock.c
	$(COMPILE)
$(OBJDIR)/lock_region$(OBJ_SUFFIX):$(srcdir)/lock/lock_region.c
	$(COMPILE)

# Log source files.
$(OBJDIR)/log$(OBJ_SUFFIX): $(srcdir)/log/log.c
	$(COMPILE)
$(OBJDIR)/log_auto$(OBJ_SUFFIX): $(srcdir)/log/log_auto.c
	$(COMPILE)
$(OBJDIR)/log_compare$(OBJ_SUFFIX): $(srcdir)/log/log_compare.c
	$(COMPILE)
$(OBJDIR)/log_get$(OBJ_SUFFIX): $(srcdir)/log/log_get.c
	$(COMPILE)
$(OBJDIR)/log_put$(OBJ_SUFFIX): $(srcdir)/log/log_put.c
	$(COMPILE)
$(OBJDIR)/log_rec$(OBJ_SUFFIX): $(srcdir)/log/log_rec.c
	$(COMPILE)
$(OBJDIR)/log_register$(OBJ_SUFFIX): $(srcdir)/log/log_register.c
	$(COMPILE)
$(OBJDIR)/log_archive$(OBJ_SUFFIX): $(srcdir)/log/log_archive.c		  
	$(COMPILE)
$(OBJDIR)/log_findckp$(OBJ_SUFFIX): $(srcdir)/log/log_findckp.c		  
	$(COMPILE)

# Mpool source files.
$(OBJDIR)/mp_bh$(OBJ_SUFFIX): $(srcdir)/mp/mp_bh.c
	$(COMPILE)
$(OBJDIR)/mp_fget$(OBJ_SUFFIX): $(srcdir)/mp/mp_fget.c
	$(COMPILE)
$(OBJDIR)/mp_fopen$(OBJ_SUFFIX): $(srcdir)/mp/mp_fopen.c
	$(COMPILE)
$(OBJDIR)/mp_fput$(OBJ_SUFFIX): $(srcdir)/mp/mp_fput.c
	$(COMPILE)
$(OBJDIR)/mp_fset$(OBJ_SUFFIX): $(srcdir)/mp/mp_fset.c
	$(COMPILE)
$(OBJDIR)/mp_open$(OBJ_SUFFIX): $(srcdir)/mp/mp_open.c
	$(COMPILE)
$(OBJDIR)/mp_pr$(OBJ_SUFFIX): $(srcdir)/mp/mp_pr.c
	$(COMPILE)
$(OBJDIR)/mp_region$(OBJ_SUFFIX): $(srcdir)/mp/mp_region.c
	$(COMPILE)
$(OBJDIR)/mp_sync$(OBJ_SUFFIX): $(srcdir)/mp/mp_sync.c
	$(COMPILE)

# Mutex source files.
$(OBJDIR)/mutex$(OBJ_SUFFIX): $(srcdir)/mutex/mutex.c
	$(COMPILE)

#$(OBJDIR)/tsl_parisc$(OBJ_SUFFIX): $(srcdir)/mutex/tsl_parisc.s
#	$(COMPILE)

# Transaction source files.
$(OBJDIR)/txn$(OBJ_SUFFIX): $(srcdir)/txn/txn.c
	$(COMPILE)
$(OBJDIR)/txn_auto$(OBJ_SUFFIX): $(srcdir)/txn/txn_auto.c
	$(COMPILE)
$(OBJDIR)/txn_rec$(OBJ_SUFFIX): $(srcdir)/txn/txn_rec.c
	$(COMPILE)

# Historic interfaces.
$(OBJDIR)/hsearch$(OBJ_SUFFIX): $(srcdir)/hsearch/hsearch.c
	$(COMPILE)
$(OBJDIR)/dbm$(OBJ_SUFFIX): $(srcdir)/dbm/dbm.c
	$(COMPILE)

# Common source files.
$(OBJDIR)/db_appinit$(OBJ_SUFFIX): $(srcdir)/common/db_appinit.c
	$(COMPILE)
$(OBJDIR)/db_byteorder$(OBJ_SUFFIX): $(srcdir)/common/db_byteorder.c
	$(COMPILE)
$(OBJDIR)/db_err$(OBJ_SUFFIX): $(srcdir)/common/db_err.c
	$(COMPILE)
$(OBJDIR)/db_log2$(OBJ_SUFFIX): $(srcdir)/common/db_log2.c
	$(COMPILE)
$(OBJDIR)/db_region$(OBJ_SUFFIX): $(srcdir)/common/db_region.c
	$(COMPILE)
$(OBJDIR)/db_salloc$(OBJ_SUFFIX): $(srcdir)/common/db_salloc.c
	$(COMPILE)
$(OBJDIR)/db_shash$(OBJ_SUFFIX): $(srcdir)/common/db_shash.c
	$(COMPILE)
$(OBJDIR)/db_apprec$(OBJ_SUFFIX): $(srcdir)/common/db_apprec.c
	$(COMPILE)

#OS source files
$(OBJDIR)/os_abs$(OBJ_SUFFIX): $(ossrcdir)/os_abs.c
	$(COMPILE)
$(OBJDIR)/os_dir$(OBJ_SUFFIX): $(ossrcdir)/os_dir.c
	$(COMPILE)
$(OBJDIR)/os_fid$(OBJ_SUFFIX): $(ossrcdir)/os_fid.c
	$(COMPILE)
$(OBJDIR)/os_seek$(OBJ_SUFFIX): $(ossrcdir)/os_seek.c
	$(COMPILE)
$(OBJDIR)/os_map$(OBJ_SUFFIX): $(ossrcdir)/os_map.c
	$(COMPILE)
$(OBJDIR)/os_sleep$(OBJ_SUFFIX): $(ossrcdir)/os_sleep.c
	$(COMPILE)
$(OBJDIR)/os_spin$(OBJ_SUFFIX): $(ossrcdir)/os_spin.c
	$(COMPILE)

$(OBJDIR)/os_tmpdir$(OBJ_SUFFIX): $(srcdir)/os/os_tmpdir.c
	$(COMPILE)
$(OBJDIR)/os_open$(OBJ_SUFFIX): $(srcdir)/os/os_open.c
	$(COMPILE)
$(OBJDIR)/os_rw$(OBJ_SUFFIX): $(srcdir)/os/os_rw.c
	$(COMPILE)
$(OBJDIR)/os_stat$(OBJ_SUFFIX): $(srcdir)/os/os_stat.c
	$(COMPILE)
$(OBJDIR)/os_unlink$(OBJ_SUFFIX): $(srcdir)/os/os_unlink.c
	$(COMPILE)
$(OBJDIR)/os_chmod$(OBJ_SUFFIX): $(srcdir)/os/os_chmod.c
	$(COMPILE)
$(OBJDIR)/os_oflags$(OBJ_SUFFIX): $(srcdir)/os/os_oflags.c
	$(COMPILE)
$(OBJDIR)/os_fsync$(OBJ_SUFFIX): $(srcdir)/os/os_fsync.c
	$(COMPILE)
$(OBJDIR)/os_rpath$(OBJ_SUFFIX): $(srcdir)/os/os_rpath.c
	$(COMPILE)
$(OBJDIR)/os_config$(OBJ_SUFFIX): $(srcdir)/os/os_config.c
	$(COMPILE)
$(OBJDIR)/os_alloc$(OBJ_SUFFIX): $(srcdir)/os/os_alloc.c
	$(COMPILE)

# Windows-specific files
$(OBJDIR)/dllmain$(OBJ_SUFFIX): $(srcdir)/build_win32/dllmain.c
	$(COMPILE)
$(OBJDIR)/libdb.res: $(srcdir)/build_win32/libdb.rc
	$(RESOURCE_COMPILE)

# Test program.
$(OBJDIR)/.dbtestrc: $(db_platform)/db.h $(srcdir)/test/test.tcl
	$(rm) -f $@
	cat $(srcdir)/test/test.tcl > $@
$(OBJDIR)/tclAppInit$(OBJ_SUFFIX): $(srcdir)/test/tclAppInit.c
	$(COMPILE)
$(OBJDIR)/tcl_lock$(OBJ_SUFFIX): $(srcdir)/test/tcl_lock.c
	$(COMPILE)
$(OBJDIR)/tcl_log$(OBJ_SUFFIX): $(srcdir)/test/tcl_log.c
	$(COMPILE)
$(OBJDIR)/tcl_mpool$(OBJ_SUFFIX): $(srcdir)/test/tcl_mpool.c
	$(COMPILE)
$(OBJDIR)/tcl_mutex$(OBJ_SUFFIX): $(srcdir)/test/tcl_mutex.c
	$(COMPILE)
$(OBJDIR)/tcl_txn$(OBJ_SUFFIX): $(srcdir)/test/tcl_txn.c
	$(COMPILE)
$(OBJDIR)/tcl_dbm$(OBJ_SUFFIX): $(srcdir)/test/tcl_dbm.c
	$(COMPILE)
$(OBJDIR)/tcl_ndbm$(OBJ_SUFFIX): $(srcdir)/test/tcl_ndbm.c
	$(COMPILE)
$(OBJDIR)/tcl_hsearch$(OBJ_SUFFIX): $(srcdir)/test/tcl_hsearch.c
	$(COMPILE)
$(OBJDIR)/utils$(OBJ_SUFFIX): $(srcdir)/test/utils.c
	$(COMPILE)

# Replacement source files.
$(OBJDIR)/err$(OBJ_SUFFIX): $(srcdir)/clib/err.c
	$(COMPILE)
$(OBJDIR)/getcwd$(OBJ_SUFFIX): $(srcdir)/clib/getcwd.c
	$(COMPILE)
$(OBJDIR)/getlong$(OBJ_SUFFIX): $(srcdir)/clib/getlong.c
	$(COMPILE)
$(OBJDIR)/getopt$(OBJ_SUFFIX): $(srcdir)/clib/getopt.c
	$(COMPILE)
$(OBJDIR)/memcmp$(OBJ_SUFFIX): $(srcdir)/clib/memcmp.c
	$(COMPILE)
$(OBJDIR)/memcpy$(OBJ_SUFFIX): $(srcdir)/clib/memcpy.c
	$(CC) -DMEMCOPY $(CFLAGS) $?
$(OBJDIR)/memmove$(OBJ_SUFFIX): $(srcdir)/clib/memmove.c
	$(CC) -DMEMMOVE $(CFLAGS) $?
$(OBJDIR)/snprintf$(OBJ_SUFFIX): $(srcdir)/clib/snprintf.c
	$(COMPILE)
$(OBJDIR)/strdup$(OBJ_SUFFIX): $(srcdir)/clib/strdup.c
	$(COMPILE)
$(OBJDIR)/strerror$(OBJ_SUFFIX): $(srcdir)/clib/strerror.c
	$(COMPILE)
$(OBJDIR)/strsep$(OBJ_SUFFIX): $(srcdir)/clib/strsep.c
	$(COMPILE)
$(OBJDIR)/vsnprintf$(OBJ_SUFFIX): $(srcdir)/clib/vsnprintf.c
	$(COMPILE)

