#*---------------------------------------------------------------------*/
#*   A pratical implementation for the Scheme programming language     */
#*                                                                     */
#*                                    ,--^,                            */
#*                              _ ___/ /|/                             */
#*                          ,;'( )__, ) '                              */
#*                         ;;  //   L__.                               */
#*                         '   \\   /  '                               */
#*                              ^   ^                                  */
#*                                                                     */
#*   Copyright (c) 1992-1999 Manuel Serrano                            */
#*                                                                     */
#*     Bug descriptions, use reports, comments or suggestions are      */
#*     welcome. Send them to                                           */
#*       bigloo-request@kaolin.unice.fr                                */
#*       http://kaolin.unice.fr/bigloo                                 */
#*                                                                     */
#*   This program is free software; you can redistribute it            */
#*   and/or modify it under the terms of the GNU General Public        */
#*   License as published by the Free Software Foundation; either      */
#*   version 2 of the License, or (at your option) any later version.  */
#*                                                                     */
#*   This program 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 General Public License for more details.                      */
#*                                                                     */
#*   You should have received a copy of the GNU General Public         */
#*   License along with this program; if not, write to the Free        */
#*   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,   */
#*   MA 02111-1307, USA.                                               */
#*---------------------------------------------------------------------*/
#*=====================================================================*/
#*    serrano/prgm/project/bigloo/bde/Makefile                         */
#*    -------------------------------------------------------------    */
#*    Author      :  Manuel Serrano                                    */
#*    Creation    :  Mon Jun  8 08:36:43 1998                          */
#*    Last change :  Mon Jan 25 08:20:41 1999 (serrano)                */
#*    -------------------------------------------------------------    */
#*    The Makefile for the Bigloo development environment.             */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    Compilers, Tools and Destinations                                */
#*---------------------------------------------------------------------*/
# which C compiler to be used
CC              = gcc               
# the directory where to install bde tools
INSTALLBIN	= /usr/local/bin
# The BMASK
BMASK		= 755
# the directory to write executable
BIN             = ../bin
# the executable used to bootstrap
BIGLOO          = $(BIN)/bigloo
# to warn when done
BEEP            = echo -n ""
# etags for info
ETAGS		= etags
# etags flags for info scanning
ETFLAGS		= --language=none \
                  --r '/^ - \(essential \|library \|bigloo \)?\(procedure\|syntax\): [^ ]+/' \
                  --r '/^ - bigloo module clause: [^ ]+/' \
                  --r '/^ - bigloo rgc procedure: [^ ]+/' \
                  --r '/^ - bigloo generic: [^ ]+/'
# the shell to be used
SHELL           = /bin/sh
# how to clean
CLEAN           = clean

#*---------------------------------------------------------------------*/
#*    Backups and revisions                                            */
#*---------------------------------------------------------------------*/
TAR             = tar
TARCOPT         = cf
TARXOPT         = xfp
GZIP            = gzip
BACKUPDIR       = $$HOUSE/backup
BACKUPNAME      = bde

#*---------------------------------------------------------------------*/
#*    Compilation flags                                                */
#*---------------------------------------------------------------------*/
BDBGFLAGS       = -g2
BOPTFLAGS       = -O2 -rm -fsharing -unsafe
BFLAGS          = $(BDBGFLAGS)
CFLAGS          = 

#*---------------------------------------------------------------------*/
#*    Sources and Objects                                              */
#*---------------------------------------------------------------------*/
#*--- afile -----------------------------------------------------------*/
AFILE_FILE	= afile
AFILE_OBJ	= $(AFILE_FILE:%=afile/%.o)

#*--- bpp -------------------------------------------------------------*/
BPP_FILE	= bpp reader
BPP_OBJ		= $(BPP_FILE:%=bpp/%.o)

#*--- btags -----------------------------------------------------------*/
BTAGS_FILE	= btags
BTAGS_OBJ	= $(BTAGS_FILE:%=btags/%.o)

#*--- bdepend ---------------------------------------------------------*/
BDEPEND_FILE	= bdepend
BDEPEND_OBJ	= $(BDEPEND_FILE:%=bdepend/%.o)

#*--- bmake -----------------------------------------------------------*/
BMAKE_FILE	= bmake template
BMAKE_OBJ	= $(BMAKE_FILE:%=bmake/%.o)

#*--- bprof -----------------------------------------------------------*/
BPROF_FILE	= bprof
BPROF_OBJ	= $(BPROF_FILE:%=bprof/%.o)

#*---------------------------------------------------------------------*/
#*    Population                                                       */
#*---------------------------------------------------------------------*/
OBJECTS		= $(AFILE_OBJ) $(BPP_OBJ) $(BTAGS_OBJ) $(BDEPEND_OBJ)  \
                  $(BMAKE_OBJ) $(BPROF_OBJ)
SOURCES_FILES	= $(OBJECTS:%.o=%.scm)

