
## /*          Alliance CAD System 3.0                                   */
## /*             FpGen Package 1.05                                     */
## /*                                                                    */
## /*  Copyright(c) 93-95, MASI, CAO-VLSI Team                           */
## /*                                                                    */
## /*  Author      :          Jean-Paul CHAPUT                           */
## /*  E-mail      :      cao-vlsi@masi.ibp.fr                           */
## /* ------------------------------------------------------------------ */
## /*  makefile    :      FpGen, Data-Path description language (SunOS)  */
## /* ****************************************************************** */
## /*  02/05/93:0.00:Jean-Paul CHAPUT                                    */
## /*  21/01/95:1.03:Jean-Paul CHAPUT                                    */
## /*    New reference directories :  TARGET_LIB                         */
## /*                                 TARGET_BIN                         */
## /*                                 TARGET_INC                         */


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


## ******************** Data-path Macro-Language (FGN) ********************


## Compilation of Data-path Macro-Language.
## (associated library : FgnVVV)
rfgn: rgfp $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a(FpGenMBK.o) \
		   $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a(FpGenMGN.o) \
		   $(TARGET_INC)/fgn$(FITMK_FGNVER).h                \
		   $(TARGET_INC)/fpgen.h                             \
		   $(TARGET_BIN)/fpgen                               \
		   distrib

distrib:
	$(TOUCH) distrib

# Compilation and archivage of module "FpGenMBK.c".
$(TARGET_LIB)/libFgn$(FITMK_FGNVER).a(FpGenMBK.o): FpGen/FpGenMBK.c \
												   FpGen/FpGenMBK.h \
												   FpGen/FpGenMGN.h \
								 $(TARGET_INC)/gfp${FITMK_GFPVER}.h
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC) \
						  $(FITMK_GRFINC) \
						  $(FITMK_GBSINC) \
						  $(FITMK_RSAINC)            FpGen/FpGenMBK.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a FpGenMBK.o;
	$(RANLIB)        $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a;
	$(RM) FpGenMBK.o
	$(RM) -f distrib $(TARGET_LIB)/INSTALLED > /dev/null 2>&1

# Compilation and archivage of module "FpGenMGN.c".
$(TARGET_LIB)/libFgn$(FITMK_FGNVER).a(FpGenMGN.o): FpGen/FpGenMGN.c \
												   FpGen/FpGenMBK.h \
												   FpGen/FpGenMGN.h \
								 $(TARGET_INC)/gfp${FITMK_GFPVER}.h
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/FpGenMGN.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a FpGenMGN.o;
	$(RANLIB)        $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a;
	$(RM) FpGenMGN.o
	$(RM) -f distrib $(TARGET_LIB)/INSTALLED > /dev/null 2>&1

$(TARGET_INC)/fgn$(FITMK_FGNVER).h: FpGen/FpGenMGN.h
	$(CP) FpGen/FpGenMGN.h $(TARGET_INC)/fgn$(FITMK_FGNVER).h
	$(RM)       -f distrib $(TARGET_INC)/INSTALLED > /dev/null 2>&1

$(TARGET_INC)/fpgen.h: $(TARGET_INC)/gfp$(FITMK_GFPVER).h \
					   $(TARGET_INC)/fgn$(FITMK_FGNVER).h
	 $(CAT)     FpGen/H.fpgen                  >  $(TARGET_INC)/fpgen.h; \
	$(ECHO) "#ifndef  __FpGen__"               >> $(TARGET_INC)/fpgen.h; \
	$(ECHO) "#define  __FpGen__"               >> $(TARGET_INC)/fpgen.h; \
	$(ECHO) "#include  <gfp$(FITMK_GFPVER).h>" >> $(TARGET_INC)/fpgen.h; \
	$(ECHO) "#include  <fgn$(FITMK_FGNVER).h>" >> $(TARGET_INC)/fpgen.h; \
	$(ECHO) "#endif"                           >> $(TARGET_INC)/fpgen.h;
	$(RM)  -f distrib $(TARGET_INC)/INSTALLED > /dev/null 2>&1

