#               ,,,
#              (o o)
# ####=====oOO--(_)--OOO==========================================####
# ##                                                                ##
# ##   This file is part of FPT : A Formal Proof Toolkit            ##
# ##   (C) 1996, MASI, CAO-VLSI Team                                ##
# ##                                                                ##
# ##   File            :  Makefike                                  ##
# ##   Author          :  Olivier SIROL                             ##
# ##   Date            :  Jun 1996                                  ##
# ##                                                                ##
# ##   E-mail support  :  cao-vlsi@masi.ibp.fr                      ##
# ##                                                                ##
# ####============================================================####
#
#
# $Id: Makefile,v 1.45 1997/05/23 14:27:36 sirol Exp $
#
#


include $(TOP)/etc/$(MACHINE).mk
include $(TOP)/etc/libraries.mk

# encore des bugs dans les libs beh bvl et bhl de pirouz
# on utilise celles de ludo

include local.mk

-include revision.mk

FPT_H   = fpt101.h
FPT_LIB = libFpt101.a
FPT_L   = -lFpt101

####==============================================================####
##                                                                  ##
##                            Target                                ##
##                                                                  ##
####==============================================================####

LOCAL_TARGET_LIB = ../lib
LOCAL_TARGET_INC = ../include
LOCAL_TARGET_BIN = $(TARGET_BIN)
#LOCAL_TARGET_LIB = .
#LOCAL_TARGET_INC = .
#LOCAL_TARGET_BIN = .

LOCAL_FPT_INC    = $(FPT_H)
LOCAL_FPTLIB_LIB = $(FPT_LIB)
LOCAL_FPT_BIN    = yeap
LOCAL_FPT_BIN2   = yeaptest

####==============================================================####
##                                                                  ##
##                            Variables                             ##
##                                                                  ##
####==============================================================####

LOCAL_CFLAGS = $(CFLAGS) -D$(MACHINE) -O
#LOCAL_CFLAGS = $(CFLAGS) -D$(MACHINE) -g -pg -Wall 
#LOCAL_CFLAGS = $(CFLAGS) -D$(MACHINE) -DDEBUG_FPT -g

####==============================================================####
##                                                                  ##
##                             Include                              ##
##                                                                  ##
####==============================================================####

LOCAL_INCLUDE = -I$(ALLIANCE_INCLUDE) -I$(LOCAL_TARGET_INC)

####==============================================================####
##                                                                  ##
##                             Library                              ##
##                                                                  ##
####==============================================================####


LOCAL_MBK_LIB = -L$(ALLIANCE_LIB) \
                $(MUT_L)

LOCAL_ABL_LIB = -L$(LOCAL_TARGET_LIB) \
                $(ABL_L)              \
                $(AUT_L)

LOCAL_BDD_LIB = -L$(LOCAL_TARGET_LIB) \
                $(BDD_L) 

LOCAL_PAT_LIB = -L$(LOCAL_TARGET_LIB) \
                $(PPT_L) \
                $(PAT_L)

LOCAL_BEH_LIB = -L$(LOCAL_TARGET_LIB) \
                $(BVL_L) \
                $(BHL_L) \
                $(BEH_L) \
                $(LOG_L)

LOCAL_FPT_LIB = -L$(LOCAL_TARGET_LIB) \
                $(FPT_L)

LOCAL_LIB     = $(LOCAL_FPT_LIB) \
                $(LOCAL_PAT_LIB) \
                $(LOCAL_BEH_LIB) \
                $(LOCAL_BDD_LIB) \
                $(LOCAL_ABL_LIB) \
                $(LOCAL_MBK_LIB)

####==============================================================####
##                                                                  ##
##                             Define                               ##
##                                                                  ##
####==============================================================####

LOCAL_MBK_DEFINE   = -DMUT_H='"$(MUT_H)"'

LOCAL_PAT_DEFINE   = -DPAT_H='"$(PAT_H)"' \
                     -DPPT_H='"$(PPT_H)"'

LOCAL_BEH_DEFINE   = -DBEH_H='"$(BEH_H)"' \
                     -DBVL_H='"$(BVL_H)"' \
                     -DLOG_H='"$(LOG_H)"'

LOCAL_FPT_DEFINE   = -DFPT_H='"$(FPT_H)"'

LOCAL_BDD_DEFINE   = -DBDD_H='"$(BDD_H)"' 

LOCAL_ABL_DEFINE   = -DAUT_H='"$(AUT_H)"' \
                     -DABL_H='"$(ABL_H)"'

LOCAL_VERSION_DEFINE   = -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
                         -DFPT_VERSION='"$(REV_NUMBER)"'        \
                         -DFPT_DATE='"$(REV_DATE)"'             \
                         -DYEAP_BANNER='"$(REV_NUMBER) [$(REV_DATE)]"'      \
                         -DMAGIC_VERSION='"$(REV_NUMBER)"'      \
                         -DMAGIC_DATE='"$(REV_DATE)"' 

