##################################################################
# GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
##################################################################

#################
MAKEFILE      = Makefile
RM            = rm -f
CP            = cp
CXX           = g++
LD            = $(CXX)
COMPFLAGS     = -I.
LDFLAGS       = 
DEPENDFLAGS   = -MM
LIBS          =
#OTHER        = -W -Wall -Wno-deprecated
OTHER         = -W -Wall

ifndef OPT_LEVEL
OPT_LEVEL_FLAG     = -DOPT_LEVEL=-1
EXE_FILE_INDEX	   =
else
OPT_LEVEL_FLAG     = -O$(OPT_LEVEL) -DOPT_LEVEL=$(OPT_LEVEL)
EXE_FILE_INDEX	   = $(OPT_LEVEL)
endif


#################
PERFOMETER_TARGET    = perfo$(EXE_FILE_INDEX).exe

BASIC_PERFO_OBJS = version.o pfmeter.o adapt.o main.o
USER_PERFO_OBJS =	\
			t_access.o \
			t_call.o \
			t_cont.o \
			t_endl.o \
			t_dcast.o \
			t_file.o \
			t_find.o \
			t_for.o \
			t_inher.o \
			t_recurs.o \
			t_string.o \
			t_stub.o \
			tests.o 

DEMO_PERFO_OBJS =	t_demo1.o \
			t_demo2.o 

PERFOMETER_OBJS = $(BASIC_PERFO_OBJS) $(DEMO_PERFO_OBJS) $(USER_PERFO_OBJS)

#################
# Target Rules
#################
.SUFFIXES :
.SUFFIXES : .h .cpp .o
.cpp.o:
	@echo "------------------"
	$(RM) $*.o
#	$(CXX) $(DEPENDFLAGS) $<
	$(CXX) $(COMPFLAGS) $(OPT_LEVEL_FLAG) $(OTHER) -c $<

#################
all:	perfo

help:
	@echo "USAGE : "
	@echo "  TBD"

perfo: 		$(PERFOMETER_TARGET)

#################
$(PERFOMETER_TARGET):	$(PERFOMETER_OBJS) $(LIBS) $(MAKEFILE)
		@echo "=================="
		$(RM) $(PERFOMETER_TARGET)
		$(LD) -o $(PERFOMETER_TARGET) $(LDFLAGS) $(PERFOMETER_OBJS) $(LIBS)
		@echo " "


#################
cleano:	        
	$(RM) $(PERFOMETER_OBJS)
	$(RM) *.ii
	$(RM) *.s
	$(RM) *.o
	$(RM) core
	$(RM) *.exe.*

cleane:
	$(RM) $(PERFOMETER_TARGET)
	$(RM) *.exe

clean:	cleano cleane


#################
adapt.o    : $(MAKEFILE) adapt.cpp adapt.h pfmeter2.h pfmeter.h env.h macro.h user.h \
             common.h version.h
main.o     : $(MAKEFILE) main.cpp adapt.h pfmeter2.h pfmeter.h env.h macro.h user.h \
             common.h version.h
pfmeter.o  : $(MAKEFILE) pfmeter.cpp pfmeter2.h pfmeter.h env.h macro.h user.h common.h \
             version.h
t_access.o : $(MAKEFILE) t_access.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h \
             macro.h user.h common.h version.h
t_call.o   : $(MAKEFILE) t_call.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_cont.o   : $(MAKEFILE) t_cont.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_dcast.o  : $(MAKEFILE) t_dcast.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_demo1.o  : $(MAKEFILE) t_demo1.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_demo2.o  : $(MAKEFILE) t_demo2.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_endl.o   : $(MAKEFILE) t_endl.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_file.o   : $(MAKEFILE) t_file.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_find.o   : $(MAKEFILE) t_find.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_for.o    : $(MAKEFILE) t_for.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_inher.o  : $(MAKEFILE) t_inher.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
t_recurs.o : $(MAKEFILE) t_recurs.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h \
             macro.h user.h common.h version.h
t_string.o : $(MAKEFILE) t_string.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h \
             macro.h user.h common.h version.h
t_stub.o   : $(MAKEFILE) t_stub.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
tests.o    : $(MAKEFILE) tests.cpp tests.h adapt.h pfmeter2.h pfmeter.h env.h macro.h \
             user.h common.h version.h
version.o  : $(MAKEFILE) version.cpp version.h

