#  Makefile for skyview

# The macros here are set for generic unix
# For specific systems see files Makefile.dec etc. which override some macros

RANLIB= ranlib

COMMON_CFILES=     skyview.c parse.c header.c\
	    define.c examine.c  help.c screen.c colors.c\
	    flux.c plates.c coordinates.c  paint.c\
	    files.c stest.c cplot.c alias.c\
	    gethist.c fitswrite.c im.c pick.c blocking.c util.c\
	    duplex_pipe.c svclib.c fits_table.c \
	    plateposinv.c platepos.c range.c dispos.c fifo.c table.c version.c
JUP_CFILES= hist_jup.c mapping.c wedge.c\
	    define_jup.c annotate.c keys_jup.c ball.c\
	    resources_jup.c sdump.c jup.c graphics_jup.c
X_CFILES=   graphics_x.c sdump_x.c zoom_x.c hist_x.c define_x.c\
	    xwindows.c keys_x.c resources_x.c annotate_x.c\
	    screen_x.c ClientWin.c mlabel.c movie.c cam2fits.c
GIF_CFILES= xvgifwr.c
AUX_CFILES= replicate.c skyplate.c fitssplit.c
COMMON_OFILES=     skyview.o parse.o header.o\
	    define.o examine.o help.o screen.o colors.o\
	    flux.o plates.o coordinates.o  paint.o\
	    files.o stest.o cplot.o alias.o\
	    gethist.o fitswrite.o im.o pick.o blocking.o util.o\
	    duplex_pipe.o svclib.o fits_table.o \
	    plateposinv.o platepos.o range.o dispos.o fifo.o table.o
JUP_OFILES= hist_jup.o mapping.o wedge.o\
	    define_jup.o annotate.o keys_jup.o ball.o\
	    resources_jup.o sdump.o jup.o graphics_jup.o
X_OFILES=   graphics_x.o sdump_x.o zoom_x.o hist_x.o define_x.o\
	    xwindows.o keys_x.o resources_x.o annotate_x.o\
	    screen_x.o ClientWin.o mlabel.o movie.o cam2fits.o
GIF_OFILES= xvgifwr.o

GIF_HFILES= xv.h
GEN_HFILES= event_types.h fits.h img.h img_jup.h img_x.h \
	job.h parse.h range.h skyview.h fits_table.h data_types.h \
	cam2fits.h cel.h im_proto.h lin.h proj.h svclib.h wcs.h wcstrig.h \
	area.h jpeglib.h jconfig.h jmorecfg.h

BITMAPS= icon_bitmap old_bitmap sicon_bitmap

LINTFLAGS= -xu -DFUNCPROTO
# x flag suppresses a horrible list of X functions

# cflag sets hardware to one of following:
#	OLDJUP  (original J12 on 68000)
#	VAXJUP  (J12 on microvax)
#	SUNJUP  (Sun 3 or 4 cpu with new J12 library)
#
# also set the following:
#	NO_IEEE  (ieee floating point not available - should use _IEEE, but
#		 it's defined in values.h which doesn't exist on microvax.
#	FUNCPROTO  turns on X11 function prototypes
#	_NO_PROTO  turns off function prototypes
CFLAGS=  -g
XVGIF_FLAGS= -DSVR4
#LDOPTIONS= -L /usr/local/lib
LDOPTIONS=
LDFLAGS=

#IMLIB is image access library
IMLIB=  ../../lib/libim.a

#IM_DIR is directory containing sources for image access library
IM_DIR=  ../IM
PAR_DIR= /Imaging/team/bob/libpar

WCS_DIR= ../wcslib
WCSLIB= ../../lib/libwcs_c.a

JBCVT_DIR= ../libjbcvtc
JBCVTLIB = ../../lib/libjbcvtc.a

JPEG_DIR = ../jpeg
JPEG_LIB = ../../lib/libjpeg.a

BINDIR= ../../bin
EXPORTDIR= ../../export/skyview

