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

###############################
O = .o
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 += -DGRBATCH
INCLUDES = $(GRINCLUDES)
LIBS = $(GRLIBS)
else
ACEGR = xmgr
CFLAGS += -DMOTIF

ifeq "$(USE_EDITRES)" "yes" 
CFLAGS += -DEDITRES
MISCLIBS += $(EDITRESLIB)
endif

ifeq "$(USE_XBAE)" "yes" 
CFLAGS += -DHAS_XBAE $(XBAE_INCLUDES)
MISCLIBS_SHARED = $(XBAE_LIBS_SHARED)
MISCLIBS_SEMI = $(XBAE_LIBS_SEMI)
endif

ifeq "$(USE_LIBHELP)" "yes" 
CFLAGS += -DLIBHELP $(XBAE_INCLUDES)
MISCLIBS += $(LIBHLPCLIENT)
endif

endif

ACEGR_SEMI=$(ACEGR).semistatic
ACEGR_STATIC=$(ACEGR).static

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)

include Make.common

all: $(ACEGR)

xmgr: $(GROBJS) $(GUIOBJS)
	$(CC) $(CFLAGS) $(GROBJS)  $(GUIOBJS) -o xmgr \
	$(MISCLIBS_SHARED) $(LIBS_MOTIF_SHARED) $(MISCLIBS) $(LIBS)

xmgr.semistatic: $(GROBJS) $(GUIOBJS) $(LIBS_MOTIF_SEMI) $(MISCLIBS_SEMI)
	$(CC) $(CFLAGS) $(GROBJS)  $(GUIOBJS) -o xmgr.semistatic \
	 $(MISCLIBS_SEMI) $(LIBS_MOTIF_SEMI) $(MISCLIBS) $(LIBS)

xmgr.static: $(GROBJS) $(GUIOBJS)
	$(CC) $(CFLAGS) $(GROBJS)  $(GUIOBJS) -o xmgr.static -static \
	$(MISCLIBS_SHARED) $(LIBS_MOTIF_SHARED) $(MISCLIBS) $(LIBS)

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


as274c.o: as274c.h
binio.o: defines.h globals.h
blockwin.o: globals.h motifinc.h
checkon.o: globals.h
chersh.o: hersh.h
compute.o: globals.h
computils.o: symdefs.h globals.h
compwin.o: globals.h motifinc.h
comwin.o: globals.h motifinc.h
defaults.o: globals.h
draw.o: symdefs.h draw.h externs.h symfunc.h
drawticks.o: globals.h externs.h
drawwin.o: globals.h motifinc.h
eblockwin.o: globals.h motifinc.h
editpwin.o: globals.h motifinc.h $(TOP)/Make.conf
events.o: globals.h draw.h motifinc.h
files.o: globals.h
fileswin.o: globals.h motifinc.h
fit.o: defines.h
framewin.o: globals.h motifinc.h
getparms.o: globals.h
graphu1.o: globals.h draw.h
graphu2.o: globals.h
graphwin.o: globals.h motifinc.h
helpwin.o: globals.h
hotwin.o: globals.h motifinc.h
hp.o: externs.h 
labelwin.o: globals.h motifinc.h
leaf.o: externs.h 
lmdif1.o: globals.h f2c.h
locatewin.o: globals.h motifinc.h
main.o: globals.h patchlevel.h $(TOP)/Make.conf
mif.o: externs.h 
misc.o: globals.h
miscwin.o: globals.h motifinc.h
monwin.o: globals.h motifinc.h
motifutils.o: defines.h globals.h motifinc.h
nonlwin.o: globals.h motifinc.h
objutils.o: globals.h
pagewin.o: globals.h motifinc.h
params.o: globals.h
pars.o: globals.h
plotone.o: globals.h symdefs.h draw.h
printwin.o: globals.h motifinc.h 
ps.o: externs.h defines.h patterns.h globals.h symfunc.h ps.h
psbb.o: globals.h symdefs.h externs.h defines.h ps.h
ptswin.o: globals.h motifinc.h
regionutils.o: globals.h
regionwin.o: globals.h motifinc.h
rotated.o: rotated.h
setprops.o: globals.h
setutils.o: globals.h $(TOP)/Make.conf
setwin.o: globals.h motifinc.h
statuswin.o: patchlevel.h globals.h motifinc.h
strwin.o: globals.h draw.h motifinc.h
symfunc.o: draw.h symfunc.h
symwin.o: globals.h motifinc.h
tickwin.o: globals.h motifinc.h
worldwin.o: globals.h motifinc.h
xmgr.o: globals.h motifinc.h bitmaps.h $(TOP)/Make.conf
xvlib.o: externs.h patterns.h rotated.h
globals.h: pars.h

pars.h: pars.c
	
pars.c: pars.yacc
	yacc -dt pars.yacc
	mv y.tab.c pars.c
	mv y.tab.h pars.h

clean: 
	rm -f $(GROBJS) $(GUIOBJS)

distclean: 
	rm -f $(ACEGR) $(ACEGR_SEMI) $(ACEGR_STATIC) $(GROBJS) $(GUIOBJS) \
	tags *.orig *.*gr .gdb_history

tags: $(GRSRCS) $(GUISRCS)
	ctags $(GRSRCS) $(GUISRCS)
	
lint:
	lint  $(GRINCS) $(GUIINCS) $(GRSRCS) $(GUISRCS)

rcs: Makefile README pars.yacc $(GRINCS) $(GUIINCS) $(GRSRCS) $(GUISRCS)
	ci -l $?
	touch rcs
