CC = gcc
AS = as
CFLAGS = -O -std=gnu11 -Wall -Wextra -Wno-unused-parameter
LFLAGS =  -lrt -lm 


all: example freq strcat_test

example: example.c perf.h perf.o
	$(CC) $(CFLAGS) -o example example.c perf.o $(LFLAGS)

freq: freq.c perf.h func_time.h perf.o func_time.o
	$(CC) $(CFLAGS) -o freq freq.c perf.o func_time.o $(LFLAGS)

cachemiss: perf.h perf.o func_time.h func_time.o
	$(CC) $(CFLAGS) -o cachemiss cachemiss.c perf.o func_time.o $(LFLAGS)

perf.o: perf.c perf.h
	$(CC) $(CFLAGS) -c perf.c

func_time.o: func_time.c func_time.h
	$(CC) $(CFLAGS) -c func_time.c

strcat_test: strcat_test.c strcat_naive.c strcat_naive.h perf.o func_time.o
	$(CC) $(CFLAGS) -o strcat_test strcat_test.c strcat_naive.c perf.o func_time.o

submit:
	tar czf submission.tar.gz writeup.* func_time.c cachemiss.c strcat-x64.dis strcat-x64-annotated.dis pintool/

clean:
	rm -f *.o example freq example cachemiss strcat_test *~

