##
## Makefile for Postage Stamp Software
##
##      Version 1.0 20110201 Masayuki Akiyama
##

PACKAGE = SPECVIEW

PROG1 = spec_view
PROG2 = spec_ext
PROG3 = spec_spfit_HA
PROG4 = spec_spfit_HB

SRCS = file_count_data.c file_read_obj.c file_read_line2.c file_read_line.c \
	fits_read_size.c fits_read_subarray.c \
        extract1d.c noiselevel.c draw_spec.c totalflux.c percentile.c \
	draw_chart.c print_help.c sigclip.c average.c mode.c \
        spec_median.c calc_median.c fits_read_head.c put_lines.c 
  
HEADS = spec_view.h cpgplot.h

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

FILES = Makefile $(SRCS) $(HEADS) $(PROG1).c $(PROG2).c $(PROG3).c $(PROG4).c README format_tbl.awk

VER = `date +%Y%m%d`

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

# uncomment in Solaris
# LIBSOL = -lnsl -lsocket

# PGPLOT
#LIBCPGPLOT = /opt/share/lib/libcpgplot.a
#LIBPGPLOT = /opt/share/lib/libpgplot.a
LIBCPGPLOT = /usr/local/pgplot/libcpgplot.a
LIBPGPLOT = /usr/local/pgplot/libpgplot.a
# WCSTOOLS
LIBWCSTOOLS = /usr/local/lib/libwcs.a

# common (*.o)
LD  = gfortran
LDFLAGS = $(DEBUG) 
LDLIBS  = -lm -lcfitsio -lX11 $(LIBCPGPLOT) $(LIBPGPLOT) $(LIBWCSTOOLS) $(LIBSOL)

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

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

### rules ###

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

all: $(PROG1) $(PROG2) $(PROG3) $(PROG4) $(PROG5) $(PROG6) $(PROG7)

$(PROG1): $(OBJS) $(PROG1).o
	$(LD) $(LDFLAGS) $(PROG1).o $(OBJS) -o $@ $(LDLIBS)
$(PROG1).o: $(HEADS) Makefile

$(PROG2): $(OBJS) $(PROG2).o
	$(LD) $(LDFLAGS) $(PROG2).o $(OBJS) -o $@ $(LDLIBS)
$(PROG2).o: $(HEADS) Makefile

$(PROG3): $(OBJS) $(PROG3).o
	$(LD) $(LDFLAGS) $(PROG3).o $(OBJS) -o $@ $(LDLIBS)
$(PROG3).o: $(HEADS) Makefile

$(PROG4): $(OBJS) $(PROG4).o
	$(LD) $(LDFLAGS) $(PROG4).o $(OBJS) -o $@ $(LDLIBS)
$(PROG4).o: $(HEADS) Makefile

$(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
	@$(RM) -r `cat .package`
	@mkdir `cat .package`
	@ln $(FILES) `cat .package`
	tar cvf - `cat .package` | gzip -9 > `cat .package`.tar.gz
	@$(RM) -r `cat .package` .package

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

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

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