# Installation and configuration of FpGen's batch
# (similar to Genlib)
$(TARGET_BIN)/fpgen: FpGen/B.fpgen.sh \
			   $(TARGET_INC)/fpgen.h
	 $(ECHO) "#!/bin/sh"                       >  fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCICP="$(FITMK_ALCICP)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCLBP="$(FITMK_ALCLBP)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCGGN="$(FITMK_ALCGGN)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCAPR="$(FITMK_ALCAPR)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCMGN="$(FITMK_ALCMGN)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCMLO="$(FITMK_ALCMLO)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCMPH="$(FITMK_ALCMPH)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_ALCICN="$(FITMK_ALCICN)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_FITLDP="$(FITMK_FITLDP)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_FITLMP="$(FITMK_FITLMP)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_FITLLS="$(FITMK_FITLLS)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_FITIDP="$(FITMK_FITIDP)"'  >> fpgen.tmp; \
	 $(ECHO) 'FITMK_FITIMP="$(FITMK_FITIMP)"'  >> fpgen.tmp; \
	 $(ECHO) '          CC="$(CC)"'            >> fpgen.tmp; \
	 $(ECHO) '          RM="$(RM)"'            >> fpgen.tmp; \
	 $(ECHO) '        ECHO="/bin/echo"'        >> fpgen.tmp; \
	  $(CAT) FpGen/B.fpgen.sh                  >> fpgen.tmp; \
	$(CHMOD) a+x     fpgen.tmp;                              \
	   $(CP)         fpgen.tmp $(TARGET_BIN)/fpgen-$(FITMK_FGNVER); \
	   $(MV)         fpgen.tmp $(TARGET_BIN)/fpgen
	   $(RM)        -f distrib $(TARGET_BIN)/INSTALLED > /dev/null 2>&1


## ********************** Data-path GeNerators (GFP) **********************


# Data-path GeNerators list.
LOCAL_GFPLST =     inv       buff                 \
				  and2       nand2    and3  nand3 \
				   or2        nor2     or3   nor3 \
				  xor2       xnor2                \
				  nor2mask                        \
				 xnor2mask                        \
				 nand2mask                        \
			    const                             \
				 buse       nbuse                 \
				 nmux2cs      mux2cs              \
			                  mux3cd              \
			                  mux3cs              \
			                  mux4cs              \
			                  mux5cs              \
			                  mux6cs              \
				  add2s                           \
				 nul                              \
				 pl1     npl1                     \
			   pmsnw   pmsnwq   pms          pmsq   pmst           pmstq  \
			  pdffnw  pdffnwq  pdff  pdffr  pdffq  pdfft  pdffrt  pdfftq


## Compilation of Data-path GeNerators.
## (library:GfpVRR / include:gfpVRR.h / executables)
rgfp: $(TARGET_INC)/gfp${FITMK_GFPVER}.h                 \
	  $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a              \
	  $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(GenericGN.o) \
	     $(TARGET_BIN)/GenericGNg


# Generators library update (libGfpVRR.a).
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(GenericGN.o): FpGen/GenericGN.h \
													FpGen/GenericGN.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC) FpGen/GenericGN.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a  GenericGN.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM)            GenericGN.o
	$(RM) -f distrib $(TARGET_LIB)/INSTALLED > /dev/null 2>&1

