#
# Makefile for the malloc lab driver
#
# Regular compiler
CC = gcc
# Compiler for mm.c
CLANG = clang
# Change this to -O0 (big-Oh, numeral zero) if you need to use a debugger on your code
COPT = -O0
CFLAGS = -Wall -Wextra -Werror $(COPT) -DDRIVER -g -Wno-unused-function -Wno-unused-parameter
LIBS = -lm -lrt

COBJS = memlib.o fcyc.o clock.o stree.o
NOBJS = mdriver.o $(COBJS)
EOBJS = mdriver-sparse.o mm-emulate.o $(COBJS)

MC = ./macro-check.pl
MCHECK = $(MC)

all: mdriver mdriver-2

# Regular driver
mdriver: $(NOBJS) mm-native.o 
	$(CC) $(CFLAGS) -o mdriver $(NOBJS) mm-native.o $(LIBS)

# Regular driver
mdriver-2: $(NOBJS) mm-native-2.o 
	$(CC) $(CFLAGS) -o mdriver-2 $(NOBJS) mm-native-2.o $(LIBS)

mm-native.o: mm.c mm.h memlib.h
	$(CLANG) $(CFLAGS) $(IMPOR) -c mm.c -o mm-native.o

mm-native-2.o: mm-2.c mm.h memlib.h
	$(CLANG) $(CFLAGS) $(IMPOR) -c mm-2.c -o mm-native-2.o

mdriver.o: mdriver.c fcyc.h clock.h memlib.h config.h mm.h stree.h
memlib.o: memlib.c memlib.h
mm.o: mm.c mm.h memlib.h
fcyc.o: fcyc.c fcyc.h
ftimer.o: ftimer.c ftimer.h config.h
clock.o: clock.c clock.h
stree.o: stree.c stree.h

clean:
	rm -f *~ *.o mdriver mdriver-emulate *.bc *.ll stree_test


