##
## Makefile for FMOS model programs (FIS, add_emline)
##
##      Version 1.0 20030830 Masayuki Akiyama
##

PACKAGE	= FIS

SRCS = $(PACKAGE).c print_usage.c fmos_read_input.c fmos_spec_array.c fmos_spec2cts.c \
		    fmos_trace.c fmos_trace_gauss.c fmos_add_cosmic.c \
			  fmos_add_OH.c fmos_mask_OH.c fmos_add_header.c fmos_add_aschead.c \
		  	fmos_aploss_model.c \
        spec_conv_gauss.c spec_conv_hat.c spec_arith.c spec_integ.c \
        spec_resample.c \
        file_count_data.c file_read_data.c file_read_image.c \
        gauss_rand.c interp2.c interp3.c print_time.c

HEADS	= fmos_model.h

OBJS	= $(SRCS:.c=.o)

SAMP1  = sample/fibre_calib.list sample/fibre_flat.list sample/obj_Em_15_16.list sample/obj_Em_16_16.list \
        sample/obj_QSOz14_H20.list sample/obj_flat_AB20.list sample/obj_flat_AB21.list sample/obj_none.list \
        sample/arcXe.txt sample/HIGH_reduce_log sample/LOW_reduce_log sample/list200 \
        sample/add_fibre_data.awk sample/add_fibre_data.sh \
        sample/obj_QSOz14_H20_cal.fits sample/obj_Em_15_16_cal.fits sample/obj_Em_16_16_cal.fits \
        sample/obj_flat_AB20_cal.fits sample/obj_flat_AB21_cal.fits sample/Em_16

SAMP2  = fibre_calib.list fibre_flat.list obj_Em_15_16.list obj_Em_16_16.list \
        obj_QSOz14_H20.list obj_flat_AB20.list obj_flat_AB21.list obj_none.list \
        arcXe.txt HIGH_reduce_log LOW_reduce_log list200 \
        add_fibre_data.awk add_fibre_data.sh \
        obj_QSOz14_H20_cal.fits obj_Em_15_16_cal.fits obj_Em_16_16_cal.fits \
        obj_flat_AB20_cal.fits obj_flat_AB21_cal.fits Em_16

SAMP3 = SAMPLE1 SAMPLE2 SAMPLE3 SAMPLE4 SAMPLE5 SAMPLE6 SAMPLE7 SAMPLE8 SAMPLE9 \
        SAMPLE11 SAMPLE12 SAMPLE13 SAMPLE14 SAMPLE15 SAMPLE16 SAMPLE17 SAMPLE18 \
        SAMPLE_low.sh SAMPLE_high.sh

TEMP1  = template/obj_none template/obj_QSOz14_H20 template/obj_Em_15_16 template/obj_Em_16_16 \
         template/obj_flat_AB20 template/obj_flat_AB21 template/obj_flat_AB10 template/obj_F0V_J15

TEMP2  = obj_none obj_QSOz14_H20 obj_Em_15_16 obj_Em_16_16 \
         obj_flat_AB20 obj_flat_AB21 obj_flat_AB10 obj_F0V_J15

DATA1  = datafiles/FMOS_effi_high.dat datafiles/FMOS_effi_low.dat datafiles/FMOS_flat_model.fits datafiles/FMOS_mask_model.dat \
        datafiles/FMOSthroughput2.xls datafiles/MK_atm_abs.dat datafiles/MK_sky_cont.dat datafiles/MK_sky_line.dat \
        datafiles/NO_atm_abs.dat datafiles/NO_sky_cont.dat datafiles/NO_sky_line.dat \
        datafiles/arcXe_con.dat datafiles/arcXe_lin.dat 

DATA2  = FMOS_effi_high.dat FMOS_effi_low.dat FMOS_flat_model.fits FMOS_mask_model.dat \
        FMOSthroughput2.xls MK_atm_abs.dat MK_sky_cont.dat MK_sky_line.dat \
        NO_atm_abs.dat NO_sky_cont.dat NO_sky_line.dat \
        arcXe_con.dat arcXe_lin.dat 

FILES	= README README.fitshead Makefile $(HEADS) $(SRCS) $(DATA) $(SAMP3)
VER	= `date +%Y%m%d`

### command and flags ###
# uncomment when debugging
# DEBUG	= -ggdb -pg -lefence

# uncomment in Solaris
# LIBSOL = -lnsl -lsocket

# common (*.o)
LD	= gcc
LDFLAGS	= -g $(DEBUG) $(LIBSOL)
LDLIBS	= -lm -lcfitsio

# C (*.c)
CC	= gcc
CFLAGS	= -g -O2 -Wall $(DEBUG) 
CPPFLAGS= -I.

# etc
SHELL	= /bin/sh
RM	= rm -f
PROF	= gprof

### rules ###

.SUFFIXES:
.SUFFIXES: .o .c .cc .f .p

all: $(PACKAGE)

$(PACKAGE): $(OBJS)
	$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LDLIBS)

$(OBJS): $(HEADS) Makefile

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

### useful commands ###

clean:
	$(RM) $(PACKAGE) $(OBJS)
	$(RM) core gmon.out *~ #*#

tar:
	@echo $(PACKAGE)-$(VER) > .package
	@echo $(PACKAGE)-$(VER)/"sample" > .package2
	@echo $(PACKAGE)-$(VER)/"datafiles" > .package3
	@echo $(PACKAGE)-$(VER)/"template" > .package4
	@$(RM) -r `cat .package`
	@mkdir `cat .package`
	@mkdir `cat .package2`
	@mkdir `cat .package3`
	@mkdir `cat .package4`
	@$(RM) $(SAMP2)
	@$(RM) $(DATA2)
	@$(RM) $(TEMP2)
	@cp $(SAMP1) .
	@cp $(DATA1) .
	@cp $(TEMP1) .
	@ln $(FILES) `cat .package`
	@ln $(SAMP2) `cat .package2`
	@ln $(DATA2) `cat .package3`
	@ln $(TEMP2) `cat .package4`
	tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
	@$(RM) -r `cat .package` .package
	@$(RM) $(SAMP2)
	@$(RM) $(DATA2)
	@$(RM) $(TEMP2)

zip:
	zip -9 $(PACKAGE)-$(VER).zip $(FILES)


prof: run
	$(PROF) $(PACKAGE) | less

run: all
	./$(PACKAGE) < sample-data | less
