#Uncomment to compile under Cygwin
#CYGWIN = 1

#Uncomment to compile under Mac OS X
#MACOSX

VERS = 1
REV = 3
PREFIX =
LDCONFIG = /sbin/ldconfig
WFLAGS =  -Wall -Wshadow -Wformat-security -Wpointer-arith -Wcast-align -Wredundant-decls -Werror -Wconversion -Wwrite-strings -Wextra -Wno-unused-parameter
CXXFLAGS = -O2 -MMD -pedantic -ansi $(GCC_MARCH) $(WFLAGS) -I. -I.. -DTABLEGENERATOR_VERSION=$(VERS)L -DTABLEGENERATOR_REVISION=$(REV)L

ifdef CYGWIN
WFLAGS += -Wno-uninitialized
LIB_EXT = dll
else ifdef MACOSX
LIB_EXT = dylib
else
CXXFLAGS += -fPIC
LIB_EXT = so
endif

EXPORT_HEADERS = tablegenerator.hpp tablestrategy.hpp
ODIR = obj
_OBJ = tablegenerator.o simpletable.o framedtable.o space3table.o shadowtable.o helpers.o htmltable.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
LIBNAME = libtablegenerator.$(LIB_EXT)

all:		$(LIBNAME)

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

$(LIBNAME):	$(OBJ)
ifdef CYGWIN
		$(CXX) -shared -Wl,-soname,$(LIBNAME) -o $(LIBNAME) $^
else ifdef MACOSX
		$(CXX) -shared -dynamiclib -install_name $(LIBNAME) -o $(LIBNAME) $^
else
		$(CXX) -shared -Wl,-soname,$(LIBNAME).$(VERS) -o $(LIBNAME).$(VERS).$(REV) $^
		$(LDCONFIG) -n .
		ln -sf $(LIBNAME).$(VERS) $(LIBNAME)
endif

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

-include $(ODIR)/*.d

install:	all
		cp $(LIBNAME) $(PREFIX)/lib
		cp $(EXPORT_HEADERS) $(PREFIX)/include/tablegenerator

test:		$(ODIR)/test.o $(LIBNAME)
		$(CXX) -o $@ $< -L. -ltablegenerator -Wl,-rpath,. -I.

mos:
		$(MAKE) -f Makefile.MOS