#*=====================================================================*/
#*    Makefile                                                         */
#*    -------------------------------------------------------------    */
#*    Author      :  bloch                                             */
#*    Creation    :  Mon Aug 16 10:38:58 1999                          */
#*    Last change :                                                    */
#*    -------------------------------------------------------------    */
#*    Automatically generated file:                                    */
#*       bmake                                                         */
#*          -fapplication                                              */
#*          -main                                                      */
#*          pascal.scm                                                 */
#*          -o                                                         */
#*          Makefile                                                   */
#*=====================================================================*/

#*---------------------------------------------------------------------*/
#*    Target and Project                                               */
#*---------------------------------------------------------------------*/
PROJECT		= PascalHtml
VERSION		= 0
TARGET_DIR      = ../bin
TARGET_NAME     = pascal.cgi

CGI_DIR		= /usr/local/http/cgi-bin
HTML_WORK_DIR	= ../Html
HTML_DIR	= /usr/local/http/Public_html/Scripts
CGI_FORM_NAME	= pascal-post.html
LIB_BASENAME	= hqbgl
LIB_PATH        = ./../../HtmlQueryGrammar/Lib

#*---------------------------------------------------------------------*/
#*    Compilers, Flags and Tools ...                                   */
#*---------------------------------------------------------------------*/
# The Bigloo compiler
BIGLOO          = bigloo
BFLAGS_COMMON   = -afile $(AFILE) -farithmetic -L $(LIB_PATH) \
		  -library $(LIB_BASENAME)
BFLAGS_G        = -static-bigloo
BFLAGS_O        = $(BFLAGS_COMMON) -O5 -unsafe
BFLAGS_P        = $(BFLAGS_COMMON) -O5 -unsafe -static-bigloo -p
BFLAGS_P2       = $(BFLAGS_COMMON) -O5 -unsafe -static-bigloo -p2
BFLAGS          = $(BFLAGS_COMMON) $(BFLAGS_G)
LDFLAGS_G       = 
LDFLAGS_O       = -s
LDFLAGS_P       = 
LDFLAGS         = $(LDFLAGS_G)
# The interface builder
BUILDER		= buildoo
BLDFLAGS	= -no-event-loop --generate
# The C compiler
CC              = gcc
CFLAGS_O	= -O2
CFLAGS_G	= -g
CFLAGS          = $(CFLAGS_G)
CFLAGS_P        = $(CFLAGS) -p
# Which shell to use
SHELL           = /bin/sh
# Revision system
PRCS            = prcs
# Tar and compress
TAR             = tar
TARCOPT         = cf
TARXOPT         = xfp
COMPRESS        = gzip
# Afile
AFILE_EXE       = afile
AFILE		= .afile
# Tags
TAGS_EXE	= btags
TAGS		= .etags
# Depend
DEPEND_EXE	= bdepend
BMAKE_EXE	= bmake
# Profiling
BPROF_EXE	= bprof
PROF		= PROF
PROFILE_ARGS	= 

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

#*---------------------------------------------------------------------*/
#*    Automatic rules ...					       */
#*---------------------------------------------------------------------*/
%.o: %.scm
	@ $(BIGLOO) $(BFLAGS) -c $*.scm -o $*.o

%_p.o: %.scm
	@ $(BIGLOO) $(BFLAGS_P) -c $*.scm -o $*_p.o

%.mco:
	@ $(BIGLOO) $(BFLAGS) -s -mco $*.scm -o $*.mco

%.o: %.c
	@ echo $*.c:; $(CC) $(CFLAGS) -c $*.c -o $*.o

%_p.o: %.c
	@ echo $*.c:; $(CC) $(CFLAGS_P) -c $*.c -o $*.o; mv $*.o $@

%_p.mco:
	@ $(BIGLOO) $(BFLAGS) -s -mco $*.scm -o $*_p.mco

%.scm: %.bld
	@ $(BUILDER) $(BLDFLAGS) $*.bld -o $*.scm

#*---------------------------------------------------------------------*/
#*    Objects and sources ...					       */
#*---------------------------------------------------------------------*/
OBJECTS = pascal.mco pascal.o 
GUI_OBJECTS = 
OBJECTS_P = pascal_p.mco pascal_p.o 
SOURCES = pascal.scm 
SOURCES_C = pascal.c 
POPULATION = $(SOURCES) Makefile

#*---------------------------------------------------------------------*/
#*    trashcan ...						       */
#*---------------------------------------------------------------------*/
All: all
all: $(TARGET_DIR) pascal

pascal: forceafile forcetags $(TARGET_DIR)/$(TARGET_NAME)
$(TARGET_DIR)/$(TARGET_NAME): $(GUI_OBJECTS) $(OBJECTS)
	@ echo "Linking..."
	@ $(BIGLOO) $(BFLAGS) $(LDFLAGS) $(OBJECTS) -o $(TARGET_DIR)/$(TARGET_NAME)
	@ echo "$(TARGET_DIR)/$(TARGET_NAME) done."
	@ echo "-------------------------------"

