#
# Makefile for libqicvtbl
#

CC                  = gcc
CFLAGS              = -O2 
#CFLAGS              = -g 
SHAREDFLAGS         = -fpic
LD                  = ld
LDSHAREDFLAGS       = -shared
AR                  = ar -r
RANLIB              = ranlib
LN                  = ln -sf
INSTALL             = install

LIBNAME             = libvtblc
PREFIX              = /usr

MAJOR               = 1
MINOR               = 0
REVISION            = 0

SRC                 = vtblc.c
OBJ                 = vtblc.o
DYNOBJ              = dyn/vtblc.o
PROGOBJS            = vtblc-prog.o getsubopt.o

all: static dynamic


$(OBJ): $(SRC) vtblc.h
	$(CC) $(CFLAGS) -c $(SRC) -o $(OBJ)

$(DYNOBJ): dir $(SRC) vtblc.h
	$(CC) $(CFLAGS) $(SHAREDFLAGS) -c $(SRC) -o $(DYNOBJ)

static: $(LIBNAME).a

$(LIBNAME).a: $(OBJ)
	$(AR) $(LIBNAME).a $(OBJ)
	$(RANLIB) $(LIBNAME).a

dynamic: $(LIBNAME).so.$(MAJOR).$(MINOR).$(REVISION)

$(LIBNAME).so.$(MAJOR).$(MINOR).$(REVISION): $(DYNOBJ)
	$(LD) $(LDSHAREDFLAGS) $(DYNOBJ) \
	  -o $(LIBNAME).so.$(MAJOR).$(MINOR).$(REVISION); \

install: all
	$(INSTALL) $(LIBNAME).a $(PREFIX)/lib/$(LIBNAME).a
	$(INSTALL) $(LIBNAME).so.$(MAJOR).$(MINOR).$(REVISION) \
	   $(PREFIX)/lib/
	$(LN) $(LIBNAME).so.$(MAJOR).$(MINOR).$(REVISION) \
	   $(PREFIX)/lib/$(LIBNAME).so.$(MAJOR)
	$(LN) $(LIBNAME).so.$(MAJOR) $(PREFIX)/lib/$(LIBNAME).so
	$(INSTALL) vtblc.h  $(PREFIX)/include
	$(INSTALL) vtblc  $(PREFIX)/bin/lvtblc

dir:
	mkdir -p dyn

vtblc: $(PROGOBJS) vtblc.h $(OBJ)
	cc $(PROGOBJS) -lvtblc -L./ -o vtblc

clean:
	rm -f core *.o dyn/*.o $(LIBNAME).* vtblc-dyn
	rm -rf dyn/


.PHONY: dir static dynamic

