include ../../../Configure

HOME    =       $(ROOT)/src/opihi.v2
BIN     =       $(HOME)/bin
LIB     =       $(HOME)/lib
INC     =       $(HOME)/include
MDIR    =       $(HOME)/misc
SDIR    =       $(HOME)/lib.shell
#
DESTBIN =       $(LBIN)
DESTLIB =       $(LLIB)
DESTINC =       $(LINC)
DESTMAN =       $(LMAN)
HELP    =       $(HOME)/help
#  
INCS    =       -I$(INC) -I$(LINC) -I$(XINC)
LFLAGS  =       -L$(LLIB) -L$(LIB)
LIBS    =       -lFITS -lsocket -lnsl -lreadline -ltermcap -lohana -lm
CFLAGS  =       $(INCS)
CCFLAGS =       $(LIBS) 

# opihi shell functions (libopihi) ########################

shell = \
$(SDIR)/ConfigInit.$(ARCH).o		\
$(SDIR)/ListOps.$(ARCH).o	   	\
$(SDIR)/command.$(ARCH).o               \
$(SDIR)/CommandOps.$(ARCH).o		\
$(SDIR)/errors.$(ARCH).o		\
$(SDIR)/expand_vars.$(ARCH).o           \
$(SDIR)/expand_vectors.$(ARCH).o        \
$(SDIR)/exec_loop.$(ARCH).o             \
$(SDIR)/interrupt.$(ARCH).o	        \
$(SDIR)/MacroOps.$(ARCH).o		\
$(SDIR)/macro_create.$(ARCH).o          \
$(SDIR)/macro_delete.$(ARCH).o          \
$(SDIR)/macro_edit.$(ARCH).o            \
$(SDIR)/macro_exec.$(ARCH).o            \
$(SDIR)/macro_list.$(ARCH).o            \
$(SDIR)/macro_read.$(ARCH).o            \
$(SDIR)/macro_write.$(ARCH).o		\
$(SDIR)/multicommand.$(ARCH).o          \
$(SDIR)/parse.$(ARCH).o                 \
$(SDIR)/parse_commands.$(ARCH).o	\
$(SDIR)/startup.$(ARCH).o		\
$(SDIR)/string.$(ARCH).o                \
$(SDIR)/timeformat.$(ARCH).o            \
$(SDIR)/BufferOps.$(ARCH).o             \
$(SDIR)/VectorOps.$(ARCH).o             \
$(SDIR)/check_stack.$(ARCH).o           \
$(SDIR)/convert_to_RPN.$(ARCH).o	\
$(SDIR)/evaluate_stack.$(ARCH).o  	\
$(SDIR)/isolate_elements.$(ARCH).o 	\
$(SDIR)/dvomath.$(ARCH).o               \
$(SDIR)/stack_math.$(ARCH).o		\
$(SDIR)/queues.$(ARCH).o		\
$(SDIR)/variable.$(ARCH).o	   	\
$(SDIR)/opihi.$(ARCH).o

libshell:    $(DESTLIB)/libshell.a 

$(LIB)/libshell.$(ARCH).a:   	$(shell)

# dependancy rules for include files ########################
baseinc = $(INC)/external.h $(INC)/shell.h $(INC)/dvomath.h $(INC)/convert.h $(INC)/display.h 

$(shell)   	 : $(INC)/opihi.h $(baseinc)

# utilities #################################################
$(BIN)/%.$(ARCH):
	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
	$(CC) $^ -o $@ $(LFLAGS) $(LIBS)
	@echo "compiled $*"
	@echo ""

$(DESTBIN)/%: $(BIN)/%.$(ARCH) 
	@if [ ! -d $(DESTBIN) ]; then mkdir -p $(DESTBIN); fi
	rm -f $(DESTBIN)/$*
	cp $(BIN)/$*.$(ARCH) $(DESTBIN)/$*
	@echo "installed $*"
	@echo ""

$(LIB)/%.$(ARCH).a:
	@if [ ! -d $(LIB) ]; then mkdir -p $(LIB); fi
	rm -f $@
	ar rcv $@ $^ 
	ranlib $@
	@echo "compiled library $*"
	@echo ""

$(DESTLIB)/%.a: $(LIB)/%.$(ARCH).a
	@if [ ! -d $(DESTLIB) ]; then mkdir -p $(DESTLIB); fi
	@echo ""
	rm -f $@
	cp $^ $@

lib%.clean:
	rm -f $(LIB)/lib$*.$(ARCH).a
	rm -f $($*)
	@echo ""

%.clean:
	rm -f $(BIN)/$*.$(ARCH)
	@echo ""

%.$(ARCH).o : %.c
	$(CC) $(CFLAGS) -c $*.c -o $@

clean:
	rm -f $(BIN)/*.$(ARCH)
	rm -f $(LIB)/*.$(ARCH).a
	rm -f `find . -name "*.o"`
	rm -f `find . -name "*~"`
	rm -f `find . -name "#*"`

dist: clean
	rm -f $(BIN)/*
	rm -f $(LIB)/*
