#*=====================================================================*/
#*    serrano/prgm/project/bigloo/bdb/blib/Makefile                    */
#*    -------------------------------------------------------------    */
#*    Author      :  serrano                                           */
#*    Creation    :  Wed Jul 28 08:50:29 1999                          */
#*    Last change :  Mon Aug 21 18:42:07 2000 (serrano)                */
#*    Copyright   :  1999-2000 Manuel Serrano, see LICENSE file        */
#*    -------------------------------------------------------------    */
#*    Automatically generated file:                                    */
#*       bmake                                                         */
#*          -flibrary                                                  */
#*          -heap                                                      */
#*          make-lib.scm                                               */
#*          -o                                                         */
#*          Makefile                                                   */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    The default configuration                                        */
#*---------------------------------------------------------------------*/
include ../../Makefile.config

#*---------------------------------------------------------------------*/
#*    Target and Project                                               */
#*---------------------------------------------------------------------*/
PROJECT		= bdb
VERSION		= 0
TARGET_DIR      = $(BOOTLIBDIR)
TARGET_NAME     = bdb
TARGET_HEAP	= $(TARGET_DIR)/$(TARGET_NAME).heap
TARGET_LIB	= $(TARGET_DIR)/lib$(TARGET_NAME)

#*---------------------------------------------------------------------*/
#*    Compilers, Flags and Tools ...                                   */
#*---------------------------------------------------------------------*/
# The Bigloo compiler
BIGLOO          = $(BOOTBINDIR)/bigloo
BFLAGS_COMMON   = -afile $(AFILE) -init-lib -copt $(CPICFLAGS)
BFLAGS_G        = $(BFLAGS_COMMON) -g
BFLAGS_O        = $(BFLAGS_COMMON) -O5 -unsafe -farithmetic
BFLAGS_P        = $(BFLAGS_COMMON) $(BFLAGS_O) -p
BFLAGS_D        = $(BFLAGS_COMMON) $(BFLAGS_O) -gheap
BFLAGS          = $(BFLAGS_G)
BHEAPFLAGS	= -unsafe -q -mkaddheap -mkaddlib -afile $(AFILE)
# The C compiler
TK_LIB		= $$HOME/prgm/project/bglk/tk
BGLK_INCLUDE    = -IIncludes/generic -IIncludes/Tcl
BGL_INC_DIR	= Includes
CFLAGS_COMMON	= -I$(BGL_INC_DIR) -I. -I$(BOOTLIBDIR) $(CPICFLAGS)
CFLAGS_O	= $(CFLAGS) $(CFLAGS_COMMON)
CFLAGS_G	= -g $(CFLAGS_COMMON)
CFLAGS_P        = -p $(CFLAGS_COMMON)
CFLAGS_GCDBG	= $(CFLAGS) $(CGCFLAGS) $(CGCFLAGS) $(BACKPTRFLAGS)
CFLAGS_D        = $(CFLAGS_COMMON) $(CFLAGS_GCDBG)
CFLAGS          = $(CFLAGS_G)
# Which shell to use
SHELL           = /bin/sh
# Revision system
PRCS            = prcs
# Afile
AFILE_EXE       = afile
AFILE		= .afile
# Tags
TAGS_EXE	= btags
TAGS		= .etags
# Depend
DEPEND_EXE	= bdepend -fno-mco
BMAKE_EXE	= bmake
# Profiling
BPROF_EXE	= bprof
PROF		= PROF
PROFILE_ARGS	= 

#*---------------------------------------------------------------------*/
#*    Suffixes ...						       */
#*---------------------------------------------------------------------*/
.SUFFIXES:

#*---------------------------------------------------------------------*/
#*    Objects and sources ...					       */
#*---------------------------------------------------------------------*/
OBJECTS = table.o stat.o env.o bdb.o gc_dump.o
OBJECTS_P = table_p.o stat_p.o env_p.o bdb_p.o gc_dump_p.o
OBJECTS_D = table_d.o stat_d.o env_d.o bdb_d.o gc_dump_d.o
SOURCES = table.c stat.c env.scm bdb.scm gc_dump.c color.h
POPULATION = $(SOURCES) make-lib.scm Makefile

#*---------------------------------------------------------------------*/
#*    all ...				         		       */
#*---------------------------------------------------------------------*/
All: all
all: heap libs