# Generic generator and Stand-Alone generators update.
$(TARGET_BIN)/GenericGNg: FpGen/GenericGNg.c              \
		  $(TARGET_INC)/gfp$(FITMK_GFPVER).h              \
	   $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(GenericGN.o) \
	   $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC) FpGen/GenericGNg.c;
	$(CC) $(FITMK_OFLAGS) $(TARGET_BIN)/GenericGNg   \
										GenericGNg.o \
			   -L$(TARGET_LIB) -lGfp$(FITMK_GFPVER)  \
									$(FITMK_ALCLBP)  \
									$(FITMK_ALCGGN)  \
									$(FITMK_ALCMGN)  \
									$(FITMK_ALCMLO)  \
									$(FITMK_ALCMPH)  \
									$(FITMK_ALCICN); \
	$(RM) GenericGNg.o;
	for GeneName in $(LOCAL_GFPLST);                                         \
	do                                                                       \
	  rm -f                                     $(TARGET_BIN)/$${GeneName}g; \
	  $(ECHO) "GenericGNg $${GeneName}g \$$*" > $(TARGET_BIN)/$${GeneName}g; \
	  $(CHMOD) a+x                              $(TARGET_BIN)/$${GeneName}g; \
	done;
	$(RM) -f distrib $(TARGET_BIN)/INSTALLED > /dev/null 2>&1


## ********************** Data-path  UTilities (GUT) **********************


## Compilation of Data-path GeNerators UTilities.
## (associated librarie : GfpRVV)
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a: \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtBase.o)      \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtEnv.o)       \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtTechno.o)    \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtUser.o)      \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtFlat.o)      \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtXlong.o)     \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtMBKLo.o)     \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtMBKPh.o)     \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtFileDPR.o)   \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtPowerBar.o)  \
		$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtHierarchy.o) \
		$(TARGET_INC)/gfp$(FITMK_GFPVER).h
	-$(RM) -f distrib $(TARGET_BIN)/GenericGNg $(TARGET_BIN)/dpr

# Compilation and archivage of module "UtBase.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtBase.o): FpGen/UtBase.h \
												 FpGen/UtBase.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtBase.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtBase.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtBase.o

# Compilation and archivage of module "UtXlong.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtXlong.o): FpGen/UtBase.h  \
												  FpGen/UtXlong.h \
												  FpGen/UtXlong.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtXlong.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtXlong.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtXlong.o

# Compilation and archivage of module "UtEnv.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtEnv.o): FpGen/UtBase.h \
												FpGen/UtEnv.h  \
												FpGen/UtEnv.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtEnv.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtEnv.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtEnv.o

# Compilation and archivage of module "UtTechno.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtTechno.o): FpGen/UtBase.h   \
												   FpGen/UtTechno.h \
												   FpGen/UtTechno.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtTechno.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtTechno.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtTechno.o


# Compilation and archivage of module "UtUser.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtUser.o): FpGen/UtBase.h \
												 FpGen/UtUser.h \
												 FpGen/UtUser.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtUser.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtUser.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtUser.o

# Compilation and archivage of module "UtFlat.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtFlat.o): FpGen/UtBase.h \
												 FpGen/UtUser.h \
												 FpGen/UtFlat.h \
												 FpGen/UtFlat.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtFlat.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtFlat.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtFlat.o

# Compilation and archivage of module "UtMBKLo.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtMBKLo.o): FpGen/UtBase.h  \
												  FpGen/UtUser.h  \
												  FpGen/UtMBKLo.h \
												  FpGen/UtMBKLo.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtMBKLo.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtMBKLo.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtMBKLo.o

# Compilation and archivage of module "UtMBKPh.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtMBKPh.o): FpGen/UtBase.h  \
												  FpGen/UtUser.h  \
												  FpGen/UtMBKLo.h \
												  FpGen/UtMBKPh.h \
												  FpGen/UtMBKPh.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtMBKPh.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtMBKPh.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtMBKPh.o

# Compilation and archivage of module "UtFileDPR.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtFileDPR.o): FpGen/UtBase.h    \
												    FpGen/UtUser.h    \
												    FpGen/UtMBKLo.h   \
												    FpGen/UtFileDPR.h \
												    FpGen/UtFileDPR.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtFileDPR.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtFileDPR.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtFileDPR.o

# Compilation and archivage of module "UtPowerBar.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtPowerBar.o): FpGen/UtBase.h     \
													 FpGen/UtUser.h     \
													 FpGen/UtPowerBar.h \
													 FpGen/UtPowerBar.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtPowerBar.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtPowerBar.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtPowerBar.o

