CXX      ?= g++
CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual
LDCONFIG=ldconfig
AR=ar
RANLIB=ranlib

ifndef INSTALLLIBDIR
  INSTALLLIBDIR = /usr/local/lib
endif
ifndef STATIC_DRIVERS
  ALL=libgraphlcd.so
else
  ALL=libgraphlcd.a
endif
VDRDIR = ../../../..

DEFINES += -D_GNU_SOURCE

INCLUDES += -I$(VDRDIR)/include

OBJS = device.o drivers.o fct.o port.o simlcd.o gu140x32f.o gu256x64-372.o gu256x64-3900.o hd61830.o ks0108.o ks0713.o sed1330.o sed1520.o t6963.o framebuffer.o image.o

-include $(VDRDIR)/Make.config
ifdef INCLUDE_SERDISPLIB
DEFINES += -DINCLUDE_SERDISPLIB
INCLUDES += -I/usr/local/include
SERDISPLIB_PATH = /usr/local/lib
SERDISPLIB_OBJS = `$(AR) t $(SERDISPLIB_PATH)/libserdisp.a`
OBJS += serdisp.o
ifndef STATIC_DRIVERS
EXTRA_LIBS += -L$(SERDISPLIB_PATH) -lserdisp
else
EXTRA_OBJS = $(SERDISPLIB_OBJS)
EXTRA_DEPS += splitup_serdisp
endif
endif # INCLUDE_SERDISPLIB

### Implicit rules:

%.o: %.c
	$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<

# Dependencies:

MAKEDEP = g++ -MM -MG
DEPFILE = .dependencies
$(DEPFILE): Makefile
	@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@

-include $(DEPFILE)

### Targets:

all: $(ALL)

libgraphlcd.so: $(OBJS) $(EXTRA_DEPS)
	$(CXX) $(CXXFLAGS) -shared $(OBJS) $(EXTRA_LIBS) -o $@

libgraphlcd.a: $(OBJS) $(EXTRA_DEPS)
	$(AR) rc $@ $(OBJS) $(EXTRA_OBJS)
	$(RANLIB) $@

splitup_serdisp:
	$(AR) x $(SERDISPLIB_PATH)/libserdisp.a

clean:
	@-rm -f $(OBJS) $(SERDISPLIB_OBJS) $(DEPFILE) *.so *.a *.tgz *~

install: all
ifndef STATIC_DRIVERS
	@install -d $(INSTALLLIBDIR)
	@install -m 644 $(ALL) $(INSTALLLIBDIR)/
	$(LDCONFIG)
endif

uninstall:
ifndef STATIC_DRIVERS
	rm -f $(INSTALLLIBDIR)/$(ALL)
	$(LDCONFIG)
endif