JUPLIBS=   -ljg -ltermcap  -lm

AEDLIBS=   im.a -lm

SUNLIBS=   im.a par.a -lm -lsuntool -lsunwindow -lpixrect

XLIBS=   -lm -lXt -lX11
# Xt is used for resource collection
EXTRALIBS=

all: skyview.exe replicate skyplate

install: all $(BINDIR)/skyview.exe $(BINDIR)/skyplate $(BINDIR)/replicate \
    $(BINDIR)/fitssplit

$(BINDIR)/skyview.exe: skyview.exe
	if [ ! -d $(BINDIR) ]; then mkdir $(BINDIR); else true ; fi
	rm -f $(BINDIR)/skyview.exe
	cp -p skyview.exe $(BINDIR)
	chmod 775 $(BINDIR)/skyview.exe
$(BINDIR)/skyplate: skyplate
	rm -f $(BINDIR)/skyplate
	cp skyplate $(BINDIR)
	chmod 775 $(BINDIR)/skyplate
$(BINDIR)/replicate: replicate
	rm -f $(BINDIR)/replicate
	cp replicate $(BINDIR)
	chmod 775 $(BINDIR)/replicate
$(BINDIR)/fitssplit: fitssplit
	rm -f $(BINDIR)/fitssplit
	cp fitssplit $(BINDIR)
	chmod 775 $(BINDIR)/fitssplit