# Compilation and archivage of module "UtHierarchy.c".
$(TARGET_LIB)/libGfp$(FITMK_GFPVER).a(UtHierarchy.o): FpGen/UtBase.h      \
													  FpGen/UtUser.h      \
												      FpGen/UtFileDPR.h   \
													  FpGen/UtHierarchy.h \
													  FpGen/UtHierarchy.c
	$(CC) $(FITMK_CFLAGS) $(FITMK_FITINC) \
						  $(FITMK_ALCINC)            FpGen/UtHierarchy.c;
	$(AR) $(ARFLAGS) $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a UtHierarchy.o;
	$(RANLIB)        $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a;
	$(RM) UtHierarchy.o

$(TARGET_INC)/gfp$(FITMK_GFPVER).h: FpGen/UtHeader.h    \
									FpGen/UtBase.h      \
									FpGen/UtEnv.h       \
									FpGen/UtTechno.h    \
									FpGen/UtFlat.h      \
									FpGen/UtXlong.h     \
									FpGen/UtUser.h      \
									FpGen/UtMBKLo.h     \
									FpGen/UtMBKPh.h     \
									FpGen/UtFileDPR.h   \
									FpGen/UtPowerBar.h  \
									FpGen/UtHierarchy.h \
									FpGen/GenericGN.h
	$(CAT) FpGen/UtHeader.h    >  gfp.h.tmp; \
	$(ECHO) "#ifndef  __GUT__" >> gfp.h.tmp; \
	$(ECHO) "#define  __GUT__" >> gfp.h.tmp; \
	$(CAT) FpGen/UtBase.h      >> gfp.h.tmp; \
	$(CAT) FpGen/UtEnv.h       >> gfp.h.tmp; \
	$(CAT) FpGen/UtTechno.h    >> gfp.h.tmp; \
	$(CAT) FpGen/UtFlat.h      >> gfp.h.tmp; \
	$(CAT) FpGen/UtXlong.h     >> gfp.h.tmp; \
	$(CAT) FpGen/UtUser.h      >> gfp.h.tmp; \
	$(CAT) FpGen/UtMBKLo.h     >> gfp.h.tmp; \
	$(CAT) FpGen/UtMBKPh.h     >> gfp.h.tmp; \
	$(CAT) FpGen/UtFileDPR.h   >> gfp.h.tmp; \
	$(CAT) FpGen/UtPowerBar.h  >> gfp.h.tmp; \
	$(CAT) FpGen/UtHierarchy.h >> gfp.h.tmp; \
	$(ECHO) "#endif"           >> gfp.h.tmp; \
	$(CAT) FpGen/GenericGN.h   >> gfp.h.tmp; \
	$(MV)  gfp.h.tmp $(TARGET_INC)/gfp$(FITMK_GFPVER).h
	$(RM) -f distrib $(TARGET_INC)/INSTALLED > /dev/null 2>&1


## ********************* Removing All Generated Files *********************


clean:
	for GeneName in $(LOCAL_GFPLST);               \
	do                                             \
	  $(RM) -f $(TARGET_BIN)/$${GeneName}g;        \
	done;                                          \
	$(RM) -f $(TARGET_BIN)/GenericGNg              \
			 $(TARGET_BIN)/fpgen                   \
			 $(TARGET_BIN)/fpgen-$(FITMK_FGNVER)   \
			 $(TARGET_BIN)/INSTALLED               \
			 $(TARGET_LIB)/libGfp$(FITMK_GFPVER).a \
			 $(TARGET_LIB)/libFgn$(FITMK_FGNVER).a \
			 $(TARGET_LIB)/INSTALLED               \
			 $(TARGET_INC)/fgn$(FITMK_FGNVER).h    \
		     $(TARGET_INC)/gfp${FITMK_GFPVER}.h    \
			 $(TARGET_INC)/fpgen.h                 \
			 $(TARGET_INC)/INSTALLED               \
			 distrib;
