
F01=main
F02=io_exception
F03=image
F04=io_image
F05=lodepng
F06=io_jpeg
F07=io_png
F08=color

BIN=executable

CXX=g++
CXX_FLAGS=-Wall -Wextra -Wformat -Wfloat-equal -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wshadow -Wredundant-decls -Winit-self -Wswitch-default -Wswitch-enum -Wundef -Wlogical-op -Winline

INCLUDE=-Iio_format/ -Iexternal/ -I.

LIBS=-ljpeg

all: ${BIN}

${BIN}: ${F01}.o ${F02}.o ${F03}.o ${F04}.o ${F05}.o ${F06}.o ${F07}.o ${F08}.o
	${CXX} ${F01}.o ${F02}.o ${F03}.o ${F04}.o ${F05}.o ${F06}.o ${F07}.o ${F08}.o -o ${BIN} ${LIBS}

${F01}.o: ${F01}.cpp
	${CXX} -c ${F01}.cpp ${CXX_FLAGS} -o ${F01}.o ${INCLUDE}

${F02}.o: ${F02}.cpp ${F02}.hpp
	${CXX} -c ${F02}.cpp ${CXX_FLAGS} -o ${F02}.o ${INCLUDE}

${F03}.o: ${F03}.cpp ${F03}.hpp
	${CXX} -c ${F03}.cpp ${CXX_FLAGS} -o ${F03}.o ${INCLUDE}

${F04}.o: ${F04}.cpp ${F04}.hpp
	${CXX} -c ${F04}.cpp ${CXX_FLAGS} -o ${F04}.o ${INCLUDE}

${F05}.o: external/${F05}.cpp external/${F05}.h
	${CXX} -c external/${F05}.cpp ${CXX_FLAGS} -o ${F05}.o ${INCLUDE}

${F06}.o: io_format/${F06}.cpp io_format/${F06}.hpp
	${CXX} -c io_format/${F06}.cpp ${CXX_FLAGS} -o ${F06}.o ${INCLUDE}

${F07}.o: io_format/${F07}.cpp io_format/${F07}.hpp
	${CXX} -c io_format/${F07}.cpp ${CXX_FLAGS} -o ${F07}.o ${INCLUDE}

${F08}.o: ${F08}.cpp ${F08}.hpp
	${CXX} -c ${F08}.cpp ${CXX_FLAGS} -o ${F08}.o ${INCLUDE}


clean:
	rm -f *.o executable *~