#*---------------------------------------------------------------------*/
#*    heap ...                                                         */
#*---------------------------------------------------------------------*/
heap: $(TARGET_HEAP)
$(TARGET_HEAP): $(SOURCES)
	@- rm -f $(TARGET_HEAP)
	@ $(BIGLOO) $(BHEAPFLAGS) make-lib.scm -addheap $(TARGET_HEAP)
	@ echo "$(TARGET_HEAP) done."
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    includes                                                         */
#*    -------------------------------------------------------------    */
#*    Install the proper GC include files in the current directory.    */
#*---------------------------------------------------------------------*/
includes: 
	cp ../../gc-boehm/*.h .

#*---------------------------------------------------------------------*/
#*    libs ...                                                         */
#*---------------------------------------------------------------------*/
libs: lib_u lib_d
lib_u: lib_u.so lib_u.a 
lib_d: lib_d.so lib_d.a

# unsafe version
lib_u.a: .Olib_u
	@ $(MAKE) _lib.a \
             CFLAGS="$(CFLAGS_O)" \
             BFLAGS="$(BFLAGS_O)" \
             OBJECTS="$(OBJECTS:%=.Olib_u/%)" \
             SUFFIX="_u"

lib_u.so: .Olib_u
	@ $(MAKE) _lib.so \
             CFLAGS="$(CFLAGS_O)" \
             BFLAGS="$(BFLAGS_O)" \
             OBJECTS="$(OBJECTS:%=.Olib_u/%)" \
             SUFFIX="_u"

# heap debuggin version
lib_d.a: .Olib_d
	@ $(MAKE) _lib.a \
             CFLAGS="$(CFLAGS_D)" \
             BFLAGS="$(BFLAGS_D)" \
             OBJECTS="$(OBJECTS:%=.Olib_d/%)" \
             SUFFIX="_d"

lib_d.so: .Olib_d
	@ $(MAKE) _lib.so \
             CFLAGS="$(CFLAGS_D)" \
             BFLAGS="$(BFLAGS_D)" \
             OBJECTS="$(OBJECTS:%=.Olib_d/%)" \
             SUFFIX="_d"

# safe version (normally not used)
lib.a: .Olib
	@ $(MAKE) _lib.a \
             CFLAGS="$(CFLAGS_G)" \
             BFLAGS="$(BFLAGS_G)" \
             OBJECTS="$(OBJECTS:%=.Olib/%)" \
             SUFFIX=""

lib.so: .Olib
	@ $(MAKE) _lib.so \
             CFLAGS="$(CFLAGS_G)" \
             BFLAGS="$(BFLAGS_G)" \
             OBJECTS="$(OBJECTS:%=.Olib/%)" \
             SUFFIX=""

# profile version (normally not used)
lib_p.a: .Olib_p
	@ $(MAKE) _lib.a \
             CFLAGS="$(CFLAGS_P)" \
             BFLAGS="$(BFLAGS_P)" \
             OBJECTS="$(OBJECTS:%=.Olib_p/%)" \
             SUFFIX="_p"

lib_p.so: .Olib_p
	@ $(MAKE) _lib.so \
             CFLAGS="$(CFLAGS_P)" \
             BFLAGS="$(BFLAGS_P)" \
             OBJECTS="$(OBJECTS:%=.Olib_p/%)" \
             SUFFIX="_p"

_lib.a: $(TARGET_LIB)$(SUFFIX)

$(TARGET_LIB)$(SUFFIX): $(OBJECTS)
	@ /bin/rm -f $(TARGET_LIB)$(SUFFIX).a
	@ $(AR) $(ARFLAGS) $(TARGET_LIB)$(SUFFIX).a $(OBJECTS)
	@ $(RANLIB) $(TARGET_LIB)$(SUFFIX).a
	@ echo "$(TARGET_LIB)$(SUFFIX).a done..."
	@ echo "-------------------------------"

_lib.so: $(TARGET_LIB)$(SUFFIX).so

$(TARGET_LIB)$(SUFFIX).so: $(OBJECTS)
	@ if [ ! "$(LD)" = "true" ]; then \
	    $(LD) -o $(TARGET_LIB)$(SUFFIX).so $(OBJECTS) -L$(TARGET_DIR) \
                     -lm -lc; \
	    echo "$(TARGET_LIB)$(SUFFIX).so done..."; \
	    echo "-------------------------------"; \
          fi

.Olib_u:
	mkdir .Olib_u
.Olib:
	mkdir .Olib
.Olib_p:
	mkdir .Olib_p
.Olib_d:
	mkdir .Olib_d

#*---------------------------------------------------------------------*/
#*     clean ...                                                       */
#*---------------------------------------------------------------------*/
.PHONY: clean cleanall

