SHELL          = bash # all scripts run in bash
AR             = ar
RANLIB         = ranlib

SYSNAME        = $(shell uname -s)

TDI_CFLAGS     = -g -DTDI_SERVER
TDI_INCLUDE    = ../include/
TDI_SERVER_OBS = tdi-dlgen.o \
                 smalloc.o \
                 tdi-server.o \
                 tdi-access-y.o \
                 tdi-access-l.o \
                 tdi-access.o \
                 tdi-comm.o \
                 tdi-comm-sm.o 

SRV_LIB_OBJ_DEPS= $(TDI_SERVER_OBS)
SRV_LIB_SRC_DEPS= $(SRV_LIB_OBJ_DEPS:.o=.c)

SHADED_DEF      = tdi-shaded.$(SYSNAME)


install: libTDISrv.a libTDISrv.so
	cp $? ../lib

new:
	make clean
	make install


tdi-server.o: tdi-server.c 

tdi-access.o: tdi-access.c

tdi-access-y.o: tdi-access-y.c

tdi-access-l.o: tdi-access-l.c

tdi-access-l.c: tdi-access.lex 
	flex -o$@ tdi-access.lex

tdi-access-y.c: tdi-access-y.y 
	bison -v -d -o$@ tdi-access-y.y

tdi-dlgen.c: $(SHADED_DEF)
	./tdi-dlgen $(SHADED_DEF)


_libTDISrv.so: $(SRV_LIB_OBJ_DEPS)
	bash -c 'LD_SHLIB_FLAG="-shared";OS_NAME=`uname -s`; if [ $$OS_NAME = "SunOS" ]; then LD_SHLIB_FLAG="-G -z text"; fi; $(LD) -o $@ $$LD_SHLIB_FLAG  $^'

libTDISrv.so:
	make tdi-clean 
	bash -c 'PIC_FLAG="";OS_NAME=`uname -s`; if [ $$OS_NAME = "SunOS" ]; then PIC_FLAG="-fPIC"; fi; make _$@ TDI_CFLAGS="$$PIC_FLAG $(TDI_CFLAGS)"'
	mv _$@ $@

_libTDISrv.a: $(SRV_LIB_OBJ_DEPS)
	$(AR) ru $@ $^
	$(RANLIB) $@

libTDISrv.a: tdi-clean
	make _$@
	mv _$@ $@



tdi-clean:
	@for i in $(TDI_SERVER_OBS) $(TDI_CLIENT_OBS) $(TDI_COMM_OBS) tdi-access-y.c tdi-access-l.c tdi-access-y.h tdi-access-y.output tdi-dlgen.[ch]; do \
	if [ -f $$i ] ;then \
    echo -n "Removing $$i ... "; \
    rm -f $$i  ; \
    echo "done."; \
    fi ;\
	done            

tdi-clean-lib:
	@if [ -f libTDISrv.a ] ;then \
	echo -n "Removing libTDISrv.a ... "; \
	rm -f libTDISrv.a ; \
	echo "done."; \
	fi
	@if [ -f libTDISrv.so ] ;then \
	echo -n "Removing libTDISrv.so ... "; \
	rm -f libTDISrv.so ; \
	echo "done."; \
	fi


clean:
	make tdi-clean-lib
	make tdi-clean
	rm -rf *~ *.o 
	rm -f ../lib/libTDISrv.*

.c.o:
	$(CC) $(TDI_CFLAGS) -I. -I$(TDI_INCLUDE) -c $?











