CC = gcc
PROG = sws
OBJS = main.o sws.o utils.o logging.o header.o cgi.o response.o

CFLAGS = -g -fsanitize=leak -Wall -Werror -Wextra -Wformat=2 -Wjump-misses-init -Wlogical-op -Wpedantic -Wshadow
# Based off of code provided by Professor Jan Schaumann
IFLAGS = `uname -s | grep -q SunOS && echo -I/opt/magic/include`
CFLAGS += ${IFLAGS}

# Based off of code provided by Professor Jan Schaumann
# Includes dynamic linker for magic lib - See Week 11, Segment 3: 24:08
LDFLAGS = `((uname -s | grep -q SunOS) && echo -lsocket -lnsl -L/opt/magic/lib -lmagic -Wl,-rpath,/opt/magic/lib) || echo -lmagic`

all: ${PROG}

${PROG}: ${OBJS}
	@echo CFLAGS = ${CFLAGS}
	@echo LDFLAGS = ${LDFLAGS}
	${CC} ${OBJS} -o ${PROG} ${LDFLAGS}

main.o: main.c
	${CC} ${CFLAGS} -c main.c

sws.o: sws.c
	${CC} ${CFLAGS} -c sws.c

utils.o: utils.c
	${CC} ${CFLAGS} -c utils.c

logging.o: logging.c
	${CC} ${CFLAGS} -c logging.c

header.o: header.c
	${CC} ${CFLAGS} -c header.c

cgi.o: cgi.c
	${CC} ${CFLAGS} -c cgi.c

response.o: response.c
	${CC} ${CFLAGS} -c response.c



format:
	clang-format --style=file -i -- *.h *.c

clean:
	rm -f ${PROG} ${OBJS}