LOCAL_DEFINE       = $(LOCAL_VERSION_DEFINE) \
                     $(LOCAL_FPT_DEFINE) \
                     $(LOCAL_PAT_DEFINE) \
                     $(LOCAL_BEH_DEFINE) \
                     $(LOCAL_BDD_DEFINE) \
                     $(LOCAL_ABL_DEFINE) \
                     $(LOCAL_MBK_DEFINE) 

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)



####==============================================================####
##                                                                  ##
##                              Object                              ##
##                                                                  ##
####==============================================================####

PUBLIC_FPT_INC  = fpt_public.h 

LOCAL_FPT_OBJ   = fpt_error.o fpt_debug.o fpt_befig.o          \
                  fpt_verify.o fpt_pattern.o fpt_transfunc.o 

LOCAL_MAGIC_OBJ = yeap_main.o

LOCAL_OBJ = $(LOCAL_FPT_OBJ)   \
            $(LOCAL_MAGIC_OBJ)

LOCAL_SRC = $(LOCAL_OBJ:.o=.c)

LOCAL_RCS = $(wildcard RCS/*)
LOCAL_S = $(LOCAL_RCS:,v=)



.c.o: 
	$(CC) -c -o $@ $(LOCAL_CFLAGS) $(LOCAL_HEADER) $<


####==============================================================####
##                                                                  ##
##                            MAGIC - FPT                           ##
##                                                                  ##
####==============================================================####


all distrib : $(LOCAL_TARGET_INC)/$(LOCAL_FPT_INC)     \
          $(LOCAL_TARGET_LIB)/$(LOCAL_FPTLIB_LIB)  \
          $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN2)    \
          $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN) 
	@if [ -f $(LOCAL_TARGET_BIN)/INSTALLED ] ; \
	then $(RM) $(LOCAL_TARGET_BIN)/INSTALLED ; \
	else exit 0 ; \
	fi
	@$(TOUCH) distrib


$(LOCAL_TARGET_INC)/$(LOCAL_FPT_INC) : $(PUBLIC_FPT_INC)
	sed -e "s/@FPTLIBVERSION@/\"$(REV_NUMBER)\"/g" $(PUBLIC_FPT_INC) > $(LOCAL_TARGET_INC)/$(LOCAL_FPT_INC)
	$(TOUCH) $(PUBLIC_FPT_INC)


$(LOCAL_TARGET_LIB)/$(LOCAL_FPTLIB_LIB) : $(LOCAL_FPT_OBJ)
	$(AR) $(ARFLAGS) $(LOCAL_TARGET_LIB)/$(LOCAL_FPTLIB_LIB) $(LOCAL_FPT_OBJ)
	$(RANLIB) $(LOCAL_TARGET_LIB)/$(LOCAL_FPTLIB_LIB)
	$(TOUCH) $(LOCAL_TARGET_INC)/$(LOCAL_FPT_INC)


$(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN2) : $(LOCAL_FPT_BIN2).sh
	cp -f $(LOCAL_FPT_BIN2).sh $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN2)


$(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN) : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN) \
	$(LOCAL_MAGIC_OBJ) $(LOCAL_LIB) -lm
	@echo "############################################## "
	@echo "################      O K     ################ "
	@echo "############################################## "


rev revision:
	getrev
	@echo "################################################"
	@echo "## revision.mk changed, please run make again ##" 
	@echo "################################################"
	exit 1 

dep depend :
	@if [ ! -f .depend ] ; \
	then echo "# DO NOT DELETE THIS LINE" > .depend ; \
	fi
	makedepend -f .depend -s "# DO NOT DELETE THIS LINE" \
	-- $(LOCAL_CFLAGS) $(LOCAL_HEADER) -- $(LOCAL_SRC)
#	gcc -MM $(LOCAL_CFLAGS) $(LOCAL_HEADER) $(LOCAL_SRC)
	$(RM) .depend.bak

ci :
	ci RCS/*

ctag tag  TAG :
	ctags *.c *.h
	etags *.c *.h

digi :
	syf -ACEFV -o digi

pp :
	$(CC) -E $(LOCAL_CFLAGS) $(LOCAL_HEADER) yeap_main.c

####==============================================================####
##                                                                  ##
##                              Clean                               ##
##                                                                  ##
####==============================================================####

myclean :
	$(RM) -f $(LOCAL_OBJ)                               \
                 .*.bak *.bak *~ *.ESV *_vs_*.pat core 

clean distclean realclean :
	$(RM) -f $(LOCAL_OBJ)                               \
                 $(LOCAL_TARGET_INC)/$(LOCAL_FPT_INC)       \
                 $(LOCAL_TARGET_LIB)/$(LOCAL_FPTLIB_LIB)    \
                 $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN2)      \
                 $(LOCAL_TARGET_BIN)/$(LOCAL_FPT_BIN)       \
                 .*.bak *.bak *~ *.ESV *_vs_*.pat core .depend



####==============================================================####
##                                                                  ##
##                        Dependancy list                           ##
##                                                                  ##
####==============================================================####


-include .depend