clean:
	@ $(MAKE) dir-clean OBJECTS="$(OBJECTS:%=.Olib/%)"
	@ $(MAKE) dir-clean OBJECTS="$(OBJECTS:%=.Olib_u/%)"
	@ $(MAKE) dir-clean OBJECTS="$(OBJECTS:%=.Olib_d/%)"
	@ -rm -f $(TARGET_HEAP)
	@ -rm -f $(SOURCES_P)
	@ find . \( -name '*[~%]' \
                       -o -name '.??*[~%]' \
                       -o -name '#*#' \
                       -o -name '*.ast' \
                       -o -name '*.escm' \
                       -o -name '?*#' \
                       -o -name \*core \) \
                     -type f -exec rm {} \;   
	@ echo "Cleanup done..."
	@ echo "-------------------------------"

dir-clean:
	@- rm -f $(OBJECTS)

cleanall: clean
	@- rm -f $(TARGET_HEAP)
	@- rm -f $(TARGET_LIB)_u.a $(TARGET_LIB)_u.so
	@- rm -f $(TARGET_LIB)_d.a $(TARGET_LIB)_d.so
	@- rm -f -r .Olib
	@- rm -f -r .Olib_u
	@- rm -f -r .Olib_d

distclean: cleanall

#*---------------------------------------------------------------------*/
#*    Population and revision control                                  */
#*---------------------------------------------------------------------*/
# display the current version
version:
	@ echo $(VERSION)

# just display the population
pop:
	@ echo $(POPULATION)
	@ echo *.h

# make a prcs revision
revision: populate checkin

populate: $(PROJECT).prj
	$(PRCS) populate --force $(PROJECT) $(POPULATION)

checkin: 
	$(PRCS) checkin --force -r$(VERSION).@ $(PROJECT)

# display how to check out a prcs revision
checkout:
	@ echo "$(PRCS) checkout -r$(VERSION).@ $(PROJECT)"

infofile:
	@ $(PRCS) info --force $(PROJECT) $(FILE)

checkoutfile:
	@ $(PRCS) checkout --force -r$(FILEVERSION) $(PROJECT) $(FILE)

$(PROJECT).prj:
	@ $(PRCS) checkout --force $(PROJECT)
	@ cat $(PROJECT).prj | sed -e s,"(Populate-Ignore ())","(Populate-Ignore (\"\\\\\\\\\\.o\$$\" \"\\\\\\\\\\~$$\" \"\\\\\\\\\\.log\$$\" \"\\\\\\\\\\.ps\$$\" \"\\\\\\\\\\.aux\$$\" \"\\\\\\\\\\.date_of_backup\$$\" \"\\\\\\\\\\.so\$$\" \"\\\\\\\\\\.a\$$\"))", > $(PROJECT).dprj; rm -f $(PROJECT).prj; mv $(PROJECT).dprj $(PROJECT).prj


#*---------------------------------------------------------------------*/
#*    Tar ...							       */
#*---------------------------------------------------------------------*/
tar.gz: $(PROJECT).tar.gz

$(PROJECT).tar.gz: ../$(PROJECT).tar
	@ $(COMPRESS) ../$(PROJECT).tar; mv ../$(PROJECT).tar.gz .

# This entry works only with gnu-make. Change it for other Makefiles.
../$(PROJECT).tar: 
	@ cd ..; \
	  $(TAR) $(TARCOPT) $(PROJECT).tar $(POPULATION:%=$(PROJECT)/%)

#*---------------------------------------------------------------------*/
#*    Bee ...							       */
#*---------------------------------------------------------------------*/
bee ude: 
	@ $(MAKE) $(AFILE)
	@ $(MAKE) $(TAGS)
	@ $(MAKE) bdepend

forceafile:
	@ if [ ! -f $(AFILE) ]; then \
             $(MAKE) $(AFILE); \
          fi

$(AFILE): $(SOURCES)
	@ $(AFILE_EXE) -o $(AFILE) $(SOURCES)

forcetags:
	@ if [ ! -f $(TAGS) ]; then \
             $(MAKE) $(TAGS); \
          fi

$(TAGS): $(SOURCES)
	@ $(TAGS_EXE) -o $(TAGS) $(SOURCES)

bdepend: $(SOURCES)
	@ $(DEPEND_EXE) -o Makefile $(SOURCES)

updatemakefile:
	@ $(BMAKE_EXE) -flibrary -o Makefile -heap make-lib.scm

addentry:
	@ $(BMAKE_EXE) -flibrary -o Makefile \
          -source $(SRC_ENTRY) -object $(OBJ_ENTRY)

