#####################################################
# Makefile for XMGR4                                #
#####################################################
# You should not change anything here.              #
# Please read INSTALL file in the upper directory   #
#####################################################

###############################
#
TOP = ..
###############################

include $(TOP)/Make.arch

include $(TOP)/Make.conf

ifeq "$(USE_DEBUG)" "yes"
CFLAGS += $(DEBUG)
else
CFLAGS += $(OPTIMIZE)
endif

CFLAGS += $(INCLUDES)

ifeq "$(USE_GUI)" "no"
ACEGR = gr
CFLAGS += -DGR
INCLUDES = $(GRINCLUDES)
LIBS = $(GRLIBS)
else
ACEGR = xmgr
CFLAGS += -DMOTIF
endif

ifeq "$(USE_XBAE)" "yes" 
CFLAGS += -DHAS_XBAE $(XBAE_INCLUDES)
MISCLIBS += $(XBAE_LIBS)
endif

ifeq "$(USE_NETCDF)" "yes" 
CFLAGS += -DHAVE_NETCDF $(NETCDFINCLUDES)
MISCLIBS += $(NETCDFLIBS)
endif

ifeq "$(USE_MFHDF)" "yes" 
CFLAGS += -DHAVE_MFHDF $(MFHDFINCLUDES)
MISCLIBS += $(MFHDFLIBS)
endif

ifeq "$(USE_DRAGnDROP)" "yes" 
CFLAGS += -DDRAGnDROP
endif

ifeq "$(HC_ORIENTATION)" "portrait"
HC_ORIENTATION_FLAG = P
else
HC_ORIENTATION_FLAG = L
endif

ifeq "$(HC_DEVICE)" "mif"
CFLAGS += $(MIF_PRSTR) -DHDEV=GR_MIF_$(HC_ORIENTATION_FLAG)
else
ifeq "$(HC_DEVICE)" "hpgl"
CFLAGS += $(HPGL_PRSTR) -DHDEV=GR_HPGL_$(HC_ORIENTATION_FLAG)
else
ifeq "$(HC_DEVICE)" "leaf"
CFLAGS += $(LEAF_PRSTR) -DHDEV=GR_LEAF_$(HC_ORIENTATION_FLAG)
else
CFLAGS += $(PS_PRSTR) -DHDEV=GR_PS_$(HC_ORIENTATION_FLAG)
endif
endif
endif

CFLAGS += $(MAXDIST)

CFLAGS += -DGR_HOME='"$(XMGRDIR)"' $(HELPVIEWER)

# pars.c is now built outside this Makefile
# YFLAGS = -yt

SRCS =  main.c xmgr.c events.c malerts.c fileswin.c blockwin.c\
	eblockwin.c printwin.c drawwin.c comwin.c compwin.c\
	setwin.c hotwin.c ptswin.c editpwin.c regionwin.c\
	statuswin.c symwin.c tickwin.c graphwin.c worldwin.c\
	strwin.c labelwin.c locatewin.c framewin.c pagewin.c\
	monwin.c helpwin.c nonlwin.c miscwin.c stubs.c\
	misc.c plotone.c files.c utils.c drawticks.c\
	lmdif1.c as274c.c fit.c fourier.c io.c\
	binio.c graphu1.c graphu2.c setutils.c setprops.c\
	regionutils.c objutils.c computils.c defaults.c checkon.c\
	params.c getparms.c compute.c xvlib.c rotated.c\
	image_f_io.c draw.c ps.c mif.c leaf.c\
	hp.c chersh.c pars.c motifutils.c psbb.c

OBJS =  main.o xmgr.o events.o malerts.o fileswin.o blockwin.o\
	eblockwin.o printwin.o drawwin.o comwin.o compwin.o\
	setwin.o hotwin.o ptswin.o editpwin.o regionwin.o\
	statuswin.o symwin.o tickwin.o graphwin.o worldwin.o\
	strwin.o labelwin.o locatewin.o framewin.o pagewin.o\
	monwin.o helpwin.o nonlwin.o miscwin.o stubs.o\
	misc.o plotone.o files.o utils.o drawticks.o\
	lmdif1.o as274c.o fit.o fourier.o io.o\
	binio.o graphu1.o graphu2.o setutils.o setprops.o\
	regionutils.o objutils.o computils.o defaults.o checkon.o\
	params.o getparms.o compute.o xvlib.o rotated.o\
	image_f_io.o draw.o ps.o psbb.o mif.o leaf.o\
	hp.o chersh.o pars.o motifutils.o

