include ../../Configure
HOME 	=	$(ROOT)/src/elixir
CONFIG  =	$(ROOT)/config
PROGRAM =	elixir

BIN	=	$(HOME)/bin
LIB	=	$(HOME)/lib
INC	= 	$(HOME)/include
SRC	=	$(HOME)/src
MAN	=	$(HOME)/doc
DESTBIN	=	$(BINDIR)
DESTLIB	=	$(LIBDIR)
DESTINC	=	$(INCDIR)
DESTMAN	=	$(MANDIR)

#  
CFLAGS	=	-I$(INC) -I$(INCDIR) $(INCDIRS)
LFLAGS	=	-L$(LIB) -L$(LIBDIR) $(LIBDIRS) -ldvo -lFITS -lohana $(LIBFLAGS) 

ELIXIR = \
$(SRC)/elixir.$(ARCH).o			$(SRC)/ConfigInit.$(ARCH).o		\
$(SRC)/MachineOps.$(ARCH).o		$(SRC)/FifoOps.$(ARCH).o		\
$(SRC)/QueueOps.$(ARCH).o		$(SRC)/CheckCluster.$(ARCH).o		\
$(SRC)/CheckDepend.$(ARCH).o		$(SRC)/CheckEndingState.$(ARCH).o	\
$(SRC)/CheckMachineStatus.$(ARCH).o	$(SRC)/CheckProcess.$(ARCH).o		\
$(SRC)/InitProcess.$(ARCH).o		$(SRC)/StartMachine.$(ARCH).o		\
$(SRC)/SockScan.$(ARCH).o		$(SRC)/LoadPending.$(ARCH).o		\
$(SRC)/Photcodes.$(ARCH).o		$(SRC)/rconnect.$(ARCH).o		\
$(SRC)/DefineProcesses.$(ARCH).o        $(SRC)/ProcessOps.$(ARCH).o		\
$(SRC)/DumpStatus.$(ARCH).o		$(SRC)/CheckMessages.$(ARCH).o		\
$(SRC)/MsgOps.$(ARCH).o			$(SRC)/LogOpen.$(ARCH).o		\
$(SRC)/ConfigPID.$(ARCH).o		$(SRC)/RemoteOps.$(ARCH).o

default: elixir

$(ELIXIR): $(INC)/controller.h

# dependancy rules for binary code ##########################
$(PROGRAM): $(BIN)/$(PROGRAM).$(ARCH)

$(BIN)/$(PROGRAM).$(ARCH): $(ELIXIR)
	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
	$(CC) $(ELIXIR) -o $(BIN)/$(PROGRAM).$(ARCH) $(LFLAGS)

install: $(DESTBIN)/$(PROGRAM)

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

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

.PRECIOUS: %.$(ARCH).o
.PRECIOUS: $(BIN)/%.$(ARCH)

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