LIBRARY_NAME=prg4
BUILD_DIR=build
DIST_DIR=dist
cc=gcc
LINK=gcc
CFLAGS=-std=c99 -W -Wall -Werror -pedantic
LDFLAGS=-lpng
EXTRA_FLAG=-g

BINARY=${LIBRARY_NAME}

SRCFILES=$(wildcard src/*.c)
HEADERS=$(wildcard include/${LIBRARY_NAME}/*.h)
OSRCFILES=$(SRCFILES:.c=.o)
OBJECTFILES=$(addprefix ${BUILD_DIR}/, ${OSRCFILES})

#we need to separate the files needed for the binary as they are not needed
#for the library
BINFILES=$(wildcard src/bin/*.c)
BINHEADERS=$(wildcard src/bin/*.h)
OBINFILES=$(BINFILES:.c=.o)
OBJECTBINFILES=$(addprefix ${BUILD_DIR}/, ${OBINFILES})

all: ${BINARY}

clean:
	rm -f ${OBJECTFILES} ${OBJECTBINFILES} ${DIST_DIR}/${BINARY}

cleaner: clean
	rm -rf ${DIST_DIR} ${BUILD_DIR}

${BINARY}: Makefile ${DIST_DIR}/${BINARY}

${DIST_DIR}/${BINARY}: Makefile ${DIST_DIR} ${OBJECTFILES} ${OBJECTBINFILES} ${HEADERS} ${BINHEADERS}
	${LINK} -o ${DIST_DIR}/${BINARY} ${OBJECTFILES} ${OBJECTBINFILES} ${LDFLAGS}

${BUILD_DIR}/%.o: %.c Makefile
	@mkdir -p `echo "$@" | sed "s/\(.*\)\/.*\.o/\1/"`
	${cc} ${CFLAGS} ${OPTIM_FLAGS} ${EXTRA_FLAG} -c -Iinclude -o $@ $<

${DIST_DIR}:
	@mkdir -p ${DIST_DIR}

${BUILD_DIR}:
	@mkdir -p ${BUILD_DIR}


