# /*------------------------------------------------------------\
# |                                                             |
# | Tool   :                      VASY                           |
# |                                                             |
# | File   :                    Makefile                        |
# |                                                             |
# | Author :                 Jacomme Ludovic                    |
# |                                                             |
# | Date    :                   30_01_98                        |
# |                                                             |
# \------------------------------------------------------------*/

include $(ALLIANCE_TOP)/etc/$(ALLIANCE_OS).mk
include $(ALLIANCE_TOP)/etc/libraries.mk
include local.mk

# /*------------------------------------------------------------\
# |                                                             |
# |                            Variables                        |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_CFLAGS = $(CFLAGS) -D$(ALLIANCE_OS) 
# -Werror

# /*------------------------------------------------------------\
# |                                                             |
# |                             Binary                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_VASY_BIN = vasy

# /*------------------------------------------------------------\
# |                                                             |
# |                             Include                         |
# |                                                             |
# \------------------------------------------------------------*/

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

# /*------------------------------------------------------------\
# |                                                             |
# |                             Library                         |
# |                                                             |
# \------------------------------------------------------------*/

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

LOCAL_AUT_LIB = -L$(LOCAL_TARGET_LIB) \
                $(AUT_L)

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

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

LOCAL_VEX_LIB = -L$(LOCAL_TARGET_LIB) \
                $(VEX_L)

LOCAL_VPN_LIB = -L$(LOCAL_TARGET_LIB) \
                $(VTL_L) \
                $(VVH_L) \
                $(VPD_L) \
                $(VPN_L) \
                $(VBL_L) \
                $(VBH_L)

LOCAL_RTN_LIB = -L$(LOCAL_TARGET_LIB) \
                $(RTD_L) \
                $(RTN_L)

LOCAL_LIB = $(LOCAL_VPN_LIB) $(LOCAL_RTN_LIB) \
            $(LOCAL_VEX_LIB) \
            $(LOCAL_BDD_LIB) $(LOCAL_ABL_LIB) \
            $(LOCAL_AUT_LIB) $(LOCAL_MBK_LIB)

# /*------------------------------------------------------------\
# |                                                             |
# |                             Define                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_MBK_DEFINE   = -DMUT_H='"$(MUT_H)"'
LOCAL_AUT_DEFINE   = -DAUT_H='"$(AUT_H)"'
LOCAL_ABL_DEFINE   = -DABL_H='"$(ABL_H)"'
LOCAL_BDD_DEFINE   = -DBDD_H='"$(BDD_H)"'
LOCAL_VEX_DEFINE   = -DVEX_H='"$(VEX_H)"'
LOCAL_VPN_DEFINE   = -DVPN_H='"$(VPN_H)"' \
                     -DVTL_H='"$(VTL_H)"' \
                     -DVBH_H='"$(VBH_H)"' \
                     -DVBL_H='"$(VBL_H)"'
LOCAL_RTN_DEFINE   = -DRTN_H='"$(RTN_H)"' \
                     -DRTD_H='"$(RTD_H)"'

LOCAL_VASY_DEFINE   = -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
                     -DVASY_VERSION='"1.05"'

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_AUT_DEFINE) \
               $(LOCAL_ABL_DEFINE) $(LOCAL_BDD_DEFINE) \
               $(LOCAL_VEX_DEFINE) $(LOCAL_VPN_DEFINE) \
               $(LOCAL_VASY_DEFINE) $(LOCAL_RTN_DEFINE) 

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

# /*------------------------------------------------------------\
# |                                                             |
# |                             Object                          |
# |                                                             |
# \------------------------------------------------------------*/

LOCAL_VASY_OBJ = vasy_error.o   vasy_shared.o vasy_debug.o \
                vasy_parse.o   vasy_preanal.o vasy_func.o     vasy_loop.o  \
                vasy_array.o \
                vasy_analys.o  vasy_elabo.o    vasy_simul.o \
                vasy_reduce.o  \
                vasy_redact.o  vasy_redinst.o  vasy_redwait.o \
                vasy_synth.o   vasy_onewait.o  vasy_simprtl.o vasy_drvvex.o \
                vasy_drvalc.o  vasy_drvsyn.o   vasy_drvvlog.o \
		vasy_drvrtl.o \
                vasy_support.o vasy_vexbdd.o   vasy_mulwait.o \
                vasy_main.o

LOCAL_OBJ = $(LOCAL_VASY_OBJ)

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

# /*------------------------------------------------------------\
# |                                                             |
# |                             Vasy                            |
# |                                                             |
# \------------------------------------------------------------*/

distrib : $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN)

all : $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN)

force : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN) \
	$(LOCAL_OBJ) $(LOCAL_LIB) -lm

$(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN) : $(LOCAL_OBJ)
	$(CC) $(LOCAL_CFLAGS) -o $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN) \
	$(LOCAL_OBJ) $(LOCAL_LIB) -lm
	$(STRIP) $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN)

# /*------------------------------------------------------------\
# |                                                             |
# |                              Clean                          |
# |                                                             |
# \------------------------------------------------------------*/

clean :
	$(RM) -f $(LOCAL_OBJ)
	
realclean : clean
	$(RM) -f $(LOCAL_TARGET_BIN)/$(LOCAL_VASY_BIN)
