#%DEPENDS = iostream_extension

CXX = ../../bin/g++w
MAKE_ARCHIVE = ../../bin/make-archive
RM  = rm

INCLUDES = -I../iostream_extension/include

CXXFLAGS = -g $(CCXXOPTFLAGS) $(CXXOPTFLAGS) \
	      $(INCLUDES) \
	      $(CCXXADDITIONALFLAGS) $(CXXADDITIONALFLAGS)

LDFLAGS = $(LDADDITIONALFLAGS)

OBJS = base64_encoder.o base64_decoder.o base64_table.o

all: library command

library: libbase64_converter.a

libbase64_converter.a: $(OBJS)
	$(MAKE_ARCHIVE) libbase64_converter.a $(OBJS)

library-lean:
	$(RM) -f *.o

command: base64-converter-encoder base64-converter-decoder

base64-converter-test: base64-converter-test.o libbase64_converter.a
	$(CXX) -o base64-converter-test base64-converter-test.o $(CXXFLAGS) \
		-L. -lbase64_converter $(LDFLAGS)

base64-converter-encoder: base64-converter-encoder.o libbase64_converter.a
	$(CXX) -o base64-converter-encoder base64-converter-encoder.o \
		 $(CXXFLAGS) -L. -lbase64_converter $(LDFLAGS)

base64-converter-decoder: base64-converter-decoder.o libbase64_converter.a
	$(CXX) -o base64-converter-decoder base64-converter-decoder.o \
		 $(CXXFLAGS) -L. -lbase64_converter $(LDFLAGS)

check: base64-converter-test
	./base64-converter-test

clean:
	$(RM) -f *.o base64-converter-test \
		     base64-converter-encoder base64-converter-decoder \
		     libbase64_converter.a

.PHONY: all library library-lean check clean


##
base64-converter-test.o: base64-converter-test.cc \
			 base64_encoder.h base64_decoder.h \
			 base64_table.h

base64-converter-encoder.o: base64-converter-encoder.cc \
			    base64_encoder.h base64_table.h

base64-converter-decoder.o: base64-converter-decoder.cc \
			    base64_decoder.h base64_table.h

base64_encoder.o: base64_encoder.cc base64_encoder.h \
		  base64_table.h

base64_decoder.o: base64_decoder.cc base64_decoder.h \
		  base64_table.h

base64_table.o: base64_table.cc base64_table.h
