# /*------------------------------------------------------------\
# |                                                             |
# | This file is part of the Alliance CAD System Copyright      |
# | (C) Laboratoire LIP6 - Dpartement ASIM Universite P&M Curie|
# |                                                             |
# | Home page      : http://www-asim.lip6.fr/alliance/          |
# | E-mail support : mailto:alliance-support@asim.lip6.fr       |
# |                                                             |
# | This progam is  free software; you can redistribute it      |
# | and/or modify it under the  terms of the GNU Library General|
# | Public License as published by the Free Software Foundation |
# | either version 2 of the License, or (at your option) any    |
# | later version.                                              |
# |                                                             |
# | Alliance VLSI  CAD System  is distributed  in the hope that |
# | it  will be useful, but WITHOUT  ANY WARRANTY;              |
# | without even the  implied warranty of MERCHANTABILITY or    |
# | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General       |
# | Public License for more details.                            |
# |                                                             |
# | You should have received a copy  of the GNU General Public  |
# | License along with the GNU C Library; see the file COPYING. |
# | If not, write to the Free Software Foundation, Inc.,        |
# | 675 Mass Ave, Cambridge, MA 02139, USA.                     |
# |                                                             |
# \------------------------------------------------------------*/
# /*------------------------------------------------------------\
# |                                                             |
# | Tool   :                 Library GCP101                     |
# |                                                             |
# | File   :                    Makefile                        |
# |                                                             |
# | Author :                 Jacomme Ludovic                    |
# |                                                             |
# | Date   :                    07.04.95                        |
# |                                                             |
# \------------------------------------------------------------*/

GCC_WERROR =

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

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

LOCAL_CFLAGS = $(CFLAGS) -g -D$(ALLIANCE_OS)
# -Wall

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

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

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

LOCAL_LIB = -L$(LOCAL_TARGET_LIB) \
            -L$(ALLIANCE_LIB) \
	    -lGcp101 \
             $(MUT_L) \
             $(AUT_L)

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

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

LOCAL_GCP_DEFINE = -DGCP_H='"gcp101.h"'

LOCAL_DEFINE = $(LOCAL_MBK_DEFINE) $(LOCAL_GCP_DEFINE)

LOCAL_HEADER = $(LOCAL_INCLUDE) $(LOCAL_DEFINE)

LOCAL_GCP_LIB    = libGcp101.a
LOCAL_GCP_INC    = gcp101.h
LOCAL_GCP_TST    = gcptest

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

LOCAL_GCP_OBJ = c_ccomp.o c_clex.o c_parse.o c_flags.o c_tree.o \
              c_cdecl.o c_ctypeck.o c_convert.o c_debug.o \
	      c_foldconst.o c_expand.o c_stmt.o c_common.o

LOCAL_TST_OBJ = main.o

LOCAL_OBJ = $(LOCAL_GCP_OBJ)

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

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

all : distrib

distrib : $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) \
          $(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC)

force : $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) \
        $(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC) \
        $(LOCAL_TST_OBJ)
	$(CC) -o $(LOCAL_TARGET_BIN)/$(LOCAL_GCP_TST) $(LOCAL_TST_OBJ) $(LOCAL_LIB)

test : $(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC) \
       $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) \
       $(LOCAL_TARGET_BIN)/$(LOCAL_GCP_TST)
	$(CC) -o $(LOCAL_TARGET_BIN)/$(LOCAL_GCP_TST) $(LOCAL_TST_OBJ) $(LOCAL_OBJ) $(LOCAL_LIB)


$(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) : $(LOCAL_OBJ)
	$(AR) $(ARFLAGS) $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) $(LOCAL_GCP_OBJ)
	$(RANLIB) $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB)

$(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC) : $(LOCAL_GCP_INC)
	$(CP) $(LOCAL_GCP_INC) $(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC)

# /*------------------------------------------------------------\
# |                                                             |
# |                             C                               |
# |                                                             |
# \------------------------------------------------------------*/

c_clex.c : c_ccomp.h
c_ccomp.c c_ccomp.h : c_ccomp.yac
	$(YACC) $(YACCFLAGS) -d c_ccomp.yac
	$(SED) -e 's/YY/C_Y_/g' -e 's/yy/c_y_/g' \
               -e 's/stderr/stdout/g' y.tab.c > c_ccomp.c
	$(RM) -f y.tab.c
	$(SED) -e 's/YY/C_Y_/g' -e 's/yy/c_y_/g' y.tab.h > c_ccomp.h
	$(RM) -f y.tab.h

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

realclean : clean
	$(RM) -f $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB) \
                 $(LOCAL_TARGET_INC)/$(LOCAL_GCP_INC)

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

clean :
	$(RM) -f $(LOCAL_OBJ) $(LOCAL_TST_OBJ) c_ccomp.c c_ccomp.h

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

$(LOCAL_TARGET_BIN)/$(LOCAL_GCP_TST) : $(LOCAL_TST_OBJ) \
     $(LOCAL_TARGET_LIB)/$(LOCAL_GCP_LIB)
	$(CC) -o $(LOCAL_TARGET_BIN)/$(LOCAL_GCP_TST) $(LOCAL_TST_OBJ) $(LOCAL_LIB)

exec :
	gcptest toto.c --D | grep line | sed -e "s/^.*(line /c_ccomp.yac:/g" | sed -e "s/)/:/"
