#
# $Id: Makefile,v 1.7 2001/04/10 16:37:17 jpc Exp $
#
# /------------------------------------------------------------------\
# |                                                                  |
# |        A l l i a n c e   C A D   S y s t e m                     |
# |                      D p G e n                                   |
# |                                                                  |
# |  Author    :                      Jean-Paul CHAPUT               |
# |  E-mail    :         alliance-support@asim.lip6.fr               |
# | ================================================================ |
# |  Makefile  :         "./dpgen/Makefile"                          |
# | **************************************************************** |
# |  U p d a t e s                                                   |
# |                                                                  |
# \------------------------------------------------------------------/
#


# --------------------------------------------------------------------
# Macros and Alliance libraries.

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

      TARGET_INC = $(TARGET_INCLUDE)
      TARGET_ETC = $(ALLIANCE_INSTALL_DIR)/etc

       DEVEL_LIB = -L$(ALLIANCE_INSTALL_DIR)/lib


# --------------------------------------------------------------------
# Alliance Includes.

  LOCAL_ALC_IDIR = $(DEVEL_INCLUDE) -I$(ALLIANCE_INCLUDE)

  LOCAL_ALC_DEFS = -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
                              -DMGN_H='<$(MGN_H)>' \
                              -DMLU_H='<$(MLU_H)>' \
                              -DMLO_H='<$(MLO_H)>' \
                              -DMPH_H='<$(MPH_H)>' \
                              -DMPU_H='<$(MPU_H)>' \
                              -DMUT_H='<$(MUT_H)>' \
                              -DMGN_H='<$(MGN_H)>' \
                              -DEF2aBL_H='<$(ABL_H)>' \
                              -DEF2aUT_H='<$(AUT_H)>' \
                              -DBEH_H='<$(BEH_H)>' \
                              -DBVL_H='<$(BVL_H)>' \
                              -DLOG_H='<$(LOG_H)>'

  LOCAL_ALC_INCS = $(LOCAL_ALC_IDIR) $(LOCAL_ALC_DEFS)


# --------------------------------------------------------------------
# Alliance Libraries.

  LOCAL_ALC_LDIR = $(DEVEL_LIB) -L$(ALLIANCE_LIB)

  LOCAL_ALC_LMUT = $(MUT_L)

  LOCAL_ALC_LMLO = $(MLU_L) \
                   $(MLO_L) \
                   $(MAL_L) \
                   $(MCL_L) \
                   $(MEL_L) \
                   $(MHL_L) \
                   $(MSL_L) \
                   $(MVL_L) \
                   $(MGL_L) \
                   $(RCN_L)

  LOCAL_ALC_LMPH = $(MPU_L) \
                   $(MPH_L) \
                   $(MAP_L) \
                   $(MCP_L) \
                   $(MMG_L) \
                   $(MUT_L)

  LOCAL_ALC_LBEH = $(ABL_L) \
                   $(AUT_L) \
                   $(BVL_L) \
                   $(BHL_L) \
                   $(BEH_L) \
                   $(LOG_L)

  LOCAL_ALC_LIBS = $(LOCAL_ALC_LDIR) \
                   $(LOCAL_ALC_LBEH) \
                   $(LOCAL_ALC_LMLO) \
                   $(LOCAL_ALC_LMPH) \
                   $(LOCAL_ALC_LMUT)

  LOCAL_STD_LIBS = -lm


# --------------------------------------------------------------------
# DpGen Macros.

#  C Flags for normal compilation.
     LOCAL_CFLAGS = $(CFLAGS) -c -g -D$(ALLIANCE_OS)
     LOCAL_OFLAGS = $(OFLAGS) -o
