CC     = gcc
CFLAGS = -O2 -fomit-frame-pointer -fPIC -D_REENTRANT
PREFIX = /
LIBDIR = /usr/lib
HDRDIR = /usr/include
LDESTDIR = $(PREFIX)/$(LIBDIR)
IDESTDIR = $(PREFIX)/$(HDRDIR)
SRCDIR   = .

MAJOR_VER = 1
MINOR_VER = 3.1
VERSION   = $(MAJOR_VER).$(MINOR_VER)

LIBBASE = libvga libvgagl
LIBS = $(addsuffix .so.$(VERSION),$(LIBBASE))

HEADERS = vga.h vgagl.h vgamouse.h vgakeyboard.h vgajoystick.h

all: $(LIBS)

libvga.so.$(VERSION): vga.o
	$(CC) -s -shared -Wl,-soname,libvga.so.$(MAJOR_VER) \
	  -o libvga.so.$(VERSION) $^ -lc

libvgagl.so.$(VERSION): vgagl.o
	$(CC) -s -shared -Wl,-soname,libvgagl.so.$(MAJOR_VER) \
	  -o libvgagl.so.$(VERSION) $^ -lc

vga.o: $(SRCDIR)/vga.c
	$(CC) $(CFLAGS) -o $@ -c $<

vgagl.o: $(SRCDIR)/vgagl.c
	$(CC) $(CFLAGS) -o $@ -c $<

install: install-libs install-headers

install-libs: $(LIBS)
	for lib in $(LIBBASE); do \
		install -d $(LDESTDIR); \
		install -m644 -o root -g root $$lib.so.$(VERSION) $(LDESTDIR); \
        strip --strip-unneeded $(LDESTDIR)/$$lib.so.$(VERSION); \
		ln -s $$lib.so.$(VERSION) $(LDESTDIR)/$$lib.so.$(MAJOR_VER); \
		ln -s $$lib.so.$(VERSION) $(LDESTDIR)/$$lib.so; \
	done

install-headers:
	for f in $(HEADERS); do \
		install -d $(IDESTDIR); \
		install -m644 -o root -g root $$f $(IDESTDIR); \
	done

clean:
	rm -f *.o lib*.so*
