TARGETS	= $(OBJDIR)debug$(SOEXT) $(OBJDIR)hayes$(SOEXT) $(OBJDIR)osmocom$(SOEXT) $(OBJDIR)template$(SOEXT)
OBJDIR	=
PREFIX	= /usr/local
DESTDIR	=
LIBDIR	= $(PREFIX)/lib
CC	= cc
CPPFLAGSF= -I ../../include
CPPFLAGS=
CFLAGSF	= `pkg-config --cflags glib-2.0` -fPIC
CFLAGS	= -W -Wall -g -O2 -D_FORTIFY_SOURCE=2 -fstack-protector-all
LDFLAGSF= `pkg-config --libs glib-2.0`
LDFLAGS	= -Wl,-z,relro -Wl,-z,now
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
INCLUDEDIR= $(PREFIX)/include


all: $(OBJDIR)debug$(SOEXT) $(OBJDIR)hayes$(SOEXT) $(OBJDIR)template$(SOEXT)

debug_OBJS = $(OBJDIR)debug.o
debug_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags gtk+-3.0 libSystem`
debug_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs gtk+-3.0 libSystem`

$(OBJDIR)debug$(SOEXT): $(debug_OBJS)
	$(CCSHARED) -o $(OBJDIR)debug$(SOEXT) $(debug_OBJS) $(debug_LDFLAGS)

hayes_OBJS = $(OBJDIR)hayes/channel.o $(OBJDIR)hayes/command.o $(OBJDIR)hayes/common.o $(OBJDIR)hayes/pdu.o $(OBJDIR)hayes/quirks.o $(OBJDIR)hayes.o
hayes_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem`
hayes_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem`

$(OBJDIR)hayes$(SOEXT): $(hayes_OBJS)
	$(CCSHARED) -o $(OBJDIR)hayes$(SOEXT) $(hayes_OBJS) $(hayes_LDFLAGS)

osmocom_OBJS = $(OBJDIR)osmocom.o
osmocom_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS)
osmocom_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -losmocore

$(OBJDIR)osmocom$(SOEXT): $(osmocom_OBJS)
	$(CCSHARED) -o $(OBJDIR)osmocom$(SOEXT) $(osmocom_OBJS) $(osmocom_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)debug.o: debug.c ../../config.h
	$(CC) $(debug_CFLAGS) -o $(OBJDIR)debug.o -c debug.c

$(OBJDIR)hayes/channel.o: hayes/channel.c hayes/channel.h hayes/command.h
	@[ -d "$(OBJDIR)hayes" ] || $(MKDIR) -- "$(OBJDIR)hayes"
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes/channel.o -c hayes/channel.c

$(OBJDIR)hayes/command.o: hayes/command.c hayes/channel.h hayes/command.h
	@[ -d "$(OBJDIR)hayes" ] || $(MKDIR) -- "$(OBJDIR)hayes"
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes/command.o -c hayes/command.c

$(OBJDIR)hayes/common.o: hayes/common.c
	@[ -d "$(OBJDIR)hayes" ] || $(MKDIR) -- "$(OBJDIR)hayes"
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes/common.o -c hayes/common.c

$(OBJDIR)hayes/pdu.o: hayes/pdu.c
	@[ -d "$(OBJDIR)hayes" ] || $(MKDIR) -- "$(OBJDIR)hayes"
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes/pdu.o -c hayes/pdu.c

$(OBJDIR)hayes/quirks.o: hayes/quirks.c hayes/quirks.h
	@[ -d "$(OBJDIR)hayes" ] || $(MKDIR) -- "$(OBJDIR)hayes"
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes/quirks.o -c hayes/quirks.c

$(OBJDIR)hayes.o: hayes.c hayes/channel.h hayes/command.h hayes/common.h hayes/pdu.h hayes/quirks.h hayes.h
	$(CC) $(hayes_CFLAGS) -o $(OBJDIR)hayes.o -c hayes.c

$(OBJDIR)osmocom.o: osmocom.c
	$(CC) $(osmocom_CFLAGS) -o $(OBJDIR)osmocom.o -c osmocom.c

$(OBJDIR)template.o: template.c
	$(CC) $(template_CFLAGS) -o $(OBJDIR)template.o -c template.c

clean:
	$(RM) -- $(debug_OBJS) $(hayes_OBJS) $(osmocom_OBJS) $(template_OBJS)

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

install: all
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/modem
	$(INSTALL) -m 0755 $(OBJDIR)debug$(SOEXT) $(DESTDIR)$(LIBDIR)/Phone/modem/debug$(SOEXT)
	$(MKDIR) $(DESTDIR)$(LIBDIR)/Phone/modem
	$(INSTALL) -m 0755 $(OBJDIR)hayes$(SOEXT) $(DESTDIR)$(LIBDIR)/Phone/modem/hayes$(SOEXT)
	$(MKDIR) $(DESTDIR)$(INCLUDEDIR)/Desktop/Phone/modems
	$(INSTALL) -m 0644 hayes.h $(DESTDIR)$(INCLUDEDIR)/Desktop/Phone/modems/hayes.h

uninstall:
	$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/modem/debug$(SOEXT)
	$(RM) -- $(DESTDIR)$(LIBDIR)/Phone/modem/hayes$(SOEXT)
	$(RM) -- $(DESTDIR)$(INCLUDEDIR)/Desktop/Phone/modems/hayes.h

.PHONY: all clean distclean install uninstall
