TARGETS	= $(OBJDIR)libcpp.a $(OBJDIR)libcpp$(SOEXT).0.0 $(OBJDIR)libcpp$(SOEXT).0 $(OBJDIR)libcpp$(SOEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
LIBDIR	= $(PREFIX)/lib
CC	= cc
CPPFLAGSF= -I../../include
CPPFLAGS=
CFLAGSF	= `pkg-config --cflags libSystem` -fPIC
CFLAGS	= -W -Wall -g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector
LDFLAGSF= `pkg-config --libs libSystem`
LDFLAGS	= 
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)

libcpp_OBJS = $(OBJDIR)cpp.o $(OBJDIR)parser.o $(OBJDIR)scanner.o
libcpp_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
libcpp_LDFLAGS = $(LDFLAGSF) $(LDFLAGS)

$(OBJDIR)libcpp.a: $(libcpp_OBJS)
	$(AR) $(ARFLAGS) $(OBJDIR)libcpp.a $(libcpp_OBJS)
	$(RANLIB) $(OBJDIR)libcpp.a

$(OBJDIR)libcpp$(SOEXT).0.0: $(libcpp_OBJS)
	$(CCSHARED) -o $(OBJDIR)libcpp$(SOEXT).0.0 -Wl,-soname,libcpp$(SOEXT).0 $(libcpp_OBJS) $(libcpp_LDFLAGS)

$(OBJDIR)libcpp$(SOEXT).0: $(OBJDIR)libcpp$(SOEXT).0.0
	$(LN) -s -- libcpp$(SOEXT).0.0 $(OBJDIR)libcpp$(SOEXT).0

$(OBJDIR)libcpp$(SOEXT): $(OBJDIR)libcpp$(SOEXT).0.0
	$(LN) -s -- libcpp$(SOEXT).0.0 $(OBJDIR)libcpp$(SOEXT)

$(OBJDIR)cpp.o: cpp.c common.h ../../include/CPP.h
	$(CC) $(libcpp_CFLAGS) -o $(OBJDIR)cpp.o -c cpp.c

$(OBJDIR)parser.o: parser.c parser.h ../../include/CPP.h
	$(CC) $(libcpp_CFLAGS) -o $(OBJDIR)parser.o -c parser.c

$(OBJDIR)scanner.o: scanner.c common.h ../../include/CPP.h
	$(CC) $(libcpp_CFLAGS) -o $(OBJDIR)scanner.o -c scanner.c

clean:
	$(RM) -- $(libcpp_OBJS)

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

install: all
	$(MKDIR) $(DESTDIR)$(LIBDIR)
	$(INSTALL) -m 0644 $(OBJDIR)libcpp.a $(DESTDIR)$(LIBDIR)/libcpp.a
	$(INSTALL) -m 0755 $(OBJDIR)libcpp$(SOEXT).0.0 $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT).0.0
	$(LN) -s -- libcpp$(SOEXT).0.0 $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT).0
	$(LN) -s -- libcpp$(SOEXT).0.0 $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT)

uninstall:
	$(RM) -- $(DESTDIR)$(LIBDIR)/libcpp.a
	$(RM) -- $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT).0.0
	$(RM) -- $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT).0
	$(RM) -- $(DESTDIR)$(LIBDIR)/libcpp$(SOEXT)

.PHONY: all clean distclean install uninstall