export:
	if [ ! -d $(EXPORTDIR) ]; then mkdir $(EXPORTDIR); fi
	rm -f $(EXPORTDIR)/*
	cp -p Makefile* $(COMMON_CFILES) $(X_CFILES) $(EXPORTDIR)
	cp -p $(GEN_HFILES) $(BITMAPS) $(EXPORTDIR)
	cp -p $(AUX_CFILES) $(EXPORTDIR)
#	cp -p xvgifwr.stub $(EXPORTDIR)/xvgifwr.c
	cp -p $(GIF_CFILES) $(GIF_HFILES) $(EXPORTDIR)
	chmod u+w $(EXPORTDIR)/*

#make everything includes Jupiter stuff (s and sd)
everything: s skyview.exe sd\
	gethd puthd replicate\
	swabfits sfits ssplit\
	skyplate

old:
	cp /usr/local/ops/bin/s /usr/local/ops/bin/s.old
	cp /usr/local/ops/bin/skyview /usr/local/ops/bin/skyview.old

s:  $(COMMON_OFILES) $(JUP_OFILES) $(IMLIB)
	(cd $(IM_DIR); make)
	rm -f s
	@echo -n "char version[] = \"S   (Version " > version.c
	@date | tr -d "\12" >> version.c
	@echo ")\";" >> version.c
	$(CC) -c version.c
	$(CC)  $(COMMON_OFILES) $(JUP_OFILES) version.o \
	    $(IMLIB) $(JUPLIBS) -o $@
skyview.exe: $(COMMON_OFILES) $(X_OFILES) $(GIF_OFILES) $(IMLIB) $(WCSLIB) \
	$(JBCVTLIB) $(JPEG_LIB)
	@echo 'char version[] = "make date:' `date` '";' > version.c
	$(CC) $(CFLAGS) -c version.c
	$(CC) $(LDFLAGS) $(COMMON_OFILES) $(X_OFILES) $(GIF_OFILES) version.o \
	    $(IMLIB) $(WCSLIB) $(JBCVTLIB) $(JPEG_LIB)  \
	    $(LDOPTIONS) $(XLIBS)\
	    $(EXTRALIBS) -o $@

$(IMLIB): DO_ALWAYS
	(cd $(IM_DIR); make RANLIB=$(RANLIB) "CFLAGS=$(CFLAGS)" install )
$(WCSLIB): DO_ALWAYS
	(cd $(WCS_DIR); make "CFLAGS=$(CFLAGS)" RANLIB=$(RANLIB) install )
$(JBCVTLIB): DO_ALWAYS
	(cd $(JBCVT_DIR); make "CFLAGS=$(CFLAGS)" RANLIB=$(RANLIB) install )
$(JPEG_LIB): DO_ALWAYS
	(cd $(JPEG_DIR); make "CFLAGS=$(CFLAGS)"; make -f Makefile.rbh RANLIB=$(RANLIB) install )

aed: s.o  parse.o header.o mt.o colors.o \
	help.o screen.o flux.o plates.o coordinates.o\
	mtw.o paint.o files.o appint.o stest.o \
	cplot.o alias.o gethist.o fitswrite.o \
	blocking.o im.o aed.o
	@echo -n "char version[] = \"S   (Version " > version.c
	@date | tr -d "\12" >> version.c
	@echo ")\";" >> version.c
	$(CC) -c version.c
	$(CC) s.o parse.o header.o version.o\
	    mt.o help.o screen.o colors.o\
	    flux.o plates.o coordinates.o mtw.o paint.o\
	    files.o appint.o stest.o cplot.o alias.o\
	    gethist.o fitswrite.o blocking.o \
	    im.o aed.o $(AEDLIBS) -o aed
s.sunview: s.o  parse.o header.o mt.o colors.o \
	help.o screen.o flux.o plates.o coordinates.o\
	mtw.o paint.o files.o appint.o stest.o \
	cplot.o alias.o gethist.o fitswrite.o \
	blocking.o im.o sunview.o
	@echo -n "char version[] = \"S   (Version " > version.c
	@date | tr -d "\12" >> version.c
	@echo ")\";" >> version.c
	$(CC) -c version.c
	$(CC) s.o parse.o header.o version.o\
	    mt.o help.o screen.o colors.o\
	    flux.o plates.o coordinates.o mtw.o paint.o\
	    files.o appint.o stest.o cplot.o alias.o\
	    gethist.o fitswrite.o blocking.o \
	    im.o sunview.o  \
	    $(SUNLIBS) -o s.sunview
sd: sdump.o table.o files.o fitswrite.o sdumpdrv.o parse.o im.o 
	$(CC)  sdump.o table.o files.o fitswrite.o sdumpdrv.o  \
	parse.o im.o  $(IMLIB) $(JUPLIBS) -o $@

aed.o: skyview.h parse.h img.h img_jup.h aed.c
alias.o: skyview.h parse.h alias.c
annotate.o: skyflux.h img.h img_jup.h parse.h annotate.c
annotate_x.o: skyview.h img.h img_x.h parse.h annotate_x.c
blocking.o: skyview.h blocking.c
cam2fits.o: fits_table.h im_proto.h cam2fits.h cam2fits.c
colors.o: skyview.h parse.h colors.c
coordinates.o: wcs.h cel.h proj.h wcstrig.h lin.h skyview.h img.h  \
    parse.h fits.h coordinates.c
cplot.o: im_proto.h svclib.h fits.h skyview.h img.h job.h parse.h \
    cplot.c
define_jup.o: skyflux.h parse.h img.h img_jup.h define_jup.c
define_x.o: skyview.h parse.h img.h img_x.h area.h define_x.c
define.o: skyview.h img.h parse.h area.h define.c
dispos.o: skyview.h parse.h dispos.c
duplex_pipe.o: job.h duplex_pipe.c
examine.o: skyview.h img.h parse.h area.h im_proto.h examine.c
fifo.o: skyview.h img_x.h img.h job.h parse.h fifo.c
files.o: skyview.h im_proto.h img.h fits.h parse.h job.h area.h files.c
fits_table.o: fits_table.h fits_table.c
fitswrite.o: skyview.h fitswrite.c
flux.o: skyview.h im_proto.h img.h flux.c
gethist.o: skyview.h img.h parse.h range.h im_proto.h gethist.c
graphics_jup.o: skyview.h parse.h graphics_jup.c
graphics_x.o: skyview.h parse.h img_x.h area.h graphics_x.c
header.o: skyview.h im_proto.h fits.h parse.h img.h header.c
help.o:	skyview.h parse.h help.c
hist_jup.o: skyview.h hist_jup.c
hist_x.o: skyview.h range.h img_x.h hist_x.c
im.o: skyview.h im_proto.h img.h fits.h im.c
jup.o: skyview.h parse.h img.h img_jup.h jup.c
keys_jup.o: parse.h keys_jup.c
keys_x.o: skyview.h img.h parse.h img_x.h keys_x.c
mapping.o: skyview.h mapping.c
movie.o: skyview.h im_proto.h img.h img_x.h fits_table.h cam2fits.h movie.c
mt.o:  skyview.h fits.h mt.c
mtw.o: skyview.h img.h fits.h mtw.c
paint.o: skyview.h im_proto.h fits.h parse.h img.h range.h paint.c
parse.o: skyview.h parse.h fits.h parse.c
pick.o: skyview.h parse.h img.h pick.c
platepos.o: skyview.h img.h platepos.c
plateposinv.o: skyview.h img.h plateposinv.c
plates.o: skyview.h img.h job.h plates.c
range.o: skyview.h img.h parse.h im_proto.h range.h range.c
resources_jup.o: skyview.h resources_jup.c
resources_x.o: resources_x.c
screen.o: skyview.h parse.h img.h fits.h screen.c
screen_x.o: skyview.h img.h img_x.h screen_x.c
sdump.o: parse.h skyview.h sdump.c
sdump_x.o: img.h parse.h skyview.h img_x.h sdump_x.c
sdumpdrv.o: skyview.h img.h img_jup.h parse.h sdumpdrv.c
skyview.o: skyview.h im_proto.h parse.h job.h skyview.c
stest.o: stest.c
sunview.o: skyview.h parse.h img.h sunview.c
svclib.o: svclib.h svclib.c
table.o: fits_table.h skyview.h parse.h table.c
util.o: fits.h parse.h skyview.h im_proto.h img.h area.h job.h util.c
wedge.o: skyview.h wedge.c
xvgifwr.o: xvgifwr.c xv.h
	$(CC) -c $(CFLAGS) $(XVGIF_FLAGS) xvgifwr.c
xwindows.o: icon_bitmap old_bitmap skyview.h job.h parse.h img.h img_x.h \
    data_types.h xwindows.c
zoom_x.o: skyview.h data_types.h img.h parse.h img_x.h zoom_x.c
gethd: skyview.h gethd.c
	$(CC) gethd.c  -o $@
puthd: skyview.h range.h puthd.o gethist.o
	$(CC) puthd.o gethist.o  -lm -o $@
puthd.o: skyview.h puthd.c
#linback: skyview.h linback.c
#	$(CC) linback.c  -o $@
replicate:  fits_table.o table.o parse.o replicate.o
	$(CC) $(LDFLAGS) fits_table.o table.o replicate.o parse.o  -o $@
replicate.o: skyview.h fits.h parse.h replicate.c
swabfits: skyview.h swabfits.c
	$(CC) $(LDFLAGS) swabfits.c  -o $@
sfits: sfits.c skyview.h
	$(CC) $(LDFLAGS) sfits.c  -o $@
ssplit.o: ssplit.c skyview.h
ssplit: ssplit.o skyview.h fitswrite.o gethist.o
	$(CC) $(LDFLAGS) ssplit.o fitswrite.o gethist.o  -lm -o $@
fitssplit: fitssplit.o
	$(CC) $(LDFLAGS) fitssplit.o $(IMLIB) -lm -o $@
skyplate.o: skyplate.c
skyplate: skyplate.o
	$(CC) $(LDFLAGS) skyplate.o  -o $@

lint:
	lint $(LINTFLAGS) $(COMMON_CFILES) $(X_CFILES) -lm
ctags:
	ctags $(COMMON_CFILES) $(X_CFILES)
clean:
	rm -f skyview replicate skyplate fitssplit skyview.exe
	rm -f *.o
DO_ALWAYS:    
