PREFIX =
CXX = g++
WFLAGS =  -Wall -Wshadow -Wformat-security -Winline -Wpointer-arith -Wcast-align -Wredundant-decls -Werror
CXXFLAGS = -O2 -MD -pedantic -ansi $(GCC_MARCH) $(WFLAGS)
LINK_SHARED_LIBRARY = 1

ifdef LINK_SHARED_LIBRARY
LIB_EXT = so
else
LIB_EXT = a
endif

DEPS = tablegenerator.hpp tablestrategy.hpp
ODIR = obj
_OBJ = tablegenerator.o tablestrategy.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
LIBNAME = libtablegenerator.$(LIB_EXT)

all:		$(LIBNAME)

$(ODIR)/%.o:	%.cpp $(DEPS)
		$(CXX) -c -o $@ $< $(CXXFLAGS)

$(LIBNAME):	$(OBJ)
ifdef LINK_SHARED_LIBRARY
		$(CXX) -shared -Wl,-soname,$(LIBNAME) -o $(LIBNAME) $(OBJ)
else
		ar cru $@ $(OBJ)
		ranlib $@
endif

clean:
		rm -f $(ODIR)/*.d *~ core* $(ODIR)/*.o test *.a *.so

-include *.d

install:	all
		cp $(LIBNAME) $(PREFIX)/lib
		cp *.hpp $(PREFIX)/include
		@make clean

test:		$(ODIR)/test.o $(LIBNAME)
ifdef LINK_SHARED_LIBRARY
		$(CXX) -o $@ $< -L. -ltablegenerator -Wl,-rpath,.
else
		$(CXX) -o $@ $< -L. -ltablegenerator
endif
