default: mosastro
help:
	@echo "make options: mosastro (default) mkstandards mkobs warptest"

include ../../Configure

HOME    =       $(ROOT)/src/mosastro
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) -ldvo -lFITS -lohana -lm 
CFLAGS	=	$(INCS)
LFLAGS	=	$(LIBS)

MOS = \
$(SRC)/ConfigInit.$(ARCH).o \
$(SRC)/ConvertMatch.$(ARCH).o \
$(SRC)/FitChips.$(ARCH).o \
$(SRC)/FitGradients.$(ARCH).o \
$(SRC)/GetGradients.$(ARCH).o \
$(SRC)/GetScatter.$(ARCH).o \
$(SRC)/LoadStars.$(ARCH).o \
$(SRC)/SaveResiduals.$(ARCH).o \
$(SRC)/args.$(ARCH).o \
$(SRC)/chips.$(ARCH).o \
$(SRC)/clip.$(ARCH).o \
$(SRC)/dump.$(ARCH).o \
$(SRC)/field.$(ARCH).o \
$(SRC)/fitpoly.$(ARCH).o \
$(SRC)/getgsc.$(ARCH).o \
$(SRC)/getptolemy.$(ARCH).o \
$(SRC)/getstone.$(ARCH).o \
$(SRC)/getusno.$(ARCH).o \
$(SRC)/getusnob.$(ARCH).o \
$(SRC)/greference.$(ARCH).o \
$(SRC)/match.$(ARCH).o \
$(SRC)/mkheader.$(ARCH).o \
$(SRC)/mkmosaic.$(ARCH).o \
$(SRC)/mkpolyterm.$(ARCH).o \
$(SRC)/mosastro.$(ARCH).o \
$(SRC)/output.$(ARCH).o \
$(SRC)/parse_time.$(ARCH).o \
$(SRC)/project.$(ARCH).o \
$(SRC)/rfits.$(ARCH).o \
$(SRC)/rtext.$(ARCH).o \
$(SRC)/sort.$(ARCH).o \
$(SRC)/testcoords.$(ARCH).o \
$(SRC)/transforms.$(ARCH).o \
$(SRC)/wfits.$(ARCH).o \
$(SRC)/wstars.$(ARCH).o

mosastro: $(BIN)/mosastro.$(ARCH)
$(BIN)/mosastro.$(ARCH) : $(MOS)

STD = \
$(SRC)/mkstandards.$(ARCH).o \
$(SRC)/mkheader.$(ARCH).o \
$(SRC)/random.$(ARCH).o \
$(SRC)/wstars.$(ARCH).o \
$(SRC)/wfits.$(ARCH).o

mkstandards: $(BIN)/mkstandards.$(ARCH)
$(BIN)/mkstandards.$(ARCH) : $(STD)

OBS = \
$(SRC)/args_obs.$(ARCH).o \
$(SRC)/mkobs.$(ARCH).o \
$(SRC)/mkheader.$(ARCH).o \
$(SRC)/fakefield.$(ARCH).o \
$(SRC)/greference.$(ARCH).o \
$(SRC)/project.$(ARCH).o \
$(SRC)/transforms.$(ARCH).o \
$(SRC)/dump.$(ARCH).o \
$(SRC)/ConfigInit.$(ARCH).o \
$(SRC)/get2mass.$(ARCH).o \
$(SRC)/getgsc.$(ARCH).o \
$(SRC)/getptolemy.$(ARCH).o \
$(SRC)/getstone.$(ARCH).o \
$(SRC)/gptolemy.$(ARCH).o \
$(SRC)/gregions.$(ARCH).o \
$(SRC)/gcatalog.$(ARCH).o \
$(SRC)/getusno.$(ARCH).o \
$(SRC)/mkpolyterm.$(ARCH).o \
$(SRC)/random.$(ARCH).o \
$(SRC)/wstars.$(ARCH).o

mkobs: $(BIN)/mkobs.$(ARCH)
$(BIN)/mkobs.$(ARCH) : $(OBS)

warptest: $(BIN)/warptest.(ARCH)
$(BIN)/warptest.(ARCH) : $(SRC)/warptest.$(ARCH).o

$(MOS) : $(INC)/mosastro.h
$(OBS) : $(INC)/mosastro.h
$(STD) : $(INC)/mosastro.h

# INSTALL = mosastro mkstandards mkobs
INSTALL = mosastro

# dependancy rules for binary code #########################
.PRECIOUS: %.$(ARCH).o
.PRECIOUS: $(BIN)/%.$(ARCH)

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

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

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

$(INSTALL) $(DEVEL): % : $(BIN)/%.$(ARCH)

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

%.install:
	make $(DESTBIN)/$*

# utilities #################################################

install:
	for i in $(INSTALL); do make $$i.install; done

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