# Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.

# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.

# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB.  If not,
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.

#
#	Makefile for libdb.
#
#	The code is lifted straight from the db 2.3.12 distribution
#	with minimal changes.
#

CC=gcc

subdir-dirs = btree common db db185 dbm hash lock log mp mutex os txn \
	progs/db_archive progs/db_checkpoint  progs/db_deadlock \
	progs/db_dump progs/db_dump185 progs/db_load progs/db_printlog \
	progs/db_recover progs/db_stat clib

headers = db.h db_185.h

vpath %.c $(subdir-dirs)

extra-libs := libdb
extra-libs-others := $(extra-libs)
extra-objs = getlong.o

libdb-routines := bt_close bt_compare bt_conv bt_cursor bt_delete \
	bt_open bt_page bt_put bt_rec bt_recno bt_rsearch bt_search \
	bt_split bt_stat btree_auto db db_appinit db_apprec \
	db_auto \
	db_byteorder db_conv db_dispatch db_dup db_err db_log2 os_alloc \
	os_abs os_config os_dir os_fid os_fsync os_map os_oflags \
	os_open os_rpath os_rw os_seek os_sleep os_stat os_unlink \
	os_spin db_overflow db_pr db_rec db_region db_ret db_salloc \
	db_shash db_thread hash hash_auto hash_conv hash_debug \
	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 dbm db185

others		:= makedb db_archive \
		db_dump db_recover db_stat db_printlog
others2		:= db_checkpoint db_deadlock db_load

CFLAGS += -O2 -I. -I./include -include ./compat.h
libdb.so-version=.3
objpfx=

all: libdb.so$(libdb.so-version)

%.o: %.c
	$(CC) $(CFLAGS) -c -g -o $@ $<
%.os: %.c
	$(CC) $(CFLAGS) -c -fPIC -o $@ $<

libdb.a: $(patsubst %,%.o,$(libdb-routines))
	rm -f $@
	ar cq $@ $^
	ranlib $@

libdb.so$(libdb.so-version): $(patsubst %,%.os,$(libdb-routines))
	$(CC) -Wl,-O1 -Wl,--version-script=Versions -Wl,-soname=libdb.so$(libdb.so-version) -shared -o $@ $^
	ln -sf  $@ libdb.so

$(others): %: %.o
	$(CC) -o $@ $< -L. -ldb

$(others2): %: %.o
	$(CC) -o $@ $< $(extra-objs) -L. -ldb

clean:
	rm -f $(patsubst %,%.o,$(libdb-routines))
	rm -f $(patsubst %,%.os,$(libdb-routines))
	rm -f $(extra-objs) *~ $(others) $(others2)
	rm -f libdb.a libdb.so libdb.so$(libdb.so-version)
	rm -f $(patsubst %,%.o,$(others) $(others2))
