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

BIN	=	$(HOME)/bin
INC	= 	$(HOME)/include
SRC	=	$(HOME)/src
MAN	=	$(HOME)/doc
DESTBIN	=	$(LBIN)
DESTLIB	=	$(LLIB)
DESTINC	=	$(LINC)
DESTMAN	=	$(LMAN)

#  
INCS	= 	-I$(INC) -I$(LINC) -I$(XINC)
LIBS	= 	-L$(LLIB) -lFITS -lohana -lm -lsocket -lnsl
CFLAGS	=	-o $*.$(ARCH).o $(INCS)
CCFLAGS	=	$(INCS) $(LIBS) 

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) $(CCFLAGS)

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 "#*"`

.SUFFIXES: .$(ARCH).o

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