#   C Flags for compilation and profiling.
#    LOCAL_CFLAGS = $(CFLAGS) -p -c -g -D$(ALLIANCE_OS)
#    LOCAL_OFLAGS = $(OFLAGS) -p -o

        LOCAL_VERSION =  001
          LOCAL_DGN_L = -lDgn$(LOCAL_VERSION)

      LOCAL_UTIL_INCS = util_Defs.h GNU_Defs.h
      LOCAL_UTIL_OBJS = util_Sys.o util_Const.o util_Misc.o

     LOCAL_DPGEN_INCS = $(LOCAL_UTIL_INCS) dpgen_Defs.h dgnvrr.h
     LOCAL_DPGEN_OBJS = $(LOCAL_UTIL_OBJS) dpgen_Shifter.o \
                                           dpgen_Adder.o   \
                                           dpgen_RF2.o     \
                                           dpgen_RF1.o     \
                                           dpgen_Regular.o \
                                           dpgen_uROM.o    \
                                           dpgen_Nul.o     \
                                           dpgen_Macro.o

     TARGET_DPGEN_INC = $(TARGET_INC)/dgn$(LOCAL_VERSION).h
     TARGET_DPGEN_LIB = $(TARGET_LIB)/libDgn$(LOCAL_VERSION).a
       TARGET_TOP_INC = $(TARGET_INC)/dpgen.h
       TARGET_TOP_BIN = $(TARGET_BIN)/dpgen


#
# /------------------------------------------------------------------\
# |                                                                  |
# |                        Compilation Rules                         |
# |                                                                  |
# \------------------------------------------------------------------/
#
# --------------------------------------------------------------------
# Building Rules

all: $(TARGET_DPGEN_LIB) \
     $(TARGET_DPGEN_INC) \
     $(TARGET_TOP_INC)   \
     $(TARGET_TOP_BIN)


# --------------------------------------------------------------------
# Dpgen shell script.

$(TARGET_TOP_BIN): dpgen
	sed 's,__ALLIANCE_INSTALL_DIR__,$(ALLIANCE_INSTALL_DIR),' \
	    dpgen.sh > dpgen.tmp.1
	sed 's,__DGN_VERSION__,$(LOCAL_VERSION),' dpgen.tmp.1 > dpgen.tmp.2
	cp dpgen.tmp.2 $(TARGET_TOP_BIN)
	chmod a+x      $(TARGET_TOP_BIN)
	rm dpgen.tmp.*


# --------------------------------------------------------------------
# Dpgen include.

$(TARGET_TOP_INC): dgnvrr.h
	echo "# ifndef  __DpGen__"                  >> $(TARGET_TOP_INC); \
	echo "#   define  __DpGen__"                >> $(TARGET_TOP_INC); \
	echo "#   include  <dgn$(LOCAL_VERSION).h>" >> $(TARGET_TOP_INC); \
	echo "# endif"                              >> $(TARGET_TOP_INC);


$(TARGET_DPGEN_INC): dgnvrr.h
	cp dgnvrr.h $(TARGET_DPGEN_INC)


# --------------------------------------------------------------------
# Dpgen library.

$(TARGET_DPGEN_LIB): $(LOCAL_DPGEN_OBJS)
	$(AR) $(ARFLAGS) $(TARGET_DPGEN_LIB) $(LOCAL_DPGEN_OBJS);
	$(RANLIB)        $(TARGET_DPGEN_LIB);


util_%.o: $(LOCAL_UTIL_INCS) util_%.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_ALC_INCS) util_$*.c


dpgen_%.o: $(LOCAL_DPGEN_INCS) dpgen_%.c
	$(CC) $(LOCAL_CFLAGS) $(LOCAL_ALC_INCS) dpgen_$*.c


# --------------------------------------------------------------------
# Cleaning Rules

clean:
	$(RM) -f *.o

realclean: clean
	$(RM) -f $(TARGET_DPGEN_LIB) \
	         $(TARGET_DPGEN_INC) \
	         $(TARGET_TOP_INC)   \
	         $(TARGET_TOP_BIN)

#	$(RM) -f $(LOCAL_BINS)
