#   FILE: Makefile
# AUTHOR: Russ Mello
#   DATE: 2/14/95
#   VERS: 1.0
#  USAGE: makefile for building libmvcl.a
#
# By default this make file will build the mvcl library. To build the mvcl
# shell issue a "make shell"
# -------------------------------------------------------------------------

# targets
TARGET      = ../libmvcl.a
TARGET_SHL  = mvclshell
INCLUDES    = -I .

##OPTIMIZE_FLAG = -g

# The DEBUG_FLAG must be set to -DNDEBUG for the release version
# This disables all the ASSERT statements.
##DEBUG_FLAG    = -DNDEBUG

DEFINES         =  ${DEBUG_FLAG}

# Define architecture dependent flags here
CFLAGS.aix      = -qsrcmsg -DSYSV -DFUNCPROTO

# macros
FLEX        = /usr/local/bin/flex
BISON       = /usr/local/bin/bison
FLEX_FLAGS  = -I -i -PMvcl 
BISON_FLAGS = -d -p Mvcl
CC          = /usr/bin/cc
CFLAGS      = $(OPTIMIZE_FLAG) $(DEFINES) $(INCLUDES) ${CFLAGS.aix}
RM          = /usr/bin/rm -f 
MV          = /usr/bin/mv
LMAP        = -bloadmap:$(TARGET_SHL).map
AR          = ar
ARFLAGS     = qv

# list of the source modules that make up mvcl
SOURCE =\
	mvcl_act.c\
	mvcl_bld.c\
	mvcl_err.c\
	mvcl_int.c\
	mvcl_lst.c\
	mvcl_rec.c\
	mvcl_shl.c\
	mvcl_stk.c\
	mvcl_sym.c\
	mvcl_utl.c\
	mvcl_vld.c\
	mvcl_api.c\
	mvcl_fil.c

# Convert the source module extension into the object module extension
OBJS = $(SOURCE:.c=.o)

# Object modules for the lexer and parser
LY_OBJS = mvcl.o lex.Mvcl.o

LIBS = ../libmvcl.a\
       /usr/local/lib/libfl.a	

$(TARGET): $(OBJS) $(LY_OBJS)
	$(RM) $(TARGET)
	$(AR) $(ARFLAGS) $(TARGET) $(OBJS) $(LY_OBJS) 
	@echo Done Building $@...

# dependency rules for the lexer and parser
mvcl.c:			mvcl.y
	$(BISON) $(BISON_FLAGS) mvcl.y
	$(MV) mvcl.tab.h mvcl.h	
	$(MV) mvcl.tab.c mvcl.c

lex.Mvcl.c:		mvcl.l
	$(FLEX) $(FLEX_FLAGS) mvcl.l

# ----------------------------------------------------------------------------
# Additional targets

# Force the parser and lexer to be built
parser:
	$(BISON) $(BISON_FLAGS) mvcl.y
	$(FLEX) $(FLEX_FLAGS) mvcl.l

shell: $(TARGET_SHL) $(TARGET)

# add a target to build the mvcl shell.
$(TARGET_SHL): $(OBJS) $(LY_OBJS)
	$(CC) -c $(CFLAGS) -DMVCL_STAND_ALONE mvcl.c
	$(CC) $(LDFLAGS) $(OBJS) $(LY_OBJS) $(LIBS) $(LMAP) -o $(TARGET_SHL)
	@echo Done Building $@...


# ----------------------------------------------------------------------------
# dependency list