POPULATION	= $(SOURCES_FILES)           \
	          bmake/makefile.appli       \
	          bmake/makefile.library     \
                  include/args.sch           \
                  Makefile

#*---------------------------------------------------------------------*/
#*     Suffixes ...                                                    */
#*---------------------------------------------------------------------*/
.SUFFIXES:
.SUFFIXES: .scm .o .el .elc

#*---------------------------------------------------------------------*/
#*    all                                                              */
#*---------------------------------------------------------------------*/
all: $(BIN)/afile $(BIN)/bdepend $(BIN)/bmake $(BIN)/bpp $(BIN)/btags \
     $(BIN)/bprof

$(BIN)/afile: $(AFILE_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/afile $(AFILE_OBJ)

$(BIN)/bdepend: $(BDEPEND_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/bdepend $(BDEPEND_OBJ)

$(BIN)/bmake: $(BMAKE_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/bmake $(BMAKE_OBJ)

$(BIN)/bprof: $(BPROF_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/bprof $(BPROF_OBJ)

$(BIN)/bpp: $(BPP_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/bpp $(BPP_OBJ)

$(BIN)/btags: $(BTAGS_OBJ)
	@ $(BIGLOO) $(BFLAGS) -o $(BIN)/btags $(BTAGS_OBJ)

#*---------------------------------------------------------------------*/
#*    install                                                          */
#*---------------------------------------------------------------------*/
install: all
	@ if [ "$(INSTALLBIN) " = " " ]; then                           \
             echo "*** ERROR: install bde";                             \
             echo "syntax: make install INSTALLBIN=your-bin-directory"; \
             exit 1;                                                    \
          fi
	@ echo "installing bde binaries into $(INSTALLBIN) directory"
	@- cp $(BIN)/afile $(INSTALLBIN)/afile; \
           chmod $(BMASK) $(BIN)/afile
	@- cp $(BIN)/bdepend $(INSTALLBIN)/bdepend; \
           chmod $(BMASK) $(BIN)/bdepend
	@- cp $(BIN)/bmake $(INSTALLBIN)/bmake; \
           chmod $(BMASK) $(BIN)/bmake
	@- cp $(BIN)/bprof $(INSTALLBIN)/bprof; \
           chmod $(BMASK) $(BIN)/bprof
	@- cp $(BIN)/bpp $(INSTALLBIN)/bpp; \
           chmod $(BMASK) $(BIN)/bpp
	@- cp $(BIN)/btags $(INSTALLBIN)/btags; \
           chmod $(BMASK) $(BIN)/btags

#*---------------------------------------------------------------------*/
#*    uninstall                                                        */
#*---------------------------------------------------------------------*/
uninstall:
	@- rm -f $(INSTALLBIN)/afile
	@- rm -f $(INSTALLBIN)/bdepend
	@- rm -f $(INSTALLBIN)/bmake
	@- rm -f $(INSTALLBIN)/bprof
	@- rm -f $(INSTALLBIN)/bpp
	@- rm -f $(INSTALLBIN)/btags

#*---------------------------------------------------------------------*/
#*    touchall                                                         */
#*---------------------------------------------------------------------*/
touchall:
	touch $(SOURCE_FILES)

#*---------------------------------------------------------------------*/
#*     clean ...                                                       */
#*---------------------------------------------------------------------*/
.PHONY: Clean clean fast-clean

fast-clean:
	@- rm -f Dmakefile
	@- rm -f $(OBJECTS)
	@ find . \( -name '*[~%]'                   \
                       -o -name '.??*[~%]'          \
                       -o -name '#*#'               \
                       -o -name '?*#'               \
                       -o -name \*core \)           \
                     -type f -exec rm {} \;   
	@ $(BEEP)
	@ echo "cleanup done..."
	@ echo "-------------------------------"

clean: fast-clean

Clean: clean
	@- rm -f $(BIN)/afile 
	@- rm -f $(BIN)/bdepend 
	@- rm -f $(BIN)/bmake 
	@- rm -f $(BIN)/bprof
	@- rm -f $(BIN)/bpp 
	@- rm -f $(BIN)/btags

Dclean: clean
DClean: Clean

#*---------------------------------------------------------------------*/
#*    distrib                                                          */
#*    -------------------------------------------------------------    */
#*    Prepare Cigloo for a distribution                                */
#*---------------------------------------------------------------------*/
distrib:
	@ if [ `pwd` = $$HOME/prgm/project/bigloo/bde ]; then        \
             echo "*** ERROR:Illegal dir to make a distrib `pwd`";   \
             exit 1;                                                 \
          fi
	@ $(MAKE) $(CLEAN)
	@ $(MAKE) Dmakefile
	@ $(BIN)/copyright $(POPULATION)

#*---------------------------------------------------------------------*/
#*    backup                                                           */
#*---------------------------------------------------------------------*/
backup:
	@ echo "Backuping in: $(BACKUPDIR)/$(BACKUPNAME)"
	@ (\rm -f $(BACKUPDIR)/$(BACKUPNAME).tar.gz;                   \
	   cleanup;                                                    \
           tar cf $(BACKUPDIR)/$(BACKUPNAME).tar $(POPULATION);        \
           gzip $(BACKUPDIR)/$(BACKUPNAME).tar)
	@ echo "done..."
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    restore ...                                                      */
#*---------------------------------------------------------------------*/
restore:
	@ echo "Restoring from: $(BACKUPDIR)/$(BACKUPNAME)"
	@ (gzip -d --to-stdout $(BACKUPDIR)/$(BACKUPNAME).tar.gz | tar xfp -)
	@ echo "done..."
	@ echo "-------------------------------"

#*---------------------------------------------------------------------*/
#*    pop                                                              */
#*    -------------------------------------------------------------    */
#*    This entry is used by the bigloo/Makefile (the main Bigloo       */
#*    makefile) to get the list of file that populate a revision.      */
#*---------------------------------------------------------------------*/
.PHONY: pop
pop:
	@ echo $(POPULATION:%=$(BACKUPNAME)/%)

#*---------------------------------------------------------------------*/
#*    Dmakefile                                                        */
#*    -------------------------------------------------------------    */
#*    This entry build the Dmakefile file that is used to boot         */
#*    Cigloo on a new host.                                            */
#*    -------------------------------------------------------------    */
#*    This entry can be used only on a platform that has bootstrapped  */
#*    Bigloo. That is, this makefile cannot be generated on a          */
#*    platform that wants to install Bigloo.                           */
#*---------------------------------------------------------------------*/
Dmakefile: Makefile
	@- rm -f Dmakefile
	@ echo "# !!! This is a generated file, don't edit !!!" > $@
	@ echo "BIGLOO=bigloo" >> $@
	@ echo "BFLAGS=-unsafe -O4" >> $@
	@ echo "shell=sh" >> $@
	@ echo "" >> $@
	@ echo "AFILE_OBJ=$(AFILE_OBJ)" >> $@
	@ echo "BDEPEND_OBJ=$(BDEPEND_OBJ)" >> $@
	@ echo "BMAKE_OBJ=$(BMAKE_OBJ)" >> $@
	@ echo "BPROF_OBJ=$(BPROF_OBJ)" >> $@
	@ echo "BPP_OBJ=$(BPP_OBJ)" >> $@
	@ echo "BTAGS_OBJ=$(BTAGS_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "all: ../bin/afile ../bin/bdepend ../bin/bmake ../bin/bpp ../bin/btags ../bin/bprof" >> $@
	@ echo "" >> $@
	@ echo "../bin/afile: $$""(AFILE_OBJ)" >> $@
	@ echo "	$$""(BIGLOO) $$""(BFLAGS) -o ../bin/afile $$""(AFILE_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "../bin/bdepend: $$""(BDEPEND_OBJ)" >> $@
	@ echo "	@ $$""(BIGLOO) $$""(BFLAGS) -o ../bin/bdepend $$""(BDEPEND_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "../bin/bmake: $$""(BMAKE_OBJ)" >> $@
	@ echo "	@ $$""(BIGLOO) $$""(BFLAGS) -o ../bin/bmake $$""(BMAKE_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "../bin/bprof: $$""(BPROF_OBJ)" >> $@
	@ echo "	@ $$""(BIGLOO) $$""(BFLAGS) -o ../bin/bprof $$""(BPROF_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "../bin/bpp: $$""(BPP_OBJ)" >> $@
	@ echo "	@ $$""(BIGLOO) $$""(BFLAGS) -o ../bin/bpp $$""(BPP_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "../bin/btags: $$""(BTAGS_OBJ)" >> $@
	@ echo "	@ $$""(BIGLOO) $$""(BFLAGS) -o ../bin/btags $$""(BTAGS_OBJ)" >> $@
	@ echo "" >> $@
	@ echo "clean:" >> $@
	@ echo '	@- rm -f $$(OBJECTS)' >> $@
	@ echo '	@- rm -f $$(CIGLOO_DEST)' >> $@
	@ echo "" >> $@
	@ echo "%.o: %.scm" >> $@
	@ echo '	$$(BIGLOO) -c $$(BFLAGS) $$*.scm -o $$*.o' >> $@

#*---------------------------------------------------------------------*/
#*     .scm --> .o                                                     */
#*---------------------------------------------------------------------*/
.scm.o:
	@ $(BIGLOO) $(BFLAGS) -c $*.scm -o $*.o

#*---------------------------------------------------------------------*/
#*    bmake dependencies                                               */
#*---------------------------------------------------------------------*/
bmake/template.o: bmake/makefile.library bmake/makefile.appli