optim: 
	@ $(MAKE) -f Makefile BFLAGS="$(BFLAGS_O)" LDFLAGS="$(LDFLAGS_O)" CFLAGS="$(CFLAGS_O)"

profile_comp: $(TARGET_DIR) pascal_p
pascal_p: forceafile forcetags $(TARGET_DIR)/$(TARGET_NAME)_p
$(TARGET_DIR)/$(TARGET_NAME)_p: $(OBJECTS_P)
	@ echo "Linking..."
	@ $(BIGLOO) $(BFLAGS_P) $(LDFLAGS_P) $(OBJECTS_P) -o $(TARGET_DIR)/$(TARGET_NAME)_p
	@ echo "$(TARGET_DIR)/$(TARGET_NAME)_p done."
	@ echo "-------------------------------"

extra_profile_comp:
	@ $(MAKE) -f Makefile BFLAGS_P="$(BFLAGS_P2)" profile_comp

gmon.out: $(TARGET_DIR)/$(TARGET_NAME)_p
	@- $(TARGET_DIR)/$(TARGET_NAME)_p $(PROFILE_ARGS)

profile_run: 
	@- rm -f gmon.out $(PROF)
	@ $(MAKE) -f Makefile gmon.out
	@ $(BPROF_EXE) -b $(TARGET_DIR)/$(TARGET_NAME)_p > $(PROF)

profile_clean: 
	@- rm -f gmon.out bmon.out gmon.sum $(PROF)
	@- rm -f $(OBJECTS_P)
	@- rm -f $(TARGET_DIR)/$(TARGET_NAME)_p

$(TARGET_DIR):
	@ mkdir -p $(TARGET_DIR)

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

# The clean entry removes all file that may generated but the binary files
clean: 
	-rm -f $(OBJECTS)
	-rm -f $(GUI_OBJECTS)
	-rm -f $(OBJECTS_P)
	-rm -f $(SOURCES_C)
	-rm -f $(HTML_WORK_DIR)/*~
	@- rm -f $(AFILE)
	@- rm -f $(TAGS)
	@- rm -f $(PROF)
	@- rm -f gmon.out bmon.out gmon.sum
	@ find . \( -name '*[~%]'                   \
                       -o -name '.??*[~%]'          \
                       -o -name '#*#'               \
                       -o -name '?*#'               \
                       -o -name \*core \)           \
                     -type f -exec rm {} \;   
	@ echo "cleanup done..."
	@ echo "-------------------------------"

# clean remove also the binary files
cleanall: clean
	-rm -rf $(TARGET_DIR)

#*---------------------------------------------------------------------*/
#*    Access rights and installation in the right directory            */
#*    (some privileges needed)                                         */
#*---------------------------------------------------------------------*/

install:
	chmod go+rx $(TARGET_DIR)/$(TARGET_NAME)
	cp $(TARGET_DIR)/$(TARGET_NAME) $(CGI_DIR)
	chown webadmin:www $(CGI_DIR)/$(TARGET_NAME)

	chmod go+rx $(HTML_WORK_DIR)/$(CGI_FORM_NAME)
	cp $(HTML_WORK_DIR)/$(CGI_FORM_NAME) $(HTML_DIR)
	chown webadmin:www $(HTML_DIR)/$(CGI_FORM_NAME)

#*---------------------------------------------------------------------*/
#*    Population and revision control                                  */
#*---------------------------------------------------------------------*/
.PHONY: version pop revision populate checkin checkout infofile checkoutfile

# display the current version
version:
	@ echo $(VERSION)

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

# 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 ...							       */
#*---------------------------------------------------------------------*/
.PHONY: ude forceafile forcetags bpdend updatemakefile

ude:
	@ $(MAKE) -f Makefile $(AFILE)
	@ $(MAKE) -f Makefile $(TAGS)
	@ $(MAKE) -f Makefile bdepend

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

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

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

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

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

updatemakefile:
	@ $(BMAKE_EXE) -o Makefile pascal.scm
	@ $(MAKE) -f Makefile ude

#*---------------------------------------------------------------------*/
#*    bmake entries ...                                                */
#*    -------------------------------------------------------------    */
#*    These entries are used by bmake to extend the Makefile. Don't    */
#*    use them.                                                        */
#*---------------------------------------------------------------------*/
.PHONY: getobjects getsources getpopulation getbinary

getobjects:
	@ echo $(OBJECTS)

getsources:
	@ echo $(SOURCES)

getpopulation:
	@ echo $(POPULATION)

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

getbinary_p:
	@ echo $(TARGET_DIR)/$(TARGET_NAME)_p
#bdepend start (don't edit)
#*---------------------------------------------------------------------*/
#*    Dependencies ...                                                 */
#*---------------------------------------------------------------------*/

#bdepend stop
