TARGETS	= $(OBJDIR)pdo$(SOEXT) $(OBJDIR)pgsql$(SOEXT) $(OBJDIR)pgsqlpool$(SOEXT) $(OBJDIR)sqlite2$(SOEXT) $(OBJDIR)sqlite3$(SOEXT) $(OBJDIR)template$(SOEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
LIBDIR	= $(PREFIX)/lib
CC	= cc
CPPFLAGSF= -I ../../include
CPPFLAGS=
CFLAGSF	= -fPIC
CFLAGS	= -W -Wall -g -O2 -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all
EXEEXT	=
AR	= ar
ARFLAGS	= -rc
RANLIB	= ranlib
CCSHARED= $(CC) -shared
SOEXT	= .so
RM	= rm -f
LN	= ln -f
MKDIR	= mkdir -m 0755 -p
INSTALL	= install


all: $(TARGETS)

pdo_OBJS = $(OBJDIR)pdo.o
pdo_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem`
pdo_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem`

$(OBJDIR)pdo$(SOEXT): $(pdo_OBJS)
	$(CCSHARED) -o $(OBJDIR)pdo$(SOEXT) $(pdo_OBJS) $(pdo_LDFLAGS)

pgsql_OBJS = $(OBJDIR)pgsql.o
pgsql_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I `pg_config --includedir` $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem`
pgsql_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem` -L `pg_config --libdir` -Wl,-rpath,`pg_config --libdir` -lpq

$(OBJDIR)pgsql$(SOEXT): $(pgsql_OBJS)
	$(CCSHARED) -o $(OBJDIR)pgsql$(SOEXT) $(pgsql_OBJS) $(pgsql_LDFLAGS)

pgsqlpool_OBJS = $(OBJDIR)pgsqlpool.o
pgsqlpool_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -I `pg_config --includedir` $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem`
pgsqlpool_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem` -L `pg_config --libdir` -Wl,-rpath,`pg_config --libdir` -lpq

$(OBJDIR)pgsqlpool$(SOEXT): $(pgsqlpool_OBJS)
	$(CCSHARED) -o $(OBJDIR)pgsqlpool$(SOEXT) $(pgsqlpool_OBJS) $(pgsqlpool_LDFLAGS)

sqlite2_OBJS = $(OBJDIR)sqlite2.o
sqlite2_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags sqlite libSystem`
sqlite2_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs sqlite libSystem`

$(OBJDIR)sqlite2$(SOEXT): $(sqlite2_OBJS)
	$(CCSHARED) -o $(OBJDIR)sqlite2$(SOEXT) $(sqlite2_OBJS) $(sqlite2_LDFLAGS)

sqlite3_OBJS = $(OBJDIR)sqlite3.o
sqlite3_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags sqlite3 libSystem`
sqlite3_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs sqlite3 libSystem`

$(OBJDIR)sqlite3$(SOEXT): $(sqlite3_OBJS)
	$(CCSHARED) -o $(OBJDIR)sqlite3$(SOEXT) $(sqlite3_OBJS) $(sqlite3_LDFLAGS)

template_OBJS = $(OBJDIR)template.o
template_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem`
template_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem`

$(OBJDIR)template$(SOEXT): $(template_OBJS)
	$(CCSHARED) -o $(OBJDIR)template$(SOEXT) $(template_OBJS) $(template_LDFLAGS)

$(OBJDIR)pdo.o: pdo.c ../../include/Database/database.h ../../config.h
	$(CC) -D PREFIX=\"$(PREFIX)\" $(pdo_CFLAGS) -o $(OBJDIR)pdo.o -c pdo.c

$(OBJDIR)pgsql.o: pgsql.c ../../include/Database/database.h
	$(CC) $(pgsql_CFLAGS) -o $(OBJDIR)pgsql.o -c pgsql.c

$(OBJDIR)pgsqlpool.o: pgsqlpool.c ../../include/Database/database.h pgsql.c
	$(CC) $(pgsqlpool_CFLAGS) -o $(OBJDIR)pgsqlpool.o -c pgsqlpool.c

$(OBJDIR)sqlite2.o: sqlite2.c ../../include/Database/database.h
	$(CC) $(sqlite2_CFLAGS) -o $(OBJDIR)sqlite2.o -c sqlite2.c

$(OBJDIR)sqlite3.o: sqlite3.c ../../include/Database/database.h
	$(CC) $(sqlite3_CFLAGS) -o $(OBJDIR)sqlite3.o -c sqlite3.c

$(OBJDIR)template.o: template.c ../../include/Database/database.h
	$(CC) $(template_CFLAGS) -o $(OBJDIR)template.o -c template.c

clean:
	$(RM) -- $(pdo_OBJS) $(pgsql_OBJS) $(pgsqlpool_OBJS) $(sqlite2_OBJS) $(sqlite3_OBJS) $(template_OBJS)

distclean: clean
	$(RM) -- $(TARGETS)

install: all
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine
	$(INSTALL) -m 0755 $(OBJDIR)pdo$(SOEXT) $(DESTDIR)$(LIBDIR)/Database/engine/pdo$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine
	$(INSTALL) -m 0755 $(OBJDIR)pgsql$(SOEXT) $(DESTDIR)$(LIBDIR)/Database/engine/pgsql$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine
	$(INSTALL) -m 0755 $(OBJDIR)pgsqlpool$(SOEXT) $(DESTDIR)$(LIBDIR)/Database/engine/pgsqlpool$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine
	$(INSTALL) -m 0755 $(OBJDIR)sqlite2$(SOEXT) $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Database/engine
	$(INSTALL) -m 0755 $(OBJDIR)sqlite3$(SOEXT) $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3$(SOEXT)

uninstall:
	$(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/pdo$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/pgsql$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/pgsqlpool$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/sqlite2$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Database/engine/sqlite3$(SOEXT)

.PHONY: all clean distclean install uninstall
