# /*------------------------------------------------------------\
# |                                                             |
# | Tool   :                 Library BDD104                     |
# |                                                             |
# | File   :                    Makefile                        |
# |                                                             |
# | Author :                  Jacomme Ludovic                   |
# |                                                             |
# | Date    :                   03.12.96                        |
# |                                                             |
# \------------------------------------------------------------*/

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

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

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

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

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

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

LOCAL_LIB = -L$(LOCAL_TARGET_LIB) \
            -L$(ALLIANCE_LIB) \
             -lBdd104 \
             $(ABL_L) \
             $(AUT_L) \
             $(MUT_L) -lm

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

LOCAL_MBK_DEFINE = -DMUT_H='"$(MUT_H)"' \
                   -DABL_H='"$(ABL_H)"' \
                   -DAUT_H='"$(AUT_H)"'

LOCAL_BDD_DEFINE = -DBDD_H='"bdd104.h"'

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_BDD_DEFINE)

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

LOCAL_BDD_LIB    = libBdd104.a
LOCAL_BDD_INC    = bdd104.h
LOCAL_BDD_TST    = bddtest

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

LOCAL_BDD_OBJ = bdderror.o    bddalloc.o    bddresize.o   bddfree.o     \
                bddblock.o    bddnode.o     bddhnode.o    bddhoper.o    \
                bddref.o      bddmark.o     bddcheck.o    bddvar.o      \
                bddvaraux.o   bddassoc.o    bddapply.o    bddgarbage.o  \
		bddsweep.o    bddflag.o \
                bddsupport.o  bddconvert.o  bddcompose.o  bddsubst.o    \
                bddexist.o    bddrelprod.o  bddimply.o    \
                bddcofactor.o bddreduce.o   bddfraction.o \
                bddreorder.o  bddsatisfy.o  bddheath.o    bddsimpdc.o   \
                bdduser.o     bddsystem.o   bddcircuit.o  bddtest.o     \
                bdddump.o     bddenv.o      bddlog.o      bddoptimize.o

LOCAL_TST_OBJ = main.o

LOCAL_OBJ = $(LOCAL_BDD_OBJ)

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

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

distrib : $(LOCAL_TARGET_INC)/$(LOCAL_BDD_INC) \
          $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB)

test : $(LOCAL_TARGET_INC)/$(LOCAL_BDD_INC) \
       $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB) \
       $(LOCAL_TARGET_BIN)/$(LOCAL_BDD_TST)

$(LOCAL_TARGET_INC)/$(LOCAL_BDD_INC) : $(LOCAL_BDD_INC)
	$(CP) $(LOCAL_BDD_INC) $(LOCAL_TARGET_INC)/$(LOCAL_BDD_INC)

$(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB) : $(LOCAL_OBJ)
	$(AR) $(ARFLAGS) $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB) $(LOCAL_BDD_OBJ)
	$(RANLIB) $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB)

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

clean :
	$(RM) -f $(LOCAL_OBJ) $(LOCAL_TST_OBJ)

# /*------------------------------------------------------------\
# |                                                             |
# |                          RealClean                          |
# |                                                             |
# \------------------------------------------------------------*/

realclean : clean
	$(RM) -f $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB) \
                 $(LOCAL_TARGET_INC)/$(LOCAL_BDD_INC) \
                 $(LOCAL_TARGET_BIN)/$(LOCAL_BDD_TST) 

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

cleanobj :
	$(RM) -f $(LOCAL_OBJ) $(LOCAL_TST_OBJ)

# /*------------------------------------------------------------\
# |                                                             |
# |                            Test                             |
# |                                                             |
# \------------------------------------------------------------*/

$(LOCAL_TARGET_BIN)/$(LOCAL_BDD_TST) : $(LOCAL_TST_OBJ) \
        $(LOCAL_TARGET_LIB)/$(LOCAL_BDD_LIB)
	$(CC) -o $(LOCAL_TARGET_BIN)/$(LOCAL_BDD_TST) $(LOCAL_TST_OBJ) $(LOCAL_LIB)
