.SUFFIXES : .cpp .o .c .y

CPP=g++
CC=gcc
AR=ar
YACPP=yacc

#############################################################################
### YFR: Add this to find files.
###
BASEPATH=
###
###
#############################################################################


DEFINES_CPP=

#============================================================================
# Optimized Code - Requires more virtual memory.
OPTCPPFLAGS=-O3
#----------------------
# Not optimized
#OPTCPPFLAGS=
#============================================================================

#============================================================================
# gcc 2.8.x (y superiores):
# -------------------------
# Ver warnings:
CPPFLAGS += -Wall
# Ignorar warnings:
#CPPFLAGS += -w

# Include information for GDB:
#CPPFLAGS += -g



DEFINES_C=


###
### YFR: Add this to find .h files.
###
# If we are compiling for Unix
INCLUDES_CPP=-I/usr/include -I${BASEPATH} -I.


INCLUDES_C=
CFLAGS=
DEBUGFLAGS=
###
### YFR: Add this to find libsimu.a file.
###
LDFLAGS += -L. -L${BASEPATH}  -g 


###
### YFR: Add this to find .o file.
###
EXAMPLESOBJS= \
buffer.o \
warehouse.o \
workstation1.o \
workstation2.o \
prioritizer.o \
sorter.o \
register.o \
main.o \
${BASEPATH}distri.o \
${BASEPATH}com.o \
${BASEPATH}linpack.o \
${BASEPATH}debug.o \

LIBNAME=simu
LIBS=-lsimu
ALLOBJS=${EXAMPLESOBJS} ${SIMOBJS} 



all: simu

libs: libsimu.a

simu: ${ALLOBJS}  libsimu.a
	g++ ${LDFLAGS} -o $@ ${EXAMPLESOBJS} ${LIBS}

###
### YFR: Add a # to avoid creating an "empty" libsimu.a
###
libsimu.a: ${SIMOBJS}
#	${AR} crs lib${LIBNAME}.a ${SIMOBJS}

########################
# Without Optimization

############ User objects

buffer.o: buffer.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

warehouse.o: warehouse.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

workstation1.o: workstation1.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

workstation2.o: workstation2.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

prioritizer.o: prioritizer.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

sorter.o: sorter.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

register.o: register.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

############# Simulator main objects

main.o: ${BASEPATH}main.cpp
	${CPP} -c ${INCLUDES_CPP} ${DEFINES_CPP} ${DEBUGFLAGS} ${CPPFLAGS} $<