# The following are for a version that does not link to
# the X libraries.
#
# non-X version sources
#
GRSRCS =  main.c stubs.c misc.c plotone.c files.c utils.c drawticks.c\
	lmdif1.c as274c.c fit.c fourier.c io.c\
	binio.c graphu1.c graphu2.c setutils.c setprops.c\
	regionutils.c objutils.c computils.c defaults.c checkon.c\
	params.c getparms.c compute.c\
	draw.c ps.c mif.c leaf.c\
	hp.c chersh.c pars.c

GROBJS =  main.o stubs.o misc.o plotone.o files.o utils.o drawticks.o\
	lmdif1.o as274c.o fit.o fourier.o io.o\
	binio.o graphu1.o graphu2.o setutils.o setprops.o\
	regionutils.o objutils.o computils.o defaults.o checkon.o\
	params.o getparms.o compute.o\
	draw.o ps.o mif.o leaf.o\
	hp.o chersh.o pars.o

GRINCS = defines.h externs.h globals.h pars.h symdefs.h\
	 noxprotos.h draw.h f2c.h as274c.h patchlevel.h hersh.h\
	 symdef.h special.h

# for printing and making a distribution
#
INCS = defines.h externs.h globals.h motifinc.h pars.h xmgr_icon.h symdefs.h\
	 xprotos.h noxprotos.h draw.h f2c.h as274c.h bitmaps.h patterns.h\
	 patchlevel.h rotated.h
HERSHINCS = hersh.h symdef.h special.h

xmgr: $(OBJS)
	$(CC) $(CFLAGS) $(OBJS) -o xmgr $(MISCLIBS) $(LIBS)

gr: $(GROBJS)
	$(CC) $(CFLAGS) $(GROBJS) -o gr $(MISCLIBS) $(LIBS)

main.o: Makefile defines.h globals.h
xmgr.o: defines.h globals.h
pars.o: pars.c defines.h globals.h
calc.o: defines.h globals.h
compute.o: defines.h globals.h
fit.o: defines.h
files.o: defines.h globals.h
io.o: defines.h

params.o: defines.h globals.h 
getparams.o: defines.h globals.h 

plotone.o: defines.h globals.h symdefs.h
drawticks.o: defines.h globals.h 

utils.o: defines.h globals.h
setutils.o: defines.h globals.h
setprops.o: defines.h globals.h
regionutils.o: defines.h globals.h
graphu1.o: defines.h globals.h
graphu2.o: defines.h globals.h
objutils.o: defines.h globals.h 
stubs.o: defines.h globals.h

checkon.o: defines.h globals.h 

#
# user interface
#
graphwin.o: defines.h globals.h
compwin.o: defines.h globals.h
setwin.o: defines.h globals.h
framewin.o: defines.h globals.h
blockwin.o: defines.h globals.h
eblockwin.o: defines.h globals.h
strwin.o: defines.h globals.h
worldwin.o: defines.h globals.h
symwin.o: defines.h globals.h
ptswin.o: defines.h globals.h
editpwin.o: defines.h globals.h
drawwin.o: defines.h globals.h
statuswin.o: defines.h globals.h patchlevel.h
printwin.o: defines.h globals.h
labelwin.o: defines.h globals.h
locatewin.o: defines.h globals.h
fileswin.o: defines.h globals.h
parmsiowin.o: defines.h globals.h
comwin.o: defines.h globals.h

defaults.o: defines.h globals.h

#
# graphics drivers
#
chersh.o: hersh.h special.h symdef.h
draw.o: symdefs.h
mif.o: externs.h
hp.o: externs.h
ps.o: externs.h
xvlib.o: externs.h

globals.h: pars.h

pars.h:
	yacc -dt pars.y
	/bin/mv y.tab.h pars.h

clean: 
	/bin/rm -f xmgr $(OBJS) tags

tags:
	ctags $(SRCS)
	
lint:
	lint  $(INCLUDES) $(SRCS)

rcs: Makefile Imakefile README patchlevel.h pars.yacc $(SRCS) $(INCS)
	ci -l $?
	touch rcs
