# Makefile
# CSE 333 Lecture 14 code

CXX = g++
CPPFLAGS = -Wall -g -std=c++17
PROGS = listexample mapexample usetoy

# default target builds all executables
all: $(PROGS)

Tracer.o: Tracer.cc Tracer.h
	$(CXX) $(CPPFLAGS) -c $<

# list example
listexample: listexample.o Tracer.o
	$(CXX) $(CPPFLAGS) -o $@ $^

listexample.o: listexample.cc Tracer.h
	$(CXX) $(CPPFLAGS) -c $<

# map example
mapexample: mapexample.o Tracer.o
	$(CXX) $(CPPFLAGS) -o $@ $^

mapexample.o: mapexample.cc Tracer.h
	$(CXX) $(CPPFLAGS) -c $<

# ToyPtr example
usetoy: usetoy.cc ToyPtr.h
	$(CXX) $(CPPFLAGS) -o $@ $<

# animals live-coding
# - not included in PROGS because created in class
animals: animals.cc
	$(CXX) $(CPPFLAGS) -o $@ $<

# phony target - remove generated files and backups
clean:
	rm -f *.o $(PROGS) animals *~