#*---------------------------------------------------------------------*/
#*    bmake entries ...                                                */
#*    -------------------------------------------------------------    */
#*    These entries are used by bmake to extend the Makefile. Don't    */
#*    use them.                                                        */
#*---------------------------------------------------------------------*/
getobjects:
	@ echo $(OBJECTS)

getsources:
	@ echo $(SOURCES)

getpopulation:
	@ echo $(POPULATION)

getbinary:
	@ echo $(TARGET_DIR)/$(TARGET_NAME)

#*---------------------------------------------------------------------*/
#*    domestic install                                                 */
#*---------------------------------------------------------------------*/
domestic-install:
	cp lib/* ../../lib

domestic: libs lib_d domestic-install

# Rules
#*---------------------------------------------------------------------*/
#*    # GUI objects                                                    */
#*---------------------------------------------------------------------*/
#*---------------------------------------------------------------------*/
#*    # Bigloo objects                                                 */
#*---------------------------------------------------------------------*/
.Olib_u/env.o: env.scm
	@ $(BIGLOO) $(BFLAGS) -c env.scm -o .Olib_u/env.o
.Olib/env.o: env.scm
	@ $(BIGLOO) $(BFLAGS) -c env.scm -o .Olib/env.o
.Olib_p/env.o: env.scm
	@ $(BIGLOO) $(BFLAGS) -c env.scm -o .Olib_p/env.o
.Olib_d/env.o: env.scm
	@ $(BIGLOO) $(BFLAGS) -c env.scm -o .Olib_d/env.o

.Olib_u/bdb.o: bdb.scm
	@ $(BIGLOO) $(BFLAGS) -c bdb.scm -o .Olib_u/bdb.o
.Olib/bdb.o: bdb.scm
	@ $(BIGLOO) $(BFLAGS) -c bdb.scm -o .Olib/bdb.o
.Olib_p/bdb.o: bdb.scm
	@ $(BIGLOO) $(BFLAGS) -c bdb.scm -o .Olib_p/bdb.o
.Olib_d/bdb.o: bdb.scm
	@ $(BIGLOO) $(BFLAGS) -c bdb.scm -o .Olib_d/bdb.o

.Olib_u/dump.o: dump.scm
	@ $(BIGLOO) $(BFLAGS) -c dump.scm -o .Olib_u/dump.o
.Olib/dump.o: dump.scm
	@ $(BIGLOO) $(BFLAGS) -c dump.scm -o .Olib/dump.o
.Olib_p/dump.o: dump.scm
	@ $(BIGLOO) $(BFLAGS) -c dump.scm -o .Olib_p/dump.o
.Olib_d/dump.o: dump.scm
	@ $(BIGLOO) $(BFLAGS) -c dump.scm -o .Olib_d/dump.o

#*---------------------------------------------------------------------*/
#*    # C objects                                                      */
#*---------------------------------------------------------------------*/
.Olib_u/table.o: table.c
	$(CC) $(CFLAGS) -c table.c -o .Olib_u/table.o
.Olib/table.o: table.c
	$(CC) $(CFLAGS) -c table.c -o .Olib/table.o
.Olib_p/table.o: table.c
	$(CC) $(CFLAGS) -c table.c -o .Olib_p/table.o
.Olib_d/table.o: table.c
	$(CC) $(CFLAGS) -c table.c -o .Olib_d/table.o

.Olib_u/stat.o: stat.c
	$(CC) $(CFLAGS) -c stat.c -o .Olib_u/stat.o
.Olib/stat.o: stat.c
	$(CC) $(CFLAGS) -c stat.c -o .Olib/stat.o
.Olib_p/stat.o: stat.c
	$(CC) $(CFLAGS) -c stat.c -o .Olib_p/stat.o
.Olib_d/stat.o: stat.c
	$(CC) $(CFLAGS) -c stat.c -o .Olib_d/stat.o

.Olib_u/gc_dump.o: gc_dump.c color.h
	$(CC) $(CFLAGS) -c gc_dump.c -o .Olib_u/gc_dump.o
.Olib/gc_dump.o: gc_dump.c color.h
	$(CC) $(CFLAGS) -c gc_dump.c -o .Olib/gc_dump.o
.Olib_p/gc_dump.o: gc_dump.c color.h
	$(CC) $(CFLAGS) -c gc_dump.c -o .Olib_p/gc_dump.o
.Olib_d/gc_dump.o: gc_dump.c color.h
	$(CC) $(CFLAGS) -c gc_dump.c -o .Olib_d/gc_dump.o

#bdepend start (don't edit)
#*---------------------------------------------------------------------*/
#*    Dependencies ...                                                 */
#*---------------------------------------------------------------------*/

#bdepend